clerk-expo

Implement Clerk authentication in Expo and React Native apps using @clerk/expo.

Updated Aug 28, 2026
One-click install
npx skills add https://github.com/Yash-Awasthi/adapfit --skill clerk-expo-yash-awasthi
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: clerk-expo
Source: https://github.com/Yash-Awasthi/adapfit/tree/main/.agents/skills/clerk-expo
Command: npx skills add https://github.com/Yash-Awasthi/adapfit --skill clerk-expo-yash-awasthi

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @clerk/expo, expo-secure-store, and includes references (resource) components.

What problem does it solve? Adding authentication to an Expo or React Native app involves many failure-prone details: token persistence, dashboard configuration, deprecated APIs, and build-type constraints. This Skill provides verified, current patterns for @clerk/expo so auth works correctly on the first build. ## Core Features & Use Cases - Prebuilt native components: Set up AuthView, UserButton, and UserProfileView from @clerk/expo/native for development builds, with theming via the config plugin. - Custom auth flows: Build email/password, SMS/phone OTP, MFA/TOTP, forgot-password, and combined sign-in-or-up flows using the current method-based useSignIn/useSignUp API. - Social and native sign-in: Implement browser SSO with useSSO or native Google/Apple sign-in hooks, plus protected routes with Expo Router guards, biometrics, passkeys, and push notification registration. - Use Case: A developer asks to add phone SMS auth to their Expo app; the Skill first verifies SMS is enabled in the Clerk Dashboard, then generates sign-up and sign-in flows with sendPhoneCode/verifyPhoneCode, finalize(), and the required captcha mount point. ## Quick Start Add Clerk authentication to my Expo app with a sign-in screen and persistent sessions across restarts.

Frequently Asked Questions about clerk-expo

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add Clerk authentication to my Expo app?▼

Install @clerk/expo and expo-secure-store, set EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY in your .env, and wrap your root layout in ClerkProvider with tokenCache. Then use prebuilt AuthView components for dev builds or custom useSignIn/useSignUp flows for Expo Go.

How do I add phone SMS authentication with Clerk in React Native?▼

Enable phone number and SMS verification in the Clerk Dashboard first, since SMS is instance-dependent. Then use signUp.create({ phoneNumber }) with verifications.sendPhoneCode/verifyPhoneCode for sign-up, and signIn.phoneCode.sendCode/verifyCode for sign-in, calling finalize() when complete.

Does Clerk Expo work with Expo Go?▼

Custom flows with useSignIn/useSignUp and browser SSO via useSSO work in Expo Go. Native components like AuthView, native Google/Apple sign-in hooks, biometrics, and passkeys require a development build created with npx expo run:ios or run:android.

Why does my Clerk session not persist after restarting my Expo app?▼

Sessions are lost when ClerkProvider lacks the tokenCache prop. Import tokenCache from @clerk/expo/token-cache and pass it to ClerkProvider; it stores tokens in the device keychain via expo-secure-store. Never use AsyncStorage for session tokens.

Should I use useSSO or useOAuth for Google sign-in in Expo?▼

Use useSSO; useOAuth is deprecated. Call startSSOFlow({ strategy: 'oauth_google' }) and setActive({ session: createdSessionId }) on success. For fully native Google sign-in without a browser, use useSignInWithGoogle from @clerk/expo/google with a development build.

How do I protect Expo Router routes for signed-in users only?▼

Add a layout guard in the route group's _layout.tsx using useAuth from @clerk/expo. Check isLoaded before isSignedIn, return null while loading, and render expo-router's Redirect to your sign-in screen when the user is signed out.