
Clerk Expo
Add Clerk sign-in to Expo and React Native apps using @clerk/expo patterns from package source—AuthView, UserButton, or custom hooks.
Install
npx skills add https://github.com/clerk/skills --skill clerk-expoWhat is this skill?
- Source-guided patterns: inspect installed @clerk/expo and mirror current hooks and components
- Supports prebuilt AuthView/UserButton or custom hook-driven flows
- Activation when app.json, metro.config.js, or @clerk/expo dependency is present
- Explicit routing rules: not for native Swift/Kotlin-only or web-only Next.js without Expo
- Requires Expo development build compatibility per skill metadata
Adoption & trust: 990 installs on skills.sh; 46 GitHub stars; 2/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
Recommended Skills
Vercel React Native Skillsvercel-labs/agent-skills
Firebase Basicsfirebase/agent-skills
Building Native Uiexpo/skills
Firebase Ai Logic Basicsfirebase/agent-skills
Native Data Fetchingexpo/skills
Firebase Firestorefirebase/agent-skills
Journey fit
Common Questions / FAQ
Is Clerk Expo safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Clerk Expo
# Clerk Expo (React Native) This skill implements Clerk in Expo / React Native projects by inspecting the installed `@clerk/expo` package source and mirroring current hook and component behavior. ## Activation Rules Activate this skill when either condition is true: - The user explicitly asks for Expo, React Native, `@clerk/expo`, `ClerkProvider`, or related Clerk component/hook implementation. - The project appears to be Expo/React Native (for example `app.json`, `app.config.js`, `metro.config.js`, `expo` in `package.json`, `@clerk/expo` dependency). Do not activate this skill when any condition is true: - The project is native iOS/Swift (`.xcodeproj`, `.xcworkspace`, `Package.swift`, Swift targets). - The project is native Android/Kotlin (`build.gradle(.kts)` with Android plugins, `AndroidManifest.xml`, no React Native). - The project is a web-only framework (Next.js, Remix, etc.) without Expo/React Native. If native iOS/Android or web-framework signals are present, route to the matching skill instead of this one. ## Relationship to `clerk-expo-patterns` This skill covers flow selection and end-to-end auth setup (prebuilt vs custom). The `clerk-expo-patterns` skill at `skills/frameworks/clerk-expo-patterns/` covers Expo-specific recipes (SecureStore token cache, OAuth deep-link configuration, Expo Router protected routes, push notifications with user context). When both could apply, use this skill for the flow decision and overall setup, and load patterns from `clerk-expo-patterns` for the specific recipe. ## What Do You Need? | Task | Reference | |------|-----------| | Prebuilt AuthView / UserButton (fastest) | references/prebuilt.md | | Custom hook-driven auth flows (full control) | references/custom.md | ## Quick Start | Step | Action | |------|--------| | 1 | Confirm project type is Expo/React Native (not native iOS/Android or a web-only framework) | | 2 | Determine flow type (`prebuilt` or `custom`) and load the matching reference file | | 3 | Ensure a real Clerk publishable key exists (or ask developer) and wire it directly to `<ClerkProvider publishableKey={...}>` | | 4 | Ensure `@clerk/expo` is installed; if missing, install latest with `npx expo install @clerk/expo` | | 5 | Inspect installed `@clerk/expo` source (`node_modules/@clerk/expo/dist/` or `src/`) to understand component/hook behavior for the selected flow | | 6 | For custom flows: derive Frontend API URL from publishable key, then call `<frontendApiUrl>/v1/environment?_is_native=true` and build an internal enabled-factor checklist | | 7 | Follow the Expo quickstart (`https://clerk.com/docs/getting-started/quickstart`, Expo SDK tab) for required setup (config plugin, token cache, native build) | | 8 | Implement flow by following only the selected reference checklist | ## Decision Tree ```text User asks for Clerk in Expo/React Native | +-- Native iOS/Android or web-framework project detected? | | | +-- YES -> Do not use this skill; route to matching skill | | | +-- NO -> Continue | +-- Existing auth UI detected? | | | +-- Prebuilt AuthView/UserButton detected -> Load references/prebuilt.md | | | +-- Custom hook-based flow detected -> Load references/custom.md | | | +-- New implementation -> Ask developer prebuilt/custom, then load matching reference | +-- Ensure publishable key and direct ClerkProvider wiring | +-- Ensure @clerk/expo is installed and Expo config plugin is registered |