Creating a Wallet
When a new user logs in, they do not yet have a Web3 wallet by default. You can create a wallet for them by calling thecreateWallet function on the user object.
Currently, we don’t support connecting users’ existing self-custodial wallets. This is coming soon.Right now, we only support embedded wallets, which are generated on behalf of the user by our non-custodial wallet partner. Neither Civic nor your app ever has access to the wallets’ private keys.
Complete examples can be found on Github:
- Vite: with Solana wallet adapter and without Solana wallet adapter
- NextJS with Solana wallet adapter and without Solana wallet adapter
- If you’re using the Solana wallet adapter with NextJS <15.3 and webpack, see this example
The useUser hook and UserContext Object
The useUser hook returns a user context object that provides access to the base library’s user object in the ‘user’ field, and adds some Web3 specific fields. The returned object has different types depending on these cases: If the user has a wallet,userHasWallet type guard.
Using the Wallet
Sending a transaction
Checking the balance
Signing a message
Using the Wallet with the Solana Wallet Adapter
The Civic Auth Web3 SDK uses the Solana Wallet Adapter to expose the embedded wallet to React frontends. This allows you to use familiar hooks such asuseWallet and useConnection to interact with the wallet.
This means that Civic will be available as a choice for your users to connect when using @solana/wallet-adapter-react:

Use with Webpack in NextJSWhen using the Solana Wallet Adapter with Webpack (default in NextJS <15.3), add the following flag in your next.config.ts or next.config.mjs file, passed into the createCIvicAuthPlugin function:
The above shows a minimal React example. Follow the integration steps to set up the CivicAuthProvider according to your framework.

