Skip to main content

Brave Wallet detection

Compatibility with Phantom

Since Brave Wallet aims to be compatible with Phantom's exposed API, we set window.braveSolana.isPhantom to true. Also window.solana is an alias of window.braveSolana.

No provider until a wallet is created

Starting in Brave 1.95, window.braveSolana (and its window.solana alias) is undefined until the user has created a Brave Wallet, and a site has no way to prompt them to create one. A missing provider therefore means "no wallet created yet", not "not Brave" — see restrictions for providers.

Synchronous detection

const isBraveWallet = window.braveSolana?.isBraveWallet === true
console.log('Brave Wallet: ', isBraveWallet)

Wallet adapter

Brave Wallet has its own BraveWalletAdapter and also compatible with PhantomWalletAdapter. Examples can be found here.

Here is how to add Brave Wallet into example code

diff --git a/packages/starter/example/components/ContextProvider.tsx b/packages/starter/example/components/ContextProvider.tsx
index 8b35f473..28398e46 100644
--- a/packages/starter/example/components/ContextProvider.tsx
+++ b/packages/starter/example/components/ContextProvider.tsx
@@ -6,7 +6,7 @@ import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
import { WalletDialogProvider as MaterialUIWalletDialogProvider } from '@solana/wallet-adapter-material-ui';
import { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react';
import { WalletModalProvider as ReactUIWalletModalProvider } from '@solana/wallet-adapter-react-ui';
-import { FakeWalletAdapter } from '@solana/wallet-adapter-wallets';
+import { BraveWalletAdapter } from '@solana/wallet-adapter-wallets';
import { clusterApiUrl } from '@solana/web3.js';
import { SnackbarProvider, useSnackbar } from 'notistack';
import type { FC, ReactNode } from 'react';
@@ -67,7 +67,7 @@ const WalletContextProvider: FC<{ children: ReactNode }> = ({ children }) => {
* will be compiled into your application, and only the dependencies of wallets that
* your users connect to will be loaded.
*/
- new FakeWalletAdapter(),
+ new BraveWalletAdapter(),
],
[]
);