AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The expo/examples repository provides a collection of approximately 70 managed project examples, each demonstrating the canonical integration pattern for a specific library or service. These examples are designed to show the correct dependency set, configuration plugins, and minimal wiring required for Expo projects. Users can either scaffold a new project directly from an example or study the integration patterns to apply them to an existing application.
What it does
- Provides canonical integration patterns for over 70 third-party libraries and services.
- Supports scaffolding new Expo projects directly from an official example.
- Allows for non-destructive adaptation of integration patterns into existing projects.
- Includes examples for authentication, payments, backend services, UI, and more.
- Maintains version-matched configurations compatible with the current Expo SDK.
When to use it
- When you need to integrate a third-party library and want to see the official Expo-recommended pattern.
- When starting a new project that requires a specific third-party service integration.
- When you need to verify the correct configuration plugins or dependencies for a library.
- When you want to avoid hand-rolling an integration from scratch.
Advantages
- Reduces setup time by providing pre-configured, working integration patterns.
- Ensures compatibility by following Expo's official, version-matched standards.
- Helps avoid common pitfalls in native configuration and dependency management.
- Provides a clear reference for both client-side and server-side integration code.
Usage examples
- “How do I integrate Stripe into my existing Expo app?”
- The agent will identify the with-stripe example, extract the necessary dependencies and configuration plugins, and guide you on how to port the integration code into your project.
- “Scaffold a new Expo project with Tailwind CSS support.”
- The agent will use the with-tailwindcss example to initialize a new project, ensuring all necessary Tailwind and NativeWind configurations are correctly applied.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/expo/expo-examples/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip expo-examples.zip -d .agents/skills
Documentation by Expo
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
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.
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 -dmeta.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.tsReading 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 bun3. 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.jsonpins won't match an older project. Add only the missing deps withnpx 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
.envshape — 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, notmain(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>.
Related skills
Native UI components (@expo/ui package) →
expo-uiStyling and native-feeling screens →
expo-native-uiNavigation and routing →
expo-routerAuthoring a native module →
expo-moduleUpgrade the SDK before adopting a latest-SDK example →
expo-upgrade
References
./references/catalog.md— categorized snapshot of the example library for fast triage.
Submitting Feedback
If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:
npx --yes @expo/agent-cli@latest feedback --category skills --subject "expo-examples" "<actionable feedback>"Only submit when you have something specific and actionable to report. Include as much relevant context as possible.
If an agent repeatedly fails at an Expo task or the user has to step in, submit a brief report of the task, expected result, and what went wrong using --category evals and the relevant Expo package or command as --subject.
Files
- ATTRIBUTION.mdAdded by AutoGineer813 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md6.6 KiB
- agents/openai.yaml399 B
- references/catalog.md4.3 KiB
references/catalog.md
Example catalog (snapshot)
A categorized view of expo/examples for fast triage. Each entry is a single-concern integration demo (one library/service, managed project, usually one screen) — not a full app. This snapshot drifts — the live repo is the source of truth. Confirm the exact name against gh api repos/expo/examples/contents and check meta.json for aliases/deprecations (see SKILL.md step 1) before recommending or scaffolding.
Use any name with npx create-expo --example <name> (scaffold) or inspect it via gh api repos/expo/examples/contents/<name>/<file>.
Most are single-screen integrations; a few differ:
Full-stack (include Expo Router
+apiroutes — a backend too):with-stripe,with-clerk,with-better-auth,with-openai,with-router-ai,with-graphql,with-s3,with-satori.Larger showcases:
with-shadcn,with-router-tv,with-router-menus,with-react-navigation,with-webgpu.Starters (not integrations):
blank,stickersmash.
Auth & identity
with-clerk— Clerk authenticationwith-auth0— Auth0 loginwith-better-auth— Better Authwith-magic— Magic passwordless authwith-facebook-auth— Facebook loginwith-firebase-saml-login— Firebase SAML SSO
Payments
with-stripe— Stripe payments (native + web)
Backend, data & storage
with-convex— Convex realtime backendwith-legend-state-supabase— Supabase + Legend-State syncwith-firebase-storage-upload— Firebase Storage uploadswith-aws-storage-upload,with-s3— AWS / S3 file uploadswith-apollo,with-graphql— GraphQL clientswith-formdata-image-upload— multipart image upload
Local database & state
with-sqlite— expo-sqlitewith-libsql— libSQL / Tursowith-tinybase— TinyBase local-first storewith-zustand— Zustand state management
Navigation & routing
with-router— Expo Router basicswith-react-navigation— React Navigation (stacks + tabs)with-drawer-navigation— drawer navigatorwith-router-menus— native context menus with Routerwith-router-uniwind— Router + Uniwind stylingwith-router-ai— Router + AI chat UIwith-router-tv— Router on TVwith-react-router— React Router (web)
Styling & UI
with-tailwindcss— Tailwind / NativeWindwith-styled-components— styled-componentswith-shadcn— shadcn-style componentswith-moti— Moti animationswith-custom-font— custom fontswith-svg— react-native-svgwith-icons— icon setswith-splash-screen— custom splash screenwith-video-background— full-screen video background
Animation & graphics
with-reanimated— Reanimatedwith-skia— React Native Skia 2D graphicswith-three,with-react-three-fiber— three.js / R3F 3Dwith-webgpu— WebGPUwith-processing— Processing-style sketcheswith-react-flow— node/flow diagramswith-victory-native— charts
AI & ML
with-openai— OpenAI APIwith-router-ai— AI chat app with Expo Routerwith-google-vision— Google Cloud Visionwith-tfjs-camera— TensorFlow.js on the camera
Media & device
with-camera— expo-camerawith-maps— react-native-mapswith-webrtc— WebRTCwith-pdf— render / view PDFs
Web & rendering
with-nextjs— Next.js + Expowith-rsc— React Server Componentswith-react-strict-dom— React Strict DOMwith-react-compiler— React Compilerwith-html— render raw HTMLwith-satori— OG image generation with Satoriwith-workbox— service worker / PWAwith-webbrowser-redirect— expo-web-browser auth redirect
Platform: TV, widgets
with-tv— Apple TV / Android TVwith-widgets— iOS / Android home-screen widgets
Tooling, testing & monorepo
with-typescript— TypeScript baselinewith-yarn-workspaces— Yarn monorepowith-storybook— Storybookwith-maestro— Maestro E2E testswith-sentry— Sentry error monitoringwith-socket-io— Socket.IO realtimewith-github-remote-build-cache-provider— remote build cache on GitHub
Starters
blank— minimal appstickersmash— the tutorial app
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Declares allowed tools, Needs network access, Needs a command-line tool, Needs Node.js
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Expo
- Publisher
- Expo (Official)
- Source
- expo/skills · plugins/expo/skills/expo-examples · commit a9e5bd3
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from plugins/expo/LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Expo or Expo.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download expo-examples.zip