Skip to content
Starknet Start

Wallets

Wallets are used to connect the user's wallet to your dapp. If your dapp requires the user to submit a transaction or sign a message, Starknet Start discovers injected wallets automatically and lets you provide recommended or extra wallets through StarknetConfig.

Connectors

This is an alphabetical list of wallets supported by Starknet Start.

Injected Connector

An injected connector is a wallet that injects itself in the web page. This type of wallets are also known as "browser wallets".

Configure a new injected wallet with the following properties:

  • id (required): unique wallet id, used when injecting the wallet in the web page.
  • name (optional): human friendly name.
  • icon (optional): wallet icons, for both light and dark mode. Icons should be base 64 encoded svg images that developers can use as src properties on an img HTML tag.

Injected

This helper is useful to create a new connector with the provided StarknetWindowObject

import { StarknetInjectedWallet } from "@starknet-io/get-starknet-core";
 
const connector = new StarknetInjectedWallet(window.starknet_myWallet);

Ready Wallet (formerly Argent X)

The Ready Wallet (formerly Argent X) wallet is supported out of the box.

import {  } from "@starknet-io/get-starknet-core/wallets";
 
const  = [];

Braavos

The Braavos wallet is supported out of the box.

import {  } from "@starknet-io/get-starknet-core/wallets";
 
const  = [];

Cartridge Controller

The Cartridge Controller wallet is supported however, you need to install both the @cartridge/connector and @cartridge/controller packages.

The Controller enables seamless use of Session Keys.

pnpm i @cartridge/connector @cartridge/controller
import { ControllerConnector } from "@cartridge/connector";
import { constants } from "starknet";
 
// Without Session Keys
const controller = new ControllerConnector({
  chains: [
    {
      rpcUrl: "https://api.cartridge.gg/x/starknet/sepolia",
    },
    {
      rpcUrl: "https://api.cartridge.gg/x/starknet/mainnet",
    },
  ],
  defaultChainId: constants.StarknetChainId.SN_SEPOLIA,
});
 
const wallets = [controller.asWalletStandard()];
import { ControllerConnector } from "@cartridge/connector";
import { SessionPolicies } from "@cartridge/controller";
import { constants } from "starknet";
 
// Define session policies
const policies: SessionPolicies = {
  contracts: {
    "0x3f96056436be253753351fe689110ced7d53f5db3fd98f13df3f19058311b95": {
      name: "Example Contract",
      description: "Example contract interaction",
      methods: [
        {
          name: "Create",
          description: "Create a new instance",
          entrypoint: "create",
        },
      ],
    },
  },
};
 
// With Session Keys
const controller = new ControllerConnector({
  chains: [
    {
      rpcUrl: "https://api.cartridge.gg/x/starknet/sepolia",
    },
    {
      rpcUrl: "https://api.cartridge.gg/x/starknet/mainnet",
    },
  ],
  defaultChainId: constants.StarknetChainId.SN_SEPOLIA,
  policies,
});
 
const wallets = [controller.asWalletStandard()];