
Research
Shai-Hulud Descends to Hades: Miasma Worm Campaign Spreads with New PyPI Wave
Socket found 37 malicious PyPI wheels that abuse Python startup hooks to launch a Bun-powered credential stealer tied to Mini Shai-Hulud/Miasma.
@crossmint/client-sdk-react-ui
Advanced tools
React SDK for integrating [Crossmint Wallets](https://docs.crossmint.com) into your application. Provides providers, hooks, and built-in UI for wallet creation, signing, OTP verification, and passkey flows.
React SDK for integrating Crossmint Wallets into your application. Provides providers, hooks, and built-in UI for wallet creation, signing, OTP verification, and passkey flows.
Get a client API key from the Crossmint developer console. Ensure your key has the Wallet API scopes enabled.
npm install @crossmint/client-sdk-react-ui
# or
pnpm add @crossmint/client-sdk-react-ui
# or
yarn add @crossmint/client-sdk-react-ui
With Crossmint Authentication (Recommended for quickstarts only)
"use client";
import {
CrossmintProvider,
CrossmintAuthProvider,
CrossmintWalletProvider,
} from "@crossmint/client-sdk-react-ui";
export default function App({ children }) {
return (
<CrossmintProvider apiKey={process.env.NEXT_PUBLIC_CROSSMINT_API_KEY}>
<CrossmintAuthProvider>
<CrossmintWalletProvider
createOnLogin={{
chain: "base-sepolia",
recovery: { type: "email" },
}}
>
{children}
</CrossmintWalletProvider>
</CrossmintAuthProvider>
</CrossmintProvider>
);
}
Bring Your Own Authentication
Already have authentication? Skip CrossmintAuthProvider and use wallets with your existing auth system. See the Custom Auth Guide for full details.
"use client";
import {
CrossmintProvider,
CrossmintWalletProvider,
} from "@crossmint/client-sdk-react-ui";
export default function App({ children }) {
return (
<CrossmintProvider apiKey={process.env.NEXT_PUBLIC_CROSSMINT_API_KEY}>
<CrossmintWalletProvider
createOnLogin={{
chain: "base-sepolia",
recovery: {
type: "email",
email: "user@example.com",
},
}}
>
{children}
</CrossmintWalletProvider>
</CrossmintProvider>
);
}
import { useWallet } from "@crossmint/client-sdk-react-ui";
function WalletActions() {
const { wallet, status } = useWallet();
if (status === "in-progress") return <p>Loading wallet...</p>;
if (!wallet) return <p>No wallet</p>;
const handleSend = async () => {
const tx = await wallet.send("0xRecipient", "usdc", "10");
console.log("Transaction:", tx.explorerLink);
};
return (
<div>
<p>Wallet: {wallet.address}</p>
<button onClick={handleSend}>Send 10 USDC</button>
</div>
);
}
| Provider | Purpose |
|---|---|
CrossmintProvider | Root provider. Required for all Crossmint features. |
CrossmintAuthProvider | Authentication (email OTP, Google, Twitter/X). Optional if using your own auth. |
CrossmintWalletProvider | Wallet creation, device signer management, and built-in OTP/passkey UI. |
createOnLogin ConfigurationWhen createOnLogin is set on CrossmintWalletProvider, a wallet is automatically created when the user logs in:
<CrossmintWalletProvider
createOnLogin={{
chain: "base-sepolia", // required — the blockchain
recovery: { type: "email" }, // required — recovery signer config
signers: [{ type: "device" }], // optional — defaults to device signer
}}
>
useWallet()Returns the wallet instance and management functions:
const {
wallet, // Wallet | undefined
status, // "not-loaded" | "in-progress" | "loaded" | "error"
getWallet, // (props: { chain, alias? }) => Promise<Wallet | undefined>
createWallet, // (props: ClientSideWalletCreateArgs) => Promise<Wallet | undefined>
createDeviceSigner, // () => Promise<DeviceSignerDescriptor> | undefined
createPasskeySigner, // (name: string) => Promise<RegisterSignerPasskeyParams>
} = useWallet();
useWalletOtpSigner()For custom OTP UI when using email/phone recovery signers:
const { needsAuth, sendOtp, verifyOtp, reject } = useWalletOtpSigner();
useAuth()Authentication state and login methods:
const { login, logout, user, status } = useAuth();
ExportPrivateKeyButtonRenders a button to export the wallet's private key via TEE. Only renders for email/phone signers.
import { ExportPrivateKeyButton } from "@crossmint/client-sdk-react-ui";
<ExportPrivateKeyButton appearance={{ borderRadius: "12px" }} />
For React Native apps, see @crossmint/client-sdk-react-native-ui.
The wallet object returned by useWallet() is a Wallet instance. For wallet method documentation (send, balances, sign, etc.), see the @crossmint/wallets-sdk README.
Source JSDoc -> TypeDoc -> api.json -+
+-> generate-reference.mjs -> MDX pages (docs/<product>/)
examples.json -+
Run with pnpm generate:docs or node scripts/generate-reference.mjs --product wallets.
Apache-2.0
FAQs
React SDK for integrating [Crossmint Wallets](https://docs.crossmint.com) into your application. Provides providers, hooks, and built-in UI for wallet creation, signing, OTP verification, and passkey flows.
The npm package @crossmint/client-sdk-react-ui receives a total of 4,626 weekly downloads. As such, @crossmint/client-sdk-react-ui popularity was classified as popular.
We found that @crossmint/client-sdk-react-ui demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 9 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Socket found 37 malicious PyPI wheels that abuse Python startup hooks to launch a Bun-powered credential stealer tied to Mini Shai-Hulud/Miasma.

Security News
RubyGems and Bundler 4.0.13 introduced an opt-in cooldown feature that delays newly published gems during dependency resolution.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.