Exploring stablecoins? Dynamic makes it easy to launch and scale any stablecoin-related use case.
Dive into the details

Build with the tools you know and love

We have SDKs and libraries for everything you need and we're constantly adding support for more.

Install our SDK in minutes!

1

Get an environment ID

Set up an account to get your environment ID.

2

Install the Dynamic NPM package

This takes a few seconds.

3

Set up your React snippet and customize

Once you set up your snippet, you can further customize things within your developer dashboard.

Copied!

npm i viem @dynamic-labs/sdk-react-core @dynamic-labs/ethereum

>
Copied!

import {
 DynamicContextProvider,
 DynamicWidget,
} from "@dynamic-labs/sdk-react-core";
import { EthereumWalletConnectors } from "@dynamic-labs/ethereum";

export default function App() {
 return (
   <DynamicContextProvider
     settings={{
       // Find your environment id at https://app.dynamic.xyz/dashboard/developer
       environmentId: "REPLACE-WITH-YOUR-ENVIRONMENT-ID",
       walletConnectors: [EthereumWalletConnectors],
     }}
   >
     <DynamicWidget />
   </DynamicContextProvider>
 );
}


Copied!

npm i @dynamic-labs/viem-extension@alpha @dynamic-labs/client@alpha @dynamic-labs/react-native-extension@alpha @dynamic-labs/react-hooks@alpha react-native-webview expo-web-browser expo-linking expo-secure-store

>
Copied!

import { createClient } from "@dynamic-labs/client";
import { ReactNativeExtension } from "@dynamic-labs/react-native-extension";
import { ViemExtension } from "@dynamic-labs/viem-extension";

export const dynamicClient = createClient({
 // Find your environment id at https://app.dynamic.xyz/dashboard/developer
 environmentId: "REPLACE-WITH-YOUR-ENVIRONMENT-ID",  // Optional:
 appLogoUrl: "https://demo.dynamic.xyz/favicon-32x32.png",
 appName: "Dynamic Demo",
})
 .extend(ReactNativeExtension())
 .extend(ViemExtension());

export function App() {
 return (
   <>
     <dynamicClient.reactNative.WebView />      <SafeAreaView>
       <Text>Hello, world!</Text>
     </SafeAreaView>
   </>
 );
}


Copied!

flutter pub add dynamic_sdk dynamic_sdk_web3dart

>
Copied!

import 'package:dynamic_sdk/dynamic_sdk.dart';

void main() {
 WidgetsFlutterBinding.ensureInitialized();
 DynamicSDK.init(
   props: ClientProps(
     // Find your environment id at https://app.dynamic.xyz/dashboard/developer
     environmentId: 'REPLACE-WITH-YOUR-ENVIRONMENT-ID',      // Optional:
     appLogoUrl: 'https://demo.dynamic.xyz/favicon-32x32.png',
     appName: 'Dynamic Demo',
   ),
 );
 runApp(const MyApp());
}

class MyApp extends StatelessWidget {
 const MyApp({super.key});  

@override
 Widget build(BuildContext context) {
   return MaterialApp(
     title: 'Flutter Demo',
     theme: ThemeData(
       colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
       useMaterial3: true,
     ),
     home: Stack(
       children: [
         // Make sure the SDK is ready before using it
         StreamBuilder<bool?>(
           stream: DynamicSDK.instance.sdk.readyChanges,
           builder: (context, snapshot) {
             final sdkReady = snapshot.data ?? false;
             return sdkReady
                 ? const MyHomePage(title: 'Flutter Demo Home Page')
                 : const SizedBox.shrink();
           },
         ),
         // DynamicSDK widget must be available all the time
         DynamicSDK.instance.dynamicWidget,
       ],
     ),
   );
 }
}


Designed and optimized for any use case

Solutions

And more...