Cosmos Wallets
Learn how to combine the Para Modal with Cosmos wallets.
This guide will walk you through the process of integrating Cosmos Wallets into your Para Modal and Para-enabled application, allowing you to onboard new users and connect with existing users who may already have external wallets like Keplr, Leap and more.
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 this React + Vite guide.
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.
Install dependencies
Install the required packages alongside your existing Para dependencies:
Import components
Import the necessary wallet connectors and chain configurations:
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
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:
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:
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 of
and 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.
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 the externalWallets
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.
Set the modal props
Modal Props Config
Modal prop options for customizing the Para Modal are included below. For advanced customization options, refer to Customization Guide.
Examples
For an example of what the Para External Wallets Modal might look like in your application, check out our live demo:
For an example code implementation using Cosmos Wallets, check out our GitHub repository:
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 like CosmJS
.