Agent skill

Clerk Expo Patterns

by adrianhajdin in adrianhajdin/react-native-lingua

Expo / React Native patterns with Clerk — SecureStore token cache, OAuth deep linking, useAuth in native, Expo Router protected routes, push notifications with user context.

MITAuto-check passedMobile

Install Clerk Expo Patterns

skills CLI
$ npx skills add adrianhajdin/react-native-lingua --skill clerk-expo-patterns -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install adrianhajdin/react-native-lingua clerk-expo-patterns --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/adrianhajdin/react-native-lingua.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/clerk-expo-patterns .claude/skills/clerk-expo-patterns && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
clerk-expo-patterns
GitHub stars
152
Token cost
~1.2k tokens
SKILL.md length
230 words
Files
13 (incl. references)
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

Expo / React Native patterns with Clerk — SecureStore token cache, OAuth deep linking, useAuth in native, Expo Router protected routes, push notifications with user context.

  • Clerk react native
  • SKILL.md covers What Do You Need?, Mental Model, Minimal Setup and Built-in Token Cache, plus 7 more sections
  • Calls npx; needs EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY
  • SecureStore token cache

What it does

Clerk Expo Patterns is an agent skill from adrianhajdin/react-native-lingua. Expo / React Native patterns with Clerk — SecureStore token cache, OAuth deep linking, useAuth in native, Expo Router protected routes, push notifications with user context. Triggers on: expo clerk, clerk react native, SecureStore token cache, expo router auth, OAuth deep link clerk, mobile auth clerk.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 19 other files, including reference files (for example `evals/evals.json`, `references/oauth-deep-linking.md` and `references/protected-routes.md`). Compatibility notes: Requires Expo CLI and expo-secure-store package

It sits in Mobile, covering Cross-platform mobile apps. It works with Expo and React Native. The repository describes itself as: React Native Duolingo clone with a real-time AI voice teacher. Built with Expo, Stream Voice Agents, Clerk auth, and NativeWind for a complete, interactive mobile learning… The licence is MIT.

When your agent uses it

  • Clerk react native
  • SecureStore token cache
  • Expo router auth
  • OAuth deep link clerk

Example prompts

  • “/clerk-expo-patterns”

Requirements

  • Node.js
  • A credential in EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY
  • Compatibility (from SKILL.md): Requires Expo CLI and expo-secure-store package
  • Pre-approved tools (allowed-tools): WebFetch

What it can do on your machine

Read from SKILL.md and the folder at commit 7ddc202. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • WebFetch

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • clerk.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires Expo CLI and expo-secure-store package

    From compatibility in the SKILL.md frontmatter.

Context cost

Clerk Expo Patterns loads about 1.2k tokens when it runs, and up to ~2.9k if it reads all its reference files. Until then it costs about 81 tokens; SKILL.md has 230 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~81
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from adrianhajdin/react-native-lingua at commit 7ddc202, republished under its MIT licence (© adrianhajdin). 230 words, ~1,222 tokens.

Download SKILL.mdSave it as .claude/skills/clerk-expo-patterns/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.
name
clerk-expo-patterns
description
Expo / React Native patterns with Clerk — SecureStore token cache, OAuth deep linking, useAuth in native, Expo Router protected routes, push notifications with user context. Triggers on: expo clerk, clerk react native, SecureStore token cache, expo router auth, OAuth deep link clerk, mobile auth clerk.
allowed-tools
WebFetch
compatibility
Requires Expo CLI and expo-secure-store package
license
MIT
metadata.author
clerk
metadata.version
1.0.0

Expo Patterns

SDK: @clerk/expo v3+. Requires Expo 53+, React Native 0.73+.

What Do You Need?

TaskReference
Persist tokens with SecureStorereferences/token-storage.md
OAuth (Google, Apple, GitHub)references/oauth-deep-linking.md
Protected screens with Expo Routerreferences/protected-routes.md
Push notifications with user datareferences/push-notifications.md

