Catalog
expo/expo-examples

expo

expo-examples

Framework (OSS). Expo's official example projects - the expo/examples repo of ~70 `with-*` integrations (Stripe, Clerk, Supabase, OpenAI, maps, Reanimated, SQLite, Skia, NativeWind, and more). Use when integrating a third-party library or service into an existing Expo app and you want the canonical, version-matched pattern to adapt, or when scaffolding a new project from one with `npx create-expo --example`.

global
Allowed Tools
ReadBash(ghapi:*)Bash(gitclone:*)Bash(npxcreate-expo:*)Bash(npxdegit:*)Bash(buncreate:*)
New~1.5k
v1.0Saved Jul 11, 2026

Expo Examples

expo/examples is Expo's official library of ~70 integration examples — directories named with-<library> (e.g. with-stripe, with-maps), each built around one library or service. These are not full apps: they're managed projects (no ios//android/ dirs — native setup is via config plugins), and the typical one is a single screen of ~100–200 lines. Mine them for the canonical integration pattern — the dependency set, app.json config plugins, and minimal wiring Expo maintains against the current SDK — and adapt that into the user's app. Don't expect to lift an application architecture from them.

Reach for an example before hand-rolling an integration. (Kinds — full-stack, showcases, starters — are noted in ./references/catalog.md.)

Two modes

  1. Inspiration / adapt (most common) — the user already has a project. Find the matching example, read its key files, and apply the pattern to their code.
  2. Scaffold — greenfield. Start a fresh project directly from the example.

Workflow

1. Find the right example

Map the user's need to an example name (e.g. payments → with-stripe, auth → with-clerk). ./references/catalog.md is a categorized snapshot for fast triage — but it drifts, so confirm against the live list:

# Live example names:
gh api repos/expo/examples/contents --jq '.[] | select(.type=="dir" and (.name|startswith(".")|not)) | .name'
# Aliases (renamed) + deprecated (dead/moved) examples — check before recommending:
gh api repos/expo/examples/contents/meta.json --jq '.content' | base64 -d

meta.json is the source of truth for what's renamed or dead (deprecated examples are removed from the repo tree but still listed here, each with a message). If an example is in its deprecated map, don't recommend it — follow the message to the modern path. If it's in aliases, use the destination.

2a. Inspiration mode — study without touching the user's project

The common case: the user already has an app and wants to see how Expo does something. Read the example as reference and apply the patterns by hand — never scaffold an example on top of their project.

First, list the whole example in one call. Integration code is often nested (e.g. Stripe's server routes live in app/api/), so a one-level listing misses the important files:

gh api 'repos/expo/examples/git/trees/master?recursive=1' \
  --jq '.tree[].path | select(startswith("with-stripe/"))'

Then read the high-signal files first: README.md (setup) → package.json (deps) → app.json (config plugins / permissions) → the integration code the manifest revealed → .env (required secrets). Per file:

gh api repos/expo/examples/contents/with-stripe/utils/stripe-server.ts --jq '.content' | base64 -d
# No gh? Raw URL (branch is master):
curl -s https://raw.githubusercontent.com/expo/examples/master/with-stripe/utils/stripe-server.ts

Reading more than a couple of files? Many integrations are spread across server routes, a client provider, and config (Stripe is). Skip the per-file calls — pull the whole example into a throwaway/gitignored dir (not the user's project) and read it freely with Grep/Read, then apply by hand:

npx degit expo/examples/with-stripe /tmp/expo-ref/with-stripe   # clean copy, no git history
# fallback without degit (sparse-checkout, no full ~64 MB clone):
git clone --depth 1 --filter=blob:none --sparse https://github.com/expo/examples.git /tmp/expo-ref/examples \
  && (cd /tmp/expo-ref/examples && git sparse-checkout set with-stripe)

Read from there with Grep/Read; delete the scratch dir when done.

2b. Scaffold mode — new project from an example

npx create-expo --example with-stripe   # short form:  npx create-expo -e with-stripe
bun create expo --example with-stripe    # with bun

3. Adapt into the user's app — non-destructively (critical)

When the user already has an app, add only what the example introduces; never overwrite their setup.

  • Version-align — don't copy pinned versions. Examples track the latest SDK, so their package.json pins won't match an older project. Add only the missing deps with npx expo install <pkg> (it resolves SDK-correct versions) instead of copying exact versions.
  • Merge config, don't replace it. Add only the app.json/app.config.* plugins and permissions the example introduces that the user lacks — keep their existing config block intact.
  • Port the integration code.
  • Recreate env vars from the example's .env shape — it holds placeholders, never working secrets.

Done when the integration code is ported and every dependency, config plugin, permission, and env var it needs is accounted for in the user's app — not when it merely looks wired up.

Gotchas

  • Default branch is master, not main (matters for raw URLs and sparse checkout).
  • Single-click deploy. Every example has a launch URL: https://launch.expo.dev/?github=https://github.com/expo/examples/tree/master/<example>.
  • Tailwind / NativeWind styling → expo-tailwind-setup
  • Native UI components (@expo/ui package) → expo-ui
  • Styling and native-feeling screens → expo-native-ui
  • Navigation and routing → expo-router
  • Authoring a native module → expo-module
  • Upgrade the SDK before adopting a latest-SDK example → expo-upgrade

References

  • ./references/catalog.md — categorized snapshot of the example library for fast triage.
Files3
3 files · 5.8 KB

Select a file to preview

Overall Score

86/100

Grade

A

Excellent

Safety

88

Quality

86

Clarity

90

Completeness

82

Summary

This skill guides agents to explore Expo's official example library (expo/examples repo) to find integration patterns for third-party services. The skill provides two primary workflows: (1) inspiration/adapt mode, where developers study example code and apply patterns to existing projects, and (2) scaffold mode, where a new project is generated directly from an example. The skill emphasizes reading examples as reference and applying patterns by hand, never overwriting user code, and includes guidance on version-alignment and non-destructive config merging.

Static Analysis Findings

1 finding

Patterns detected by deterministic static analysis before AI scoring. Hover over any finding code for detailed information and remediation guidance.

Credential Exposure
SEC-020Direct .env File Access2x in 1 file

Direct .env file access

SKILL.md.env2x

Detected Capabilities

GitHub API queries (gh api)Git operations (clone, sparse-checkout)Project scaffolding (npx create-expo, bun create)File reading (Read, Grep)Reference documentation parsingDirectory listing and inspection

Trigger Keywords

Phrases that MCP clients use to match this skill to user intent.

integrate third-party libraryadapt expo examplestripe payments setupclerk authenticationscaffold new projectfind integration patternexpo with-stripesupabase integration

Risk Signals

INFO

SEC-020: Direct .env file access — skill instructs reading .env from examples to understand required secrets shape

SKILL.md § 2a, line: 'Then read the high-signal files first: ... → `.env` (required secrets)'
INFO

SEC-020: Duplicate detection — .env mentioned twice in static scan

SKILL.md § 2a (two matches in same section)

Referenced Domains

External domains referenced in skill content, detected by static analysis.

github.comlaunch.expo.devraw.githubusercontent.com

Use Cases

  • Integrate Stripe payments into an Expo app
  • Add Clerk authentication to an existing Expo project
  • Implement SQLite local database
  • Set up Supabase backend with Expo
  • Scaffold a new Expo app from a with-* example
  • Find the canonical pattern for integrating react-native-maps
  • Review Reanimated integration best practices
  • Adapt OpenAI API integration from an official example

Quality Notes

  • Excellent clarity: two well-distinguished modes (adapt vs. scaffold) with separate workflows. Clear decision tree for choosing the right example (catalog snapshot + live verification via gh api + meta.json).
  • Strong guidance on non-destructive integration: explicit warnings against overwriting user setup ('add only what the example introduces'), version-alignment via `npx expo install`, and config merging strategies.
  • Good practical examples: shell commands shown for all major tasks (listing examples, reading files, sparse-checkout, scaffolding). Branch defaults and gotchas section clarifies common pitfalls (default branch is master, not main).
  • Comprehensive scope boundaries: skill explicitly scopes to read-only operations for inspiration mode and scoped scaffolding for greenfield projects. Related skills section prevents scope creep (Tailwind, Router, native modules are separate skills).
  • Catalog reference file (references/catalog.md) is well-organized and categorized, though skill correctly notes it 'drifts' and requires live verification. Meta.json deprecation checking is documented as source of truth.
  • Minor: 'Done when' success criteria is clear (integration code ported, all deps/plugins/env vars accounted for) but could benefit from a brief checklist format for easier reference.
Model: claude-haiku-4-5-20251001Analyzed: Jul 11, 2026

Reviews

Add this skill to your library to leave a review.

No reviews yet

Be the first to share your experience.

Add expo/expo-examples to your library

Command Palette

Search for a command to run...