Native Expo authentication
Clerk’s Expo SDK provides drop-in native UI components for sign-in, sign-up, and user management, built from SwiftUI on iOS and Jetpack Compose on Android.
Social sign-on
Support a range of SSO providers, including native Google Sign-In, to give your users a faster and more secure sign-in experience
Passkeys
Enable your users to sign in using biometrics, like a fingerprint or face scan, instead of a password.
Multi-factor authentication
Offer multi-factor authentication options, including time-based one-time passwords (TOTP) and backup codes.
Local credentials
The useLocalCredentials() hook enables you to store a user’s password on device and subsequently use biometrics for sign-in.
Clerk handles the session, even if the user is offline
Keep your users authenticated and engaged, even in challenging network conditions, without writing any session management code.
Configurable session lifetime
Set session duration from 5 minutes to 10 years, with an optional inactivity timeout.

Encrypted local token storage
Authentication tokens are encrypted and stored using expo-secure-store, protected at the device level.
Mobile offline support
Keep users signed in without an internet connection. Cached user data stays accessible when the device is offline.
Advanced security and privacy
Ship fast, stay secure
Clerk is regularly audited and certified by industry-leading third-party standards.
Secure, private, and compliant. Always.
SOC2 Type II
HIPAA
CCPA
More than authentication, complete user management
Clerk gives you everything you need to manage your growing user base - from authorization and organization management to a powerful admin dashboard.
Build team-based features quickly with Organizations
Enable your users to create and manage teams, invite team members manually, or set up auto-invites for teammates who share a company email domain.

Manage and support users from the Clerk dashboard
Monitor, manage, and support users directly from the Clerk dashboard.

Clerk API
Custom flows
Want full control over your onboarding experience? Our headless APIs give you the flexibility to build exactly what you need.
// Custom sign-up flow with email verification
import { useSignUp } from '@clerk/clerk-expo'
const { signUp } = useSignUp()
await signUp.create({ emailAddress, password })
await signUp.emailCode.sendCode()
await signUp.emailCode.verifyCode({ code })
await signUp.finalize({ navigate: () => router.push('/') })