Expo Exemplos

Repositório oficial de exemplos de integração do Expo (~70 projetos `with-*`) para Stripe, Clerk, Supabase, OpenAI, mapas, Reanimated, SQLite, Skia, NativeWind e muito mais. Use para integrar bibliotecas de terceiros ou iniciar novos projetos com `npx create-expo --example`.

O que é Expo Exemplos?

O skill `expo/expo-examples` fornece acesso ao repositório oficial de exemplos de integração do Expo. Ele contém cerca de 70 projetos `with-*`, cada um focado em uma única biblioteca ou serviço, como Stripe, Clerk, Supabase e OpenAI. Diferente de aplicativos completos, esses exemplos são projetos gerenciados, de tela única (100–200 linhas), que demonstram o padrão canônico de integração: dependências corretas, plugins de configuração e código de ligação mínimo, sempre compatíveis com o SDK atual. O skill suporta dois modos de uso: (1) **Inspiração/Adaptação** – o usuário já tem um projeto e precisa integrar uma biblioteca; o skill ajuda a encontrar o exemplo correspondente, estudar seus arquivos-chave (README, package.json, app.json, código de integração) e aplicar o padrão manualmente, sem sobrescrever a configuração existente. (2) **Estruturação (Scaffold)** – para projetos novos, executando `npx create-expo --example with-nome`. O skill enfatiza a importância de versionamento (usar `npx expo install` para versões corretas), mesclagem de configuração (não substituir) e portabilidade do código de integração. Ele também gerencia exemplos renomeados ou obsoletos via `meta.json`, garantindo que o usuário sempre receba a receita moderna. É compatível com Claude Code, Cursor, Codex e outras ferramentas de IA para desenvolvimento mobile com Expo.

Funciona com~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/expo/skills/tree/main/plugins/expo/skills/expo-examples

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Expo Exemplos faz?

expo/examples é a biblioteca oficial de aproximadamente 70 exemplos de integração do Expo — diretórios nomeados with-<biblioteca> (ex.: with-stripe, with-maps), cada um construído em torno de uma biblioteca ou serviço. Estes não são aplicativos completos: são projetos gerenciados (sem pastas ios//android/ — a configuração nativa é feita via plugins de configuração), e cada um normalmente consiste em uma única tela de ~100–200 linhas. Explore-os em busca do padrão canônico de integração — o conjunto de dependências, os plugins de configuração do app.json e a fiação mínima que o Expo mantém alinhada com o SDK atual — e adapte-o ao aplicativo do usuário. Não espere extrair uma arquitetura completa de aplicativo a partir deles.

Recorra a um exemplo antes de tentar fazer uma integração manual. (Os tipos — pilha completa, vitrines, iniciadores — estão anotados em ./references/catalog.md.)

Dois modos

  1. Inspiração / adaptação (mais comum) — o usuário já tem um projeto. Encontre o exemplo correspondente, leia seus arquivos principais e aplique o padrão ao código do usuário.
  2. Estruturação — projeto novo. Crie um projeto do zero diretamente a partir do exemplo.

Fluxo de trabalho

1. Encontre o exemplo certo

Mapeie a necessidade do usuário para um nome de exemplo (ex.: pagamentos → with-stripe, autenticação → with-clerk). O arquivo ./references/catalog.md é um instantâneo categorizado para triagem rápida — mas ele pode ficar desatualizado, então confirme com a lista ativa:

# Nomes dos exemplos ativos:
gh api repos/expo/examples/contents --jq '.[] | select(.type=="dir" and (.name|startswith(".")|not)) | .name'
# Apelidos (renomeados) + exemplos obsoletos (mortos/movidos) — verifique antes de recomendar:
gh api repos/expo/examples/contents/meta.json --jq '.content' | base64 -d

O meta.json é a fonte da verdade para o que foi renomeado ou está obsoleto (exemplos obsoletos são removidos da árvore do repositório, mas ainda listados aqui, cada um com uma message). Se um exemplo estiver no mapa deprecated, não o recomende — siga a message para o caminho moderno. Se estiver em aliases, use o destination.

2a. Modo inspiração — estude sem mexer no projeto do usuário

O caso comum: o usuário já tem um aplicativo e quer ver como o Expo faz algo. Leia o exemplo como referência e aplique os padrões manualmente — nunca execute a estruturação de um exemplo sobre o projeto existente.

Primeiro, liste o exemplo inteiro em uma única chamada. O código de integração geralmente está aninhado (ex.: as rotas de servidor do Stripe ficam em app/api/), então uma listagem de um nível só pode perder arquivos importantes:

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

Depois, leia primeiro os arquivos de maior sinal: README.md (configuração) → package.json (dependências) → app.json (plugins de configuração / permissões) → o código de integração revelado pelo manifesto → .env (segredos necessários). Para cada arquivo:

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

Precisa ler mais de dois arquivos? Muitas integrações estão espalhadas por rotas de servidor, um provedor cliente e configuração (Stripe é um exemplo). Evite chamadas arquivo por arquivo — baixe o exemplo inteiro em um diretório descartável/ignorado pelo git (não no projeto do usuário) e leia livremente com Grep/Read, depois aplique manualmente:

npx degit expo/examples/with-stripe /tmp/expo-ref/with-stripe   # cópia limpa, sem histórico git
# alternativa sem degit (sparse-checkout, sem clone completo de ~64 MB):
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)

