A beautiful, smart and dynamic wallet login flow that just works

Dynamic is your multi-chain wallet-based authentication and authorization platform.

trusted by
And many more!

Set Dynamic up in under a minute

It takes less time than an Ethereum transaction takes to settle

Copied!

npm install @dynamic-labs/sdk-react
// you'll need an NPM key from us during beta

>
Copied!

import {
 useDynamicContext,
 DynamicAuthFlow,
 DynamicContextProvider,

} from '@dynamic-labs/sdk-react';

const Home = () => {
 const { user, handleLogOut, setShowAuthFlow, showAuthFlow } =
   useDynamicContext();  

if (user && !showAuthFlow) {
   return (
     <div>
       <p>User is logged in</p>
       <p>Address: {user.walletPublicKey}</p>
       <button type='button' onClick={handleLogOut}>
         Log Out
       </button>
     </div>
   );
 }  

return (
   <div>
     <button type='button' onClick={() => setShowAuthFlow(true)}>
       Connect With My Wallet
     </button>
     {showAuthFlow && (
       <DynamicAuthFlow
         onAuthSuccess={({ authToken, user }) => {
           window.location.assign('/success');
         }}
       />
     )}
   </div>
 );
};

const App = () => (
 <DynamicContextProvider
   settings={{
     appLogoUrl:
       'https://upload.wikimedia.org/wikipedia/commons/3/34/Examplelogo.svg',
     appName: 'Example App',
     environmentId: 'REPLACE_WITH_YOUR_ENV_ID',
   }}
 >
   <Home />
 </DynamicContextProvider>
);

export default App;

‚Äć
1

Install the Dynamic npm package (you'll need an NPM key from us)

This  takes a few seconds.

2

Grab your React snippet

We support React and NextJS implementations today, with lots more coming soon.

3

Customize

You can further customize things within your developer dashboard. You can also check out a working demo environment here:

Check out our demo environment
1

‚ÄćInstall the Dynamic npm package

This  takes a few seconds.

Copied!

npm install -@dynamic-labs/sdk-react
// you'll need an NPM key from us during beta

>
2

Grab your React snippet

We support React, NextJS and vanilla Javascript implementations today, with lots more coming soon.

Copied!

import {
 useDynamicContext,
 DynamicAuthFlow,
 DynamicContextProvider,

} from '@dynamic-labs/sdk-react';

const Home = () => {
 const { user, handleLogOut, setShowAuthFlow, showAuthFlow } =
   useDynamicContext();  

if (user && !showAuthFlow) {
   return (
     <div>
       <p>User is logged in</p>
       <p>Address: {user.walletPublicKey}</p>
       <button type='button' onClick={handleLogOut}>
         Log Out
       </button>
     </div>
   );
 }  

return (
   <div>
     <button type='button' onClick={() => setShowAuthFlow(true)}>
       Connect With My Wallet
     </button>
     {showAuthFlow && (
       <DynamicAuthFlow
         onAuthSuccess={({ authToken, user }) => {
           window.location.assign('/success');
         }}
       />
     )}
   </div>
 );
};

const App = () => (
 <DynamicContextProvider
   settings={{
     appLogoUrl:
       'https://upload.wikimedia.org/wikipedia/commons/3/34/Examplelogo.svg',
     appName: 'Example App',
     environmentId: 'REPLACE_WITH_YOUR_ENV_ID',
   }}
 >
   <Home />
 </DynamicContextProvider>
);

export default App;

‚Äć
3

Customize

You're done with your initial setup! you can further customize things within your developer dashboard. You can also check out a working demo environment here:

Check out our demo environment

Enable powerful customization
and integrations
with a single click

Once you configure Dynamic, you can add and remove chains, enable information collection, structure gates and access lists, and much much more, all without touching code.

Enable multiple chains

Dynamic supports EVM chains, Solana and Flow, with much more coming soon. It's as easy as toggling them on.

Customize everything

Dynamic's SDK is fully customizable, meaning you can control colors, corners, experience and much more.

Block risky wallets with Chainalysis

You can automatically block OFAC wallets with a click, and easily upgrade for a full suite of integrated tools from Chainalysis.

Block risky wallets with Chainalysis

Gate access by NFT ownership

Want to turn your site into a member-only experience? you can configure gating in your developer user interface.

Restrict access by NFT ownership

Create allow & block lists

Testing your site? create an allow list for your developers and alpha customers. Have wallets you want to block? spin up a block list with a click.

Create allow & block list

Imagine an entire engineering team working to optimize your flow

Dynamic's UX gets smarter over time. You don't need to think about new wallets, chains or interactions. Configure Dynamic once, and empower authentication forever.

Your flow gets smarter over time

Returning user? we'll automatically adapt our flow to make it easy for them. Someone new to web3? we'll focus on explaining how to get started.

A new wallet launched? you’ll have it

We obsess over making sure Dynamic works across wallets. As new wallets launch, we'll add them automatically to your flow.

Mobile web? our flexible SDKs have got you covered

Mobile web is uniquely annoying to maintain, with wallet-browsers, deep linking etc always changing. With Dynamic, it just works.

an enterprise-grade solution

An authentication flow is just the start. With Dynamic you get access to a lot more

User management

Dynamic can act as a full service user management system. With Dynamic you get both UI and API access to your users.

Allow and block lists

Testing your site? create an allow list for your developers and alpha customers. Have addresses to block? spin up a block list with a click.

NFT-based access

Want to turn your site into a member-only experience? you can configure gating in your developer dashboard

Custom info collection

Once a user connects their wallet, you can quickly add additional onboarding fields to the user's sign up flow.

Wallet blocking

(optional) Automatically block risky wallets by screening all wallets against Chainalysis' US OFAC sanctions list.

Wallet compatibility

Our goal is to work with all wallets across all chains. See a wallet that we don't yet support? just let us know!

Fully customizable

Customize everything. Dynamic's SDK is fully customizable, meaning you can control colors, corners, experience and much more.

Security first

We obsess about security. It is a core part of our mission and roadmap. You can read more about it here.

Backed by a group of incredible investors
and many remarkable angels
Documentation

Dynamic takes less than a minute to implement

You can leverage our libraries, see code examples, and ask any question in our Slack community.

Read about wallets and auth

We like to geek out about wallets, dev tools, web3 and much more. You can read some of the articles we wrote below.

Sign up to our closed beta

(It's easier than minting an NFT during a gas war.)

Sign up to our closed beta