Skip to main content

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.

Drop <AuthView /> into your app and get a complete, native-rendered sign-in and sign-up flow.

Sign in to Acme
Welcome! Sign in to continue
Enter your email address
Continue
or
Apple
Google
Secured by
Help
Privacy
Terms
Back
Enter password
Enter the password for your account
Enter your password
Continue
or
Use another method
Forgot password?
Secured by
Help
Privacy
Terms
Back
Use another method
Enter the password for your account
Apple
Google
or
Email code to nick@email.com
Secured by
Help
Privacy
Terms
Back
Forgot password?
Reset your password
Or, sign in with another method
Apple
Google
Email code to nick@email.com
Secured by
Help
Privacy
Terms
Back
Set new password
New password
Confirm password
Reset your password
Secured by
Help
Privacy
Terms
Hi Nick!
Account
Nick Cameron
Update profile
Profile
Security
Billing
Sign out
Secured by
Close
Profile
Username
nickcameron
First name
Nick
Last name
Cameron
Save
Secured by
Close
Security
Password
Change password
Secured by
Sign in to Acme
Welcome! Sign in to continue
Enter your email address
Continue
or
Google
Secured by
Help
Privacy
Terms
Enter password
Enter the password for your account
Enter your password
Continue
or
Use another method
Forgot password?
Secured by
Help
Privacy
Terms
Use another method
Enter the password for your account
Google
or
Email code to nick@email.com
Secured by
Help
Privacy
Terms
Forgot password?
Reset your password
Or, sign in with another method
Google
Email code to nick@email.com
Secured by
Help
Privacy
Terms
Set new password
New password
Confirm password
Reset your password
Secured by
Help
Privacy
Terms
Hi Nick!
Account
Nick Cameron
Update profile
Profile
Security
Billing
Sign out
Secured by
Profile
Username
nickcameron
First name
Nick
Last name
Cameron
Save
Secured by
Security
Password
Change password
Secured by

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.

Acme Ltd.
600 672
Titan Labs
598 215
Zenith Co.
982 431
Beacon Ventures
714 304

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('/') })