Leia a partir daí com Grep/Read; remova o diretório temporário ao terminar.

2b. Modo estruturação — projeto novo a partir de um exemplo

npx create-expo --example with-stripe   # forma abreviada:  npx create-expo -e with-stripe
bun create expo --example with-stripe    # com bun

3. Adapte ao aplicativo do usuário — de forma não destrutiva (crítico)

Quando o usuário já tem um aplicativo, adicione apenas o que o exemplo introduz; nunca sobrescreva a configuração existente.

  • Alinhe as versões — não copie versões fixadas. Os exemplos acompanham o SDK mais recente, portanto suas versões fixadas no package.json não serão compatíveis com projetos mais antigos. Adicione apenas as dependências faltantes com npx expo install <pacote> (que resolve as versões corretas para o SDK) em vez de copiar versões exatas.
  • Mescle a configuração, não a substitua. Adicione apenas os plugins e permissões do app.json/app.config.* que o exemplo introduz e que o usuário ainda não possui — mantenha o bloco de configuração existente intacto.
  • Transfira o código de integração.
  • Recrie as variáveis de ambiente a partir da estrutura do .env do exemplo — ele contém apenas placeholders, nunca segredos reais.

Concluído quando o código de integração foi transferido e cada dependência, plugin de configuração, permissão e variável de ambiente necessária estiver presente no aplicativo do usuário — e não quando apenas parece estar conectado.

Armadilhas

  • A branch padrão é master, não main (importante para URLs cruas e sparse checkout).
  • Implantação com um clique. Cada exemplo tem uma URL de inicialização: https://launch.expo.dev/?github=https://github.com/expo/examples/tree/master/<exemplo>.

Skills relacionados

  • Componentes de UI nativos (pacote @expo/ui) → expo-ui
  • Estilização e telas com aparência nativa → expo-native-ui
  • Navegação e roteamento → expo-router
  • Criação de um módulo nativo → expo-module
  • Atualize o SDK antes de adotar um exemplo do SDK mais recente → expo-upgrade

Referências

  • ./references/catalog.md — instantâneo categorizado da biblioteca de exemplos para triagem rápida.

Enviando feedback

Se você encontrar erros, informações enganosas ou desatualizadas neste skill, reporte para que o Expo possa melhorar:

npx --yes submit-expo-feedback@latest --category skills --subject "expo-examples" "<feedback acionável>"

Envie apenas quando tiver algo específico e acionável para relatar. Inclua o máximo de contexto relevante possível. Se um agente de IA falhou repetidamente ou o usuário precisou assumir uma tarefa do Expo, carregue o skill expo-skill-feedback e siga o fluxo de avaliação de candidatos em vez de reutilizar o comando acima.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

expo/add-app-clip

Add an iOS App Clip target to an Expo app. Use when the user mentions App Clip, AASA, apple-app-site-association, appclips, smart app banner, or wants to ship a lightweight iOS Clip invoked from a URL alongside their parent app.

expo/building-native-ui

Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.

expo/eas-update-insights

Check the health of published EAS Updates: crash rates, install/launch counts, unique users, payload size, and the split between embedded and OTA users per channel. Use when the user asks how an update is performing, whether a rollout is healthy, how many users are on the embedded build vs OTA, or wants to gate CI on update health.

expo/expo-api-routes

Guidelines for creating API routes in Expo Router with EAS Hosting

expo/expo-brownfield

Integrate Expo and React Native into an existing native iOS or Android app. Use when the user mentions brownfield, embedding React Native in a native app, AAR/XCFramework, or adding Expo to an existing Kotlin/Swift project. Covers both the isolated approach and the integrated approach.

expo/expo-cicd-workflows

