Options
chipi(options) is the same as new ChipiConnector(options).
Window registration
Creating aChipiConnector puts a get-starknet wallet object on window.starknet_chipi (id
"chipi") and dispatches a starknet:announceWallet event, again on each
starknet:requestWallets. Code that scans window.starknet* (get-starknet v4,
get-starknet-discovery’s injected scan) then finds Chipi without importing this package.
- Nothing is registered by installing the package, only by creating a connector.
register: falseopts out. It is a no-op during SSR.disconnect()removes the object; the nextconnect()adds a new one.- The connector never writes
window.starknet. It replaces whatever is onwindow.starknet_chipiwhile it is registered, and on removal deletes only its own object.
Passive calls
While no wallet window is open (beforeconnect(), or after the user closed it), the connector
answers these calls itself and does not open the popup. Wallet scanners send them at page load.
Once the window is open, they go to the wallet.
wallet_requestAccounts without silent_mode: true opens the popup, so send it from a click.
Since 0.5.0; before that, these calls tried to open the popup outside a click, which the browser
blocked.
Events
- Account and network changes in the wallet reach the dApp as starknet-react
changeevents ({ account, chainId }). An empty account list (wallet locked or signed out) is adisconnect.
Errors
The connector rejects with anError. Check err.code first, then err.message.
The wallet’s numeric codes are listed in Security model:
113, 114, 115, 116 and 163.
Requests in flight
Each request is posted to the wallet right away and matched to its answer by id. Several can be in flight at once: the connector neither queues nor rejects them. If the wallet page reloads (for example after sign-in) and announces itself again, unanswered requests are sent again with the same id. Serialize prompts in your dApp anyway; Bramble, for one, allows 5 pending prompts per site.Wallet Standard
get-starknet v5 and v6 (@starknet-io/get-starknet-discovery) and other Wallet Standard apps
discover wallets through wallet-standard:register-wallet. Register Chipi once, on the client:
starknet:walletApi, standard:connect, standard:disconnect and
standard:events on chain starknet:0x534e5f4d41494e (mainnet), backed by the same popup.
connect({ silent: true }) never opens the popup. createChipiStandardWallet() returns the
wallet without registering it. Its default name is "Chipi"; the connector’s is
"Connect with Chipi".
How get-starknet-discovery (5.0.0 and 6.0.6, same code) builds its list in createStore():
- Wallet Standard wallets are added whenever they register.
window.starknet*objects are scanned once, whencreateStore()runs, and wrapped as injected wallets. Entries are de-duplicated by name, and a Wallet Standard entry wins.
window.starknet_bramble exists when createStore() runs. And if a page creates both a
ChipiConnector and the Wallet Standard wallet before the store, it lists two Chipi entries
("Chipi" and "Connect with Chipi"): pass register: false to the connector, or give both
the same name.
Compatibility and limits
@starknet-react/core>= 3 (peer), tested against 5.0.3.starknet>= 8.1.2 (peer). The Wallet Standard wallet needs neither.- Starknet mainnet only.
- Popup only (external dApps). An in-app-browser (“parent”) mode is in the transport but not exposed.
Package
✅ Verified against the SDK source on 2026-10-12.
