Skip to main content
This guide sets up the JavaScript SDK in an Expo app. These steps configure the native modules and polyfills the SDK needs for cross-platform compatibility.
Before you start: an Expo app and a Dynamic environment ID from the Dynamic dashboard. For a bare React Native app, use Setup on Bare React Native instead.
Expo Go is not supported. The SDK depends on native modules that are linked only when you build the native app with npx expo prebuild. Use a development build or EAS Build.

Install dependencies

1

Install the core packages

Install the SDK packages and their peer dependencies.
2

Install the polyfills

Install the polyfills required for secure operations.
You may already have some of these polyfills installed. Install only the ones your project is missing.

Feature packages

The packages above cover email, wallet, and session basics. Each feature below needs an extra package — install it only when you use that feature, then follow its guide.

Create a polyfills file

Create a polyfills.ts file at the root of your project. It shims the Buffer implementation and the Crypto API that secure operations rely on.
polyfills.ts
Using WalletConnect? Install @walletconnect/react-native-compat and add import '@walletconnect/react-native-compat'; as the first import in polyfills.ts, above the crypto shims — the WalletConnect relay client requires it to load before anything WalletConnect-related. See WalletConnect integration.

Configure a custom entry point

To guarantee the polyfills run before any other code, add a custom entry point.
1

Create index.ts

Create an index.ts file at the root of your project:
index.ts
2

Point package.json to it

Update the main field in package.json:
package.json

Rebuild the native app

After adding native modules such as expo-crypto, rebuild your development build so the native code is linked.

Initialize the Dynamic client

Create a dynamicClient.ts file in your project root or a shared configuration folder. This client is your primary interface to the SDK.
dynamicClient.ts
For a full reference of the options, see Creating a Dynamic Client and Initializing the Dynamic Client.

Next steps

Your Expo app is set up. From here, wrap your app in the React hooks provider, add the chains you support, and the rest of your integration works the same as on the web — the guides below apply unchanged unless they show an Expo tab.

Set up the React hooks

Wrap your app in QueryClientProvider and DynamicProvider to use the hooks.

Add the EVM extension

Register EVM (or another chain) so the client can connect wallets and sign.

WalletConnect integration

Connect external wallets over WalletConnect — see the Expo tab for deep linking.

Authenticate with email

Send an email OTP and verify the user.

Build a wallet picker

List wallet providers and connect a wallet.
Running into issues? See Troubleshooting in the Overview docs.
Last modified on July 22, 2026