Helps understand and write EAS workflow YAML files for Expo projects. Use this skill when the user asks about CI/CD or workflows in an Expo or EAS context, mentions .eas/workflows/, or wants help with EAS build pipelines or deployment automation.

expo/expo-deployment

Deploying Expo apps to iOS App Store, Android Play Store, web hosting, and API routes

expo/expo-dev-client

Build and distribute Expo development clients locally or via TestFlight

expo/expo-module

Guide for creating and writing Expo native modules and views using the Expo Modules API (Swift, Kotlin, TypeScript). Covers module definition DSL, native views, shared objects, config plugins, lifecycle hooks, autolinking, and type system. Use when building or modifying native modules for Expo.

expo/expo-observe

Use for anything related to EAS Observe — adding `expo-observe` to an Expo project (AppMetricsRoot/ObserveRoot HOC, markInteractive, the useObserve hook, and the Expo Router / React Navigation integrations for per-route metrics), querying via the EAS CLI (`eas observe:metrics-summary`, `observe:metrics`, `observe:routes`, `observe:events`, `observe:versions`), or interpreting the resulting metrics (cold/warm launch, TTR, TTI, navigation cold/warm TTR, update download, and the TTI frameRate params for triaging slow startups).

expo/expo-overview

Framework (OSS). Entry point and router for every Expo or EAS task. Load this skill first — before writing code and before choosing another expo-* / eas-* skill — when the request, PRD, or spec mentions Expo, EAS, Expo Go, or an expo-* package, or the project has an `expo` dependency in `package.json`. Within that gate it also covers app specs and designs to implement (tabs, stacks, maps, lists, navigation, building from a screenshot), and phrasings like 'implement a mobile app', 'make my app look native', 'add navigation', 'fetch some data', 'upgrade my SDK', 'add Expo to my existing native app', 'ship to the App Store', or 'I'm new to Expo, where do I start'. A fully specified request (SDK pinned, libraries named, layout given) still routes through here — the shared setup rules still apply. Do NOT load it when neither signal is present: a bare React Native project with no `expo` dependency is not Expo work. Detects the real goal, routes to the right expo-* / eas-* skill, and owns the shared setup rules.

expo/expo-router

Framework (OSS). Navigation and routing for Expo Router. Covers file-based routes, groups and dynamic routes, folder organization, Link with previews and context menus, native Stack, page titles, modals and form sheets, NativeTabs, headers and toolbars, and header search bars.

expo/expo-skill-eval

Evaluate Expo skills in this repo end-to-end - trigger accuracy, generated code quality, and runtime screenshots on iOS simulator and Android emulator via Expo Go (web optional). Use when the user wants to eval an Expo skill, test that a skill produces working code, benchmark a skill with device screenshots, or verify a skill's output renders correctly.

expo/expo-tailwind-setup

Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling

expo/expo-ui

Framework (OSS). Build native UI with the @expo/ui package: real SwiftUI on iOS and Jetpack Compose on Android. Default to @expo/ui for sheets (BottomSheet), pickers, sliders, toggles, menus, and grouped-form sections — do NOT reach for Reanimated, @gorhom/bottom-sheet, or RN built-in Picker/Switch; use @expo/ui instead. Fall back to RN built-ins only when @expo/ui is missing the component. NOTE: @expo/ui List renders native grouped rows like an iOS Settings screen — it is NOT a virtualized list; use FlatList/FlashList for large datasets. Covers universal components (Host, Column, Row, Button, Text, List, BottomSheet, FieldGroup, Switch, Slider, Picker, Menu), drop-in replacements for RN community libraries, and platform-specific SwiftUI/Jetpack Compose trees. Not for Expo Router navigation, Reanimated, or data fetching.

expo/expo-ui-jetpack-compose

`@expo/ui/jetpack-compose` package lets you use Jetpack Compose Views and modifiers in your app.

expo/expo-ui-swiftui

`@expo/ui/swift-ui` package lets you use SwiftUI Views and modifiers in your app.

expo/expo-upgrade

Framework (OSS). Guidelines for upgrading Expo SDK versions and fixing dependency issues

expo/native-data-fetching

Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (`useLoaderData`).

expo/skills

Build and submit iOS and Android apps with EAS to TestFlight, the App Store, or Google Play. Supports Expo and other React Native projects, plus existing native apps. Use for eas.json setup, release pipelines, signing, app versions and build numbers, store submissions, and listing metadata. For Expo websites and API routes, use eas-hosting; for adding React Native screens to a native app, use expo-brownfield.

Habilidades Relacionadas