Skip to main content

Latest React Native SDK version - npm

The Crossmint React Native SDK (@crossmint/client-sdk-react-native-ui) provides React Native providers and hooks for integrating Crossmint authentication into your mobile application, including email OTP, social login (OAuth), and session management.

Installation

npm i @crossmint/client-sdk-react-native-ui expo-secure-store expo-web-browser expo-device
yarn add @crossmint/client-sdk-react-native-ui expo-secure-store expo-web-browser expo-device
pnpm add @crossmint/client-sdk-react-native-ui expo-secure-store expo-web-browser expo-device
bun add @crossmint/client-sdk-react-native-ui expo-secure-store expo-web-browser expo-device

Provider Setup

Wrap your application with the required providers:
import {
    CrossmintProvider,
    CrossmintAuthProvider,
} from "@crossmint/client-sdk-react-native-ui";

function App() {
    return (
        <CrossmintProvider apiKey="YOUR_CLIENT_API_KEY">
            <CrossmintAuthProvider appSchema="myapp://">
                {/* Your app components */}
            </CrossmintAuthProvider>
        </CrossmintProvider>
    );
}

Quick Example

Once providers are set up, use the useCrossmintAuth hook to access auth state:
import { useCrossmintAuth } from "@crossmint/client-sdk-react-native-ui";
import { View, Text, TouchableOpacity } from "react-native";

function LoginScreen() {
    const { loginWithOAuth, logout, user, status } = useCrossmintAuth();

    if (status === "initializing") return <Text>Loading...</Text>;

    if (user == null) {
        return (
            <TouchableOpacity onPress={() => loginWithOAuth("google")}>
                <Text>Sign in with Google</Text>
            </TouchableOpacity>
        );
    }

    return (
        <View>
            <Text>Welcome, {user.email}</Text>
            <TouchableOpacity onPress={logout}>
                <Text>Log out</Text>
            </TouchableOpacity>
        </View>
    );
}

Next Steps

  • Providers — Configure providers and their options
  • Hooks — Access SDK state via React hooks