Bare Workflow
Learn how to integrate the Para SDK with React Native projects.
The Para SDK for React Native allows you to easily integrate secure and scalable wallet functionalities into your mobile applications, utilizing the deviceâs Native Passkeys for secure wallet management. This guide covers the installation, setup, and usage of the Para SDK.
Prerequisites
To use Para, you need an API key. This key authenticates your requests to Para services and is essential for integration.
Donât have an API key yet? Request access to the Developer Portal to create API keys, manage billing, teams, and more.
Dependency Installation
Install the required packages for Para SDK integration:
Project Setup
Platform-Specific Configuration
In order for passkeys to work, you need to set up associated domains in your Xcode project linked to the Para domain.
Set Up Associated Domains
- Open your project in Xcode
- Select your target and go to âSigning & Capabilitiesâ
- Click â+ Capabilityâ and add âAssociated Domainsâ
- Add the following domains:
- webcredentials:app.beta.usecapsule.com
- webcredentials:app.usecapsule.com
For additional information on associated domains, refer to the Apple Developer documentation.
teamId + bundleIdentifier
must be registered with the Para team to set up associated domains. For example, if your Team ID is A1B2C3D4E5
and Bundle Identifier is com.yourdomain.yourapp
, provide A1B2C3D4E5.com.yourdomain.yourapp
to Para. This is required by Apple for passkey security. Note: Allow up to 24 hours for domain propagation.Install CocoaPods for native dependencies:
pod install
after adding new dependencies to your project.In order for passkeys to work, you need to set up associated domains in your Xcode project linked to the Para domain.
Set Up Associated Domains
- Open your project in Xcode
- Select your target and go to âSigning & Capabilitiesâ
- Click â+ Capabilityâ and add âAssociated Domainsâ
- Add the following domains:
- webcredentials:app.beta.usecapsule.com
- webcredentials:app.usecapsule.com
For additional information on associated domains, refer to the Apple Developer documentation.
teamId + bundleIdentifier
must be registered with the Para team to set up associated domains. For example, if your Team ID is A1B2C3D4E5
and Bundle Identifier is com.yourdomain.yourapp
, provide A1B2C3D4E5.com.yourdomain.yourapp
to Para. This is required by Apple for passkey security. Note: Allow up to 24 hours for domain propagation.Install CocoaPods for native dependencies:
pod install
after adding new dependencies to your project.Set Up Digital Asset Links
For Android setup, you need to provide your appâs SHA-256 certificate fingerprint to Para.
com.getpara.example.reactnative
as your package name for immediate testing. This package name is pre-registered and works with the SHA-256 certificate from the default debug.keystore.To get your SHA-256 fingerprint:
- For debug builds:
keytool -list -v -keystore ~/.android/debug.keystore
- For release builds:
keytool -list -v -keystore <your_keystore_path>
Device Requirements
To ensure passkey functionality works correctly:
- Enable biometric or device unlock settings (fingerprint, face unlock, or PIN)
- Sign in to a Google account on the device (required for Google Play Services passkey management)
Configure Metro Bundler
Create or update metro.config.js
in your project root:
Add Para Shim
Import the Para shim as the FIRST import in your applicationâs entry file (typically index.js
):
Using the Para SDK
The Para SDK provides two main authentication methods: email-based and phone-based. Each method supports creating a new user and logging in an existing user. Both flows utilize Native Passkeys for secure and seamless authentication. Follow the steps below to implement these flows in your React Native application.
Beta Testing Credentials In the BETA
Environment, you can use any email ending in @test.getpara.com
(like
dev@test.getpara.com) or US phone numbers (+1) in the format (area code)-555-xxxx
(like (425)-555-1234). Any OTP
code will work for verification with these test credentials. These credentials are for beta testing only. You can
delete test users anytime in the beta developer console to free up user slots.
Create New User with Email
This flow guides you through the process of registering a new user with email, verifying their email, and setting up their wallet.
Initialize Para Client
First, set up the Para client to enable SDK interactions:
Para offers two hosted environments: Environment.BETA
(alias Environment.DEVELOPMENT
) for testing, and
Environment.PROD
(alias Environment.PRODUCTION
) for live use. Select the environment that matches your current
development phase.
Sign Up or Log In
Use the signUpOrLogIn
method to handle both new user registration and existing user authentication:
Verify Email
Once the user receives the verification code, call the verifyNewAccount
method to confirm their email:
Register Passkey
Use the returned authState to register the userâs passkey:
Complete New User Flow
Implement the full flow by combining all the previous steps:
Login Existing User with Email
This flow demonstrates how to authenticate an existing user using their email and passkey.
Login Existing User
For existing users, use the signUpOrLogIn
method which will return a login stage, then use loginWithPasskey
:
Create New User with Email
This flow guides you through the process of registering a new user with email, verifying their email, and setting up their wallet.
Initialize Para Client
First, set up the Para client to enable SDK interactions:
Para offers two hosted environments: Environment.BETA
(alias Environment.DEVELOPMENT
) for testing, and
Environment.PROD
(alias Environment.PRODUCTION
) for live use. Select the environment that matches your current
development phase.
Sign Up or Log In
Use the signUpOrLogIn
method to handle both new user registration and existing user authentication:
Verify Email
Once the user receives the verification code, call the verifyNewAccount
method to confirm their email:
Register Passkey
Use the returned authState to register the userâs passkey:
Complete New User Flow
Implement the full flow by combining all the previous steps:
Login Existing User with Email
This flow demonstrates how to authenticate an existing user using their email and passkey.
Login Existing User
For existing users, use the signUpOrLogIn
method which will return a login stage, then use loginWithPasskey
:
Create New User with Phone
This flow guides you through the process of registering a new user with a phone number, verifying it, and setting up their wallet.
Initialize Para Client
First, set up the Para client to enable SDK interactions:
Para offers two hosted environments: Environment.BETA
(alias Environment.DEVELOPMENT
) for testing, and
Environment.PROD
(alias Environment.PRODUCTION
) for live use. Select the environment that matches your current
development phase.
Sign Up or Log In
Use the signUpOrLogIn
method to handle both new user registration and existing user authentication:
Verify Phone
Once the user receives the verification code, call the verifyNewAccount
method to confirm their phone number:
Register Passkey
Use the returned authState to register the userâs passkey:
Complete Phone-based Flow
Hereâs an example of a complete phone-based authentication flow:
Login Existing User with Phone
This flow demonstrates how to authenticate an existing user using their phone number and passkey.
Login Existing User
For existing users, use the signUpOrLogIn
method which will return a login stage, then use loginWithPasskey
:
By following these steps, you can implement a secure and user-friendly authentication system in your React Native application using the Para SDK, with support for both email and phone-based authentication methods.
Wallet Management
After successful authentication, you must create wallets for the blockchain networks you want to use:
Creating Wallets
Retrieving Wallet Information
Complete Integration Example
Examples
For practical implementation of the Para SDK in React Native environments, check out our GitHub repository:
Troubleshooting
If you encounter issues during the integration or usage of the Para SDK in your React Native application, here are some common problems and their solutions:
Para SDK initialization fails
Para SDK initialization fails
If youâre having trouble initializing the Para SDK:
- Ensure that youâve called
para.init()
after creating the Para instance. - Verify that youâre using the correct API key and environment.
- Check that all necessary dependencies are installed and linked properly.
- Look for any JavaScript errors in your Metro bundler console.
Native modules are not found or linked
Native modules are not found or linked
If youâre seeing errors about missing native modules: - Run pod install
in the ios
directory to ensure all
CocoaPods dependencies are installed. - For Android, make sure your android/app/build.gradle
file includes the
necessary dependencies. - Rebuild your app after adding new native dependencies. - If using Expo, ensure youâve run
expo prebuild
to generate native code.
Passkey operations fail or throw errors
Passkey operations fail or throw errors
If passkey creation, retrieval, or usage isnât working: - Verify that youâve set up associated domains correctly for
both iOS and Android. - For iOS, check that your entitlements
file includes the necessary associated domains. - For
Android, ensure your asset_statements
are correctly configured in your AndroidManifest.xml
. - Make sure youâve
provided the correct SHA-256 fingerprint to the Para team for Android. - Check for any permission-related errors in
your logs.
Crypto-related errors or undefined functions
Crypto-related errors or undefined functions
"Cannot create URL for blob" errors
"Cannot create URL for blob" errors
If youâre encountering blob URL creation errors during passkey operations:
- Ensure youâre using
{ disableWorkers: true }
in the ParaMobile constructor - Verify the Para SDK shim is imported first in your
index.js
file - This error occurs when Web Workers are enabled in React Native environments
Authentication fails or API requests are rejected
Authentication fails or API requests are rejected
If youâre experiencing authentication issues:
- Double-check that your API key is correct and properly set in your environment variables.
- Verify youâre using the correct environment (
BETA
orPRODUCTION
) that matches your API key. - Ensure your account has the necessary permissions for the operations youâre attempting.
- Check your network requests for any failed API calls and examine the error messages.
For a more comprehensive list of solutions, visit our troubleshooting guide:
Next Steps
After integrating Para, you can explore other features and integrations to enhance your Para experience.