
Prerequisites
Before integrating wallet connections, ensure you have an existing Para project with the Para Modal set up. If you
haven’t set up Para yet, follow one of our Framework Setup guides like thisReact + Viteguide.
Setting up Cosmos Wallets
Para integrates with leading Cosmos wallets including Keplr and Leap. Our integration leverages a modified fork of the graz React library.1
Install dependencies
Install the required packages alongside your existing Para dependencies:
2
Import components
Import the necessary wallet connectors and chain configurations:
main.tsx
If you encounter type issues with
@getpara/graz/chains
, you’ll need to generate the chain files. You can:- Add a postinstall script to your package.json:
- Or run
npx graz --generate
manually after installation
3
Configure chains
Set up your Cosmos chain configurations with the necessary RPC and REST endpoints. You can extend the existing chain configurations with your custom endpoints:
main.tsx
4
Configure the provider
Similar to the Cosmos and Solana providers, configure the
ParaCosmosProvider
component by wrapping your application content in the ParaCosmosProvider
component. Pass in the required configuration props:main.tsx
For the ParaCosmosProvider wrapping you don’t need to include a QueryClientProvider as the provider already includes
one.
Provider Configuration
The
ParaCosmosProvider
is built on top ofgraz's GrazProviderand supports all of its configuration options.Advanced Provider Pattern
Setting up a dedicated provider component that encapsulates all the necessary providers and modal state management is considered a best practice. This pattern makes it easier to manage the modal state globally and handle session management throughout your application.Creating a Custom Provider
To create a custom provider, you can follow the example below. This provider will manage the modal state and handle chain switching.CosmosProvider.tsx
Server-Side Rendering Considerations
When using Next.js or other SSR frameworks, proper client-side initialization is crucial since web3 functionality relies on browser APIs. There are two main approaches:-
Using the
'use client'
directive in Next.js 13+:- Add the directive at the component level where browser APIs are needed
- Ensures the CosmosProvider component and its dependencies only run on the client
- Maintains better code splitting and page performance
-
Using dynamic imports:
- Lazily loads the provider component
- Automatically handles client-side only code
- Provides fallback options during loading
Configuring the Para Modal
After setting up your providers you need to configure the ParaModal component to display the external wallets and authentication options to your users. You need to pass in theexternalWallets
and authLayout
configuration options
to the ParaModal component to control which of the wallets show in the modal that were specified in the provider
configuration.
Optionally, you can pass the createLinkedEmbeddedForExternalWallets
prop to include full Para authentication for specific wallets.
This will add a signature verification step for these wallets and will setup a full Para account for the user, including creating Para wallets according to your APi key settings.
1
Set the modal props
Modal Props Config
Modal prop options for customizing the Para Modal are included below. For advanced customization options, refer toCustomization Guide.Connection Only Wallets
Connection only external wallets bypass all Para functionality (account creation, user tracking, etc.) when connecting an external wallet. To enable this, set the following option on your Para instance:Since connection only wallets bypass Para, most Para functionality will be unavailable. This includes full Para auth with external wallets, on & off ramping, etc.
Examples
For an example of what the Para External Wallets Modal might look like in your application, check out our live demo:
Modal Designer
View a live demo of the Para External Wallets Modal in action with our Modal Designer.
Next Steps
Now that you have integrated Cosmos wallets into your Para Modal, you can explore more advanced features like signing using the Para SDK with popular libraries likeCosmJS
.