Mental Model

Clerk stores the session token in memory by default. In native apps:

  • SecureStore — encrypt token in device keychain (recommended for production)
  • tokenCache — prop on <ClerkProvider> that provides custom storage
  • useAuth — same API as web, works in any component
  • OAuth — requires useSSO + deep link scheme configured in app.json

Minimal Setup

app/_layout.tsx
tsx
import { ClerkProvider } from '@clerk/expo'
import { tokenCache } from '@clerk/expo/token-cache'
import { Stack } from 'expo-router'

const publishableKey = process.env.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY!

export default function RootLayout() {
  return (
    <ClerkProvider publishableKey={publishableKey} tokenCache={tokenCache}>
      <Stack />
    </ClerkProvider>
  )
}

CRITICAL: Use EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY — not NEXT_PUBLIC_. Env vars inside node_modules are not inlined in production builds. Always pass publishableKey explicitly.

Built-in Token Cache

tsx
import { tokenCache } from '@clerk/expo/token-cache'

This uses expo-secure-store with keychainAccessible: AFTER_FIRST_UNLOCK. Install the peer dep:

bash
npx expo install expo-secure-store

Auth Hooks

tsx
import { useAuth, useUser, useSignIn, useSignUp, useClerk } from '@clerk/expo'

export function ProfileScreen() {
  const { isSignedIn, userId, signOut } = useAuth()
  const { user } = useUser()

  if (!isSignedIn) return <Redirect href="/sign-in" />
  return (
    <View>
      <Text>{user?.fullName}</Text>
      <Button title="Sign Out" onPress={() => signOut()} />
    </View>
  )
}

OAuth Flow (Google)

tsx
import { useSSO } from '@clerk/expo'
import * as WebBrowser from 'expo-web-browser'

WebBrowser.maybeCompleteAuthSession()

export function GoogleSignIn() {
  const { startSSOFlow } = useSSO()

  const handlePress = async () => {
    try {
      const { createdSessionId, setActive } = await startSSOFlow({
        strategy: 'oauth_google',
        redirectUrl: 'myapp://oauth-callback',
      })
      if (createdSessionId) await setActive!({ session: createdSessionId })
    } catch (err) {
      console.error(err)
    }
  }

  return <Button title="Continue with Google" onPress={handlePress} />
}

Org Switching

tsx
import { useOrganization, useOrganizationList } from '@clerk/expo'

export function OrgSwitcher() {
  const { organization } = useOrganization()
  const { setActive, userMemberships } = useOrganizationList()

  return (
    <View>
      <Text>Current: {organization?.name ?? 'Personal'}</Text>
      {userMemberships.data?.map(mem => (
        <Button
          key={mem.organization.id}
          title={mem.organization.name}
          onPress={() => setActive({ organization: mem.organization.id })}
        />
      ))}
    </View>
  )
}

Common Pitfalls

SymptomCauseFix
publishableKey undefined in prodUsing env var without EXPO_PUBLIC_Rename to EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY
Token lost on app restartNo tokenCachePass tokenCache from @clerk/expo/token-cache
OAuth redirect not workingMissing scheme in app.jsonAdd "scheme": "myapp" to app.json
WebBrowser.maybeCompleteAuthSessionNot calledCall it at the top level of the OAuth callback screen
useSSO not foundOld @clerk/expo versionuseSSO replaced useOAuth in v3+

Import Map

WhatImport From
ClerkProvider@clerk/expo
tokenCache@clerk/expo/token-cache
useAuth, useUser, useSignIn@clerk/expo
useSSO@clerk/expo
useOrganization, useOrganizationList@clerk/expo

See Also

  • clerk-setup - Initial Clerk install
  • clerk-custom-ui - Custom flows & appearance
  • clerk-orgs - B2B organizations

Docs

Expo SDK

