Skip to main content
When incorporating Para into React Native or Expo applications, developers may face specific hurdles. This guide offers solutions to common problems and provides best practices for a smooth integration process.
Using an LLM (ChatGPT, Claude) or Coding Assistant (Cursor, Github Copilot)? Here are a few tips:
  1. Include the for the most up-to-date help
  2. Check out the for an interactive LLM using Para Examples Hub

General Troubleshooting Steps

Before addressing specific issues, try these general troubleshooting steps for both React Native and Expo projects:
# For React Native
rm -rf node_modules
npm cache clean --force
npm install

# For Expo
expo r -c
bash expo prebuild --clean
# For React Native
npx react-native run-ios
npx react-native run-android

# For Expo
expo run:ios
expo run:android

Common Issues and Solutions

Error: Errors related to missing modules like crypto, buffer, or stream.Solution: Update your metro.config.js to include necessary polyfills:
const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config");
const nodeLibs = require("node-libs-react-native");

const config = {
  resolver: {
    extraNodeModules: {
      ...nodeLibs,
      crypto: require.resolve("react-native-quick-crypto"),
      buffer: require.resolve("@craftzdog/react-native-buffer"),
    },
  },
};

module.exports = mergeConfig(getDefaultConfig(__dirname), config);
Error: Errors persist despite Metro configuration, often related to global objects.Solution: Create a shim.js file at the root of your project and import it in your entry file.For the complete shim.js setup, refer to the Polyfills and Shims section in the and setup guides.
Error: Errors related to crypto.subtle API or missing cryptographic functions.Solution: Add the PolyfillCrypto component to your root App component.
import PolyfillCrypto from "react-native-webview-crypto";

export default function App() {
return (
<>
  <PolyfillCrypto />
  {/* Your app components */}
</>
);
}

</Accordion>

<Accordion title="WebCredentials Configuration">
**Error**: Passkey functionality not working. Errors related to `ASAuthorizationController` or `ASWebAuthenticationSession` on iOS and `CredentialManager` on Android.

**Solution**:
Passkeys requires configuring both the iOS and Android environments with the Para associated domains and web credentials.
Please check Step one of the Project Setup section for the <Link label="React Native" href="/v2/react-native/setup/react-native#add-para-shim" /> and <Link label="Expo" href="/v2/react-native/setup/expo#import-required-shims" /> setup guides for detailed instructions.

</Accordion>

<Accordion title="Apple App Site Association">
**Error**: Passkeys not functioning despite correct configuration.

**Solution**: Ensure your app's bundle identifier and team ID are registered with Para.

<Info>
Contact Para support to associate your app correctly. Provide your app's bundle identifier and team ID. You can find your team ID in the Apple Developer portal.
</Info>

</Accordion>

<Accordion title='Android: "RP ID cannot be validated" (Error 50152)'>
**Error**: `{"error": "Native error", "message": "Error: [50152] RP ID cannot be validated."}`

This is an Android-specific error from Google Play Services indicating your app's signing certificate doesn't match what's registered in the Digital Asset Links for Para's domain.

**Common causes:**
- **Debug vs release key mismatch**: Debug builds use `~/.android/debug.keystore` while release builds use your production keystore. The SHA-256 fingerprint registered in the Developer Portal must match the keystore used to sign the build you're testing.
- **Verification still pending**: After registering your SHA-256 fingerprint, Google can take up to 24 hours to verify. Check the status in the <Link label="Developer Portal" href="https://developer.getpara.com" /> under your API key's Native Passkey Configuration.
- **Incorrect fingerprint**: Verify you copied the correct SHA-256 fingerprint (not SHA-1 or MD5).

**Solution**: Get the correct fingerprint for your current build type and register it in the Developer Portal:
```bash
# Debug builds
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

# Release builds
keytool -list -v -keystore <your_keystore_path>
You can register both debug and release fingerprints in the Developer Portal to avoid this issue across build types.
Error: UserCancelled or NoCredentialsSolutions:
  • UserCancelled: The user dismissed the passkey prompt. This is expected behavior — handle it gracefully in your app by catching the error and allowing the user to retry.
  • NoCredentials: No passkeys are stored on this device for the user. This typically means the user hasn’t registered a passkey yet or is on a different device than where the passkey was created. Ensure your auth flow calls registerPasskey() for new users before attempting loginWithPasskey().
Error: RequestFailed from ASAuthorizationThis iOS error indicates the passkey operation failed at the system level.Common causes:
  • The associated domains entitlement is not configured correctly in Xcode (or app.json for Expo).
  • Your teamId + bundleIdentifier is not registered with Para.
  • The device cannot reach Apple’s CDN to validate the Apple App Site Association file.
Solution: Verify your associated domains are set to webcredentials:app.beta.usecapsule.com and webcredentials:app.usecapsule.com, and confirm your Team ID + Bundle ID is registered in the .
Error: com.oblador.keychain.exceptions.CryptoFailedException: Decryption failed: Authentication tag verification failed.This is expected during development when you rebuild or reinstall the app. The previous keychain data was encrypted with a key tied to the old app installation.Solution: Clear the app data or uninstall and reinstall the app. This will not affect production users since they won’t be reinstalling the app during normal use.
Error: Native modules not working in Expo Go.Solution: Para is reliant on native modules and will not work with Expo Go. Use Expo’s build service to create a standalone app. You can do this by running expo build:ios or expo build:android. This will create the corresponding iOS or Android folders in your project and link the native modules correctly. Alternative use expo prebuild to create the native folders for both platforms.
Error: Native modules not linking correctly. Build errors related to missing pods. Build stalls at the linking stage.Solution: iOS in React Native projects requires manual linking of pods. Ensure the pods are correctly linked by running pod install in the ios directory. Expo auto links the pods, but you can run expo prebuild --clean to ensure the pods are correctly linked.
cd ios
pod install
cd ..
npx react-native run-ios

Best Practices

  1. Implement robust error handling for all Para operations.
  2. Use secure storage methods for sensitive data.
  3. Keep your project’s native code up to date with the latest Para SDK requirements.
For comprehensive setup instructions and the most up-to-date integration guide, please refer to our and quick start guides.

Integration Support

If you’re experiencing issues that aren’t resolved by our troubleshooting resources, please contact our team for assistance. To help us resolve your issue quickly, please include the following information in your request:
  1. 1

    A detailed description of the problem you’re encountering.

  2. 2

    Any relevant error messages or logs.

  3. 3

    Steps to reproduce the issue.

  4. 4

    Details about your system or environment (e.g., device, operating system, software version).

Providing this information will enable our team to address your concerns more efficiently.