UNPKG

@turnkey/react-wallet-kit

Version:

The easiest and most powerful way to integrate Turnkey's Embedded Wallets into your React applications.

113 lines (80 loc) 3.24 kB
# @turnkey/react-wallet-kit The `@turnkey/react-wallet-kit` is a powerful SDK that allows you to integrate Turnkey's Embedded Wallets into your React applications. It provides a set of UI components and easy-to-use functions, all exported from a hook, enabling you to quickly build secure embedded wallet experiences. ## Installation You can use `@turnkey/react-wallet-kit` in any React based web application. For this guide, let's create a new `Next.js` app. If you already have an existing app, you don't need to do this. ```bash npx npx create-next-app@latest ``` Now, install the Turnkey React Wallet Kit package: <CodeGroup> ```bash npm npm install @turnkey/react-wallet-kit ``` ```bash pnpm pnpm add @turnkey/react-wallet-kit ``` ```bash yarn yarn add @turnkey/react-wallet-kit ``` </CodeGroup> ## Provider Wrap your app with the `TurnkeyProvider` component, and import `"@turnkey/react-wallet-kit/styles.css"` to include styles for the UI components. With Next.js App Router, keep `app/layout.tsx` as a server component and create a separate `app/providers.tsx` client wrapper. This is necessary if you want to pass callbacks (e.g., onError), which must be defined in a client component. ```tsx app/providers.tsx "use client"; import { TurnkeyProvider, TurnkeyProviderConfig, } from "@turnkey/react-wallet-kit"; const turnkeyConfig: TurnkeyProviderConfig = { organizationId: process.env.NEXT_PUBLIC_ORGANIZATION_ID!, authProxyConfigId: process.env.NEXT_PUBLIC_AUTH_PROXY_CONFIG_ID!, }; export function Providers({ children }: { children: React.ReactNode }) { return <TurnkeyProvider config={turnkeyConfig}>{children}</TurnkeyProvider>; } ``` In case anything goes wrong, let's add an `onError` callback to the `TurnkeyProvider` to catch any errors that may occur. ```tsx app/providers.tsx <TurnkeyProvider config={turnkeyConfig} callbacks={{ onError: (error) => console.error("Turnkey error:", error), }} > ``` Then, use the `Providers` component to wrap your app in `app/layout.tsx`. ```tsx app/layout.tsx import "@turnkey/react-wallet-kit/styles.css"; import "./globals.css"; import Providers from "./providers"; export default function RootLayout({ children, }: { children: React.ReactNode; }) { return ( <html lang="en"> <body> <Providers>{children}</Providers> </body> </html> ); } ``` > **Why this pattern?** > > - Callbacks (and other interactive bits) must be declared in a client component. > - Keeping layout.tsx as a server component maintains optimal rendering and avoids making your entire app client-side unnecessarily. > - Centralizing Turnkey setup in app/providers.tsx keeps configuration, styles, and callbacks in one place. ## Quick Authentication The easiest way to handle authentication is using the `handleLogin` function from the `useTurnkey` hook. This will automatically show a modal with all the authentication methods you've enabled in your dashboard. ```tsx import { useTurnkey } from "@turnkey/react-wallet-kit"; function LoginButton() { const { handleLogin } = useTurnkey(); return <button onClick={handleLogin}>Login / Sign Up</button>; } ``` For more information, check out [our docs!](https://docs.turnkey.com)