© adrianhajdin, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 12 other files (references) in .agents/skills/clerk-expo-patterns of adrianhajdin/react-native-lingua.

  • SKILL.md
  • evals/evals.json
  • references/oauth-deep-linking.md
  • references/protected-routes.md
  • references/push-notifications.md
  • references/token-storage.md
  • templates/expo-basic-auth/app.json
  • templates/expo-basic-auth/app/(auth)/_layout.tsx
  • templates/expo-basic-auth/app/(home)/_layout.tsx
  • templates/expo-basic-auth/app/(home)/index.tsx
  • templates/expo-basic-auth/app/_layout.tsx
  • templates/expo-basic-auth/package.json
  • templates/expo-basic-auth/tsconfig.json

Open the folder on GitHubat commit 7ddc202

Compare with similar skills

Clerk Expo Patterns next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Clerk Expo Patterns compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Clerk Expo Patterns this skilladrianhajdin/react-native-lingua152—~1.2kAutomated safety check: PassMIT
React Native Best Practicesvercel-labs/openreview1.7k17 repos~1.1kAutomated safety check: PassMIT
Appllama App Design SkillAppllama/appllama-skills2.5k1 repos~5kAutomated safety check: PassMIT
Appllama UsageAppllama/appllama-skills2.5k1 repos~1.6kAutomated safety check: PassMIT
Release Sample SweepAtmosphere/atmosphere3.8k—~4.2kAutomated safety check: PassApache-2.0
App Store Reviewsafaiyeh/app-store-review-skill3681 repos~3.4kAutomated safety check: PassMIT

Similar skills

  • React Native Best Practices

    vercel-labs/openreview

    Official

    A prioritized rule set for React Native and Expo apps covering list performance, animation, navigation, UI patterns, state, rendering, monorepos and configuration.

    1.7k GitHub starsUsed in 17 repos~1.1k tokens
    MobileAuto-check passed
  • Appllama App Design Skill

    Appllama/appllama-skills

    Build native-feeling, benchmark-quality mobile app screens (Expo / React Native).

    2.5k GitHub starsUsed in 1 repo~5k tokens
    MobileAuto-check passed
  • Appllama Usage

    Appllama/appllama-skills

    Use the Appllama MCP (mcp.appllama.io) well — research real top-grossing mobile apps, their screens, flows, and UI elements, then build from what you learn.

    2.5k GitHub starsUsed in 1 repo~1.6k tokens
    MobileAuto-check passed
  • Release Sample Sweep

    Atmosphere/atmosphere

    Run the pre-release end-to-end sweep of every user-facing surface — the 33 samples under samples/ (booted from their packaged artifacts and driven in a real browser via chrome-devtools MCP), the…

    3.8k GitHub stars~4.2k tokensUpdated 2 days ago
    MobileAuto-check passed
  • App Store Review

    safaiyeh/app-store-review-skill

    Evaluates code against Apple's App Store Review Guidelines. An agent skill from safaiyeh/app-store-review-skill.

    368 GitHub starsUsed in 1 repo~3.4k tokens
    MobileAuto-check passed
  • Cali

    callstackincubator/cali

    Official

    A skill your agent uses when working in the Cali repository or when you need to run, extend, or debug the Cali CLI for mobile React Native and Expo workflows.

    991 GitHub stars~731 tokensUpdated 3 mo ago
    MobileAuto-check passed

More from adrianhajdin/react-native-lingua

  • Expo API Routes

    adrianhajdin/react-native-lingua

    Guidelines for creating API routes in Expo Router with EAS Hosting

    152 GitHub starsUsed in 6 repos~2.2k tokens
    Auto-check: notes
  • Stream React Native

    adrianhajdin/react-native-lingua

    Create, build, and integrate Stream Chat React Native apps in React Native Community CLI and Expo.

    152 GitHub stars~2.8k tokensUpdated 4 mo ago
    Auto-check passed
  • Stream Builder

    adrianhajdin/react-native-lingua

    Build a new app or add Stream products (Chat, Video, Feeds, Moderation) to an existing app.

    152 GitHub stars~5.4k tokensUpdated 4 mo ago
    Auto-check: notes
  • Stream CLI

    adrianhajdin/react-native-lingua

    Query Stream data and run CLI operations against Chat, Video, Feeds, and Moderation: list channels, list calls, show flagged messages, find users, query any Stream resource.

    152 GitHub stars~1.6k tokensUpdated 4 mo ago
    Auto-check: notes
  • Stream Docs

    adrianhajdin/react-native-lingua

    Search live Stream SDK documentation for Chat, Video, Feeds, and Moderation.

    152 GitHub stars~6.6k tokensUpdated 4 mo ago
    Auto-check passed
  • Stream

    adrianhajdin/react-native-lingua

    Stream router for Chat, Video, Feeds, and Moderation. An agent skill from adrianhajdin/react-native-lingua.

    152 GitHub stars~1.9k tokensUpdated 4 mo ago
    Auto-check passed

Categories

Questions about Clerk Expo Patterns

What does Clerk Expo Patterns do?

Expo / React Native patterns with Clerk — SecureStore token cache, OAuth deep linking, useAuth in native, Expo Router protected routes, push notifications with user context. Clerk Expo Patterns is an agent skill from adrianhajdin/react-native-lingua. Expo / React Native patterns with Clerk — SecureStore token cache, OAuth deep linking, useAuth in native, Expo Router protected routes, push notifications with user context.

When should I use Clerk Expo Patterns?

Clerk Expo Patterns fits situations like: clerk react native; secureStore token cache; expo router auth; OAuth deep link clerk.

How do I install Clerk Expo Patterns in Claude Code?

Run `npx skills add adrianhajdin/react-native-lingua --skill clerk-expo-patterns -a claude-code`. Or copy the skill folder (.agents/skills/clerk-expo-patterns in adrianhajdin/react-native-lingua) into .claude/skills/clerk-expo-patterns in your project. Claude Code loads it when a task matches its description.

How do I install Clerk Expo Patterns in Codex?

Run `npx skills add adrianhajdin/react-native-lingua --skill clerk-expo-patterns -a codex`. Or copy the skill folder (.agents/skills/clerk-expo-patterns in adrianhajdin/react-native-lingua) into .agents/skills/clerk-expo-patterns in your project. Codex loads it when a task matches its description.

Can I use Clerk Expo Patterns in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add adrianhajdin/react-native-lingua --skill clerk-expo-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/clerk-expo-patterns, .gemini/skills/clerk-expo-patterns, .github/skills/clerk-expo-patterns and .opencode/skills/clerk-expo-patterns in your project.

What does Clerk Expo Patterns need to run?

Going by SKILL.md and its folder, Clerk Expo Patterns needs the command-line tools its instructions call (npx) and credentials named EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY. Our summary lists: Node.js; A credential in EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY. Its frontmatter pre-approves these tools: WebFetch. Compatibility (from SKILL.md): Requires Expo CLI and expo-secure-store package.

Does Clerk Expo Patterns access the network?

SKILL.md names 1 domain. As links in the text: clerk.com. This is read from the text; nothing was executed.

Is Clerk Expo Patterns safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Clerk Expo Patterns use?

Clerk Expo Patterns is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Clerk Expo Patterns use?

About 1.2k tokens (SKILL.md is roughly 4.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.7k tokens, read only when the agent opens those files.

What are the alternatives to Clerk Expo Patterns?

Skills that share tags, products or a category with Clerk Expo Patterns: React Native Best Practices (vercel-labs/openreview, 1.7k stars), Appllama App Design Skill (Appllama/appllama-skills, 2.5k stars), Appllama Usage (Appllama/appllama-skills, 2.5k stars) and Release Sample Sweep (Atmosphere/atmosphere, 3.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Clerk Expo Patterns?

adrianhajdin (a GitHub user) maintains it in adrianhajdin/react-native-lingua, which has 152 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on May 15, 2026.

Source: adrianhajdin/react-native-lingua on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.