This package contains ready-made, customizable React UI components that wrap the CDP frontend SDK.
SignInModal - a button that triggers a modal with the sign-in flowSignIn - the forms for the sign in flow, a logo, heading, and description textSignOutButton - a sign out buttonAuthButton - the SignOutButton when logged in, and the SignInModal when logged outSendEvmTransactionButton - a button that signs and sends an EVM transactionSendSolanaTransactionButton - a button that signs and sends a Solana transactionFund - the fund flowFundModal - a button that triggers a modal with the fund flowThis guide will help you get started with @coinbase/cdp-react. You'll learn how to install the package, set up the provider, and render your first component.
First, add the package to your project using your preferred package manager.
# With pnpm
pnpm add @coinbase/cdp-react @coinbase/cdp-core @coinbase/cdp-hooks
# With yarn
yarn add @coinbase/cdp-react @coinbase/cdp-core @coinbase/cdp-hooks
# With npm
npm install @coinbase/cdp-react @coinbase/cdp-core @coinbase/cdp-hooks
http://localhost:3000Next, you need to wrap your application with the CDPReactProvider.
CDPReactProvider provides the necessary context for hooks and components to work correctly. It also provides access to config data and theming.
Update your main application file (e.g., main.tsx or App.tsx) to include the provider:
import React from 'react';
import ReactDOM from 'react-dom/client';
import { App } from './App'; // Your main App component
import { CDPReactProvider, type Config, type Theme } from '@coinbase/cdp-react';
// Config for your dapp
const config: Config = {
projectId: "your-project-id", // Copy your Project ID here.
appName: "My app", // the name of your application
appLogoUrl: "https://picsum.photos/64", // logo will be displayed in select components
}
// You can customize the theme by overriding theme variables
const themeOverrides: Partial<Theme> = {
"colors-bg-default": "black",
"colors-bg-alternate": "#121212",
"colors-fg-default": "white",
"colors-fg-muted": "#999999",
}
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<CDPReactProvider config={config} theme={themeOverrides}>
<App />
</CDPReactProvider>
</React.StrictMode>,
);
By default the SDK will emit usage analytics to help us improve the SDK. If you would like to opt-out, you can do so by setting the disableAnalytics configuration option to true.
<CDPReactProvider
config={{
projectId: "your-project-id",
disableAnalytics: true,
}}
>
<App />
</CDPReactProvider>
Now you can use the components from the library. Let's add the AuthButton component to your application. This component handles both sign-in and sign-out functionality.
// In your App.tsx or any other component
import { AuthButton } from '@coinbase/cdp-react/components/AuthButton';
function App() {
return (
<div>
<h1>Welcome</h1>
<AuthButton />
</div>
);
}
export default App;
That's it! You've successfully installed @coinbase/cdp-react, set up the provider, and rendered your first component.