Simple and Powerful AuthBuilt for React Native

Magic links, social sign-in, multifactor, and more - added to your app in minutes.

Mobile Development

React Native brings the cross-platform flexibility and support of universal React to the native development of mobile apps.

Customizable components

Clerk provides React Native applications with hooks and fully customizable components that allow users to include complete sign-in flows, user management, and authorization in minutes.

Clerk Expo

Clerk Expo is a wrapper around Clerk React that works for iOS and Android. Clerk Expo provides hooks and customizable components which act as helpers for implementing a seamless authentication experience.

mobile

Get Started

Complete user management

Use Clerk with Expo to authenticate users in your React Native application. Build with authentication from the ground up, or integrate Clerk into your app in minutes.

Documentation

Our easy to follow documentation will get your application working with user management and authentication quickly. Save development time with Clerk's comprehensive suite of tools.

Examples

Check out Clerk and React in action. Our collection of examples has different types of authentication form flows you might need for your application. All built using Clerk!

Get Started

Get started with Clerk and React Native! We created this simple Clerk + React Native starter repository so that you can begin building your application immediately.

Radically Simple.

It only takes one line of code.

useSignIn()

The useSignIn() hook gives you access to the SignIn object inside your components. You can use the methods of the SignIn object to create your own custom sign in flow, as an alternative to using Clerk's pre-built <SignIn/> component.

import { useClerk, useSignIn } from "@clerk/clerk-expo"
...
const { setSession } = useClerk();
const signIn = useSignIn();
...
const onSignInPress = async () => {
try {
const completeSignIn = await signIn.create({
identifier: emailAddress,
password,
});
await setSession(completeSignIn.createdSessionId);
...
sign-in-full

useUser()

The useUser() hook accesses the active User object. It can be used to update the user or display information about the user's profile, like their name or email address. The hook provides a shortcut for retrieving the Clerk.session.user property.

import { useClerk, useUser } from '@clerk/clerk-expo';
...
const { signOut } = useClerk();
const { firstName } = useUser();
return (
<View style={styles.container}>
<Avatar.Image size={100} source={avatar} />
<Text style={styles.title}>
Hello, {firstName}!
</Text>
<Button
style={styles.link}
mode="text"
onPress={onSignOutPress}>
Sign out
</Button>
</View>
);
...
use-user-full

Immensely Powerful.

The features your users expect.

Magic links

Make passwords obsolete by sending your users magic links

Session management

Revocable and stateless, the best of both worlds.

Multifactor authentication

Secure your users with multiple steps during sign in.

Social sign-in

Let your users sign in with Google, Facebook, and more

Multi-session management

Allow your users to sign in to multiple accounts at once.

New device notifications

Proactively notify users when a new device signs in. Let's your users protect themself.

Password leak protection

Proactively protects your users against passwords that appear in leaks.

Advanced security

Clerk detects and blocks phishy sign ins out of the box.

Start now, no strings attached

Start completely free for up to 500 monthly active users.
No credit card required.

Start building

Pricing

Learn more about our transparent per-user costs to estimate how much your company could save by implementing Clerk.

View pricing