O create-expo-app envia cinco templates oficiais - cada um fixa o Expo SDK 57 quando você passa @sdk-57. Escolher o iniciador errado custa dias de migração; esta página mapeia cada template para o formato do produto que ele se encaixa.
Cartão de receita de referência rápida - pronto para copiar e colar.
# Padrão da equipe - app multi-tela com Expo Router + TypeScriptnpx create-expo-app@latest ShopApp --template default@sdk-57 --yes# Iniciador de navegação com abas primeiro (escopo similar ao default)npx create-expo-app@latest ShopApp --template tabs@sdk-57 --yes# Pico mínimo - sem router, TypeScript habilitadonpx create-expo-app@latest Spike --template blank-typescript@sdk-57 --yes# Diretórios nativos no primeiro dia - executa prebuild durante a geraçãonpx create-expo-app@latest NativeDay1 --template bare-minimum@sdk-57 --yescd ShopApp && npx expo-doctor
Quando usar isso:
Escolher um iniciador antes do primeiro commit de produção - trocas de template são dolorosas assim que a navegação e os diretórios nativos criam raízes.
Padronizar a escolha de template entre equipes para que cada novo repositório inicie com os mesmos scripts e layout de pastas.
Decidir se você precisa de bare-minimum agora ou pode permanecer gerenciado e executar npx expo prebuild mais tarde.
Auditar uma geração acidental do SDK 54 - compare package.json com o template que você pretendia.
Um único script codifica a política da organização - engenheiros passam default, tabs, blank-typescript, ou bare-minimum; o sufixo @sdk-57 nunca é opcional.
Asserções de versão pós-geração capturam desvios do SDK antes do início do trabalho de funcionalidade.
expo-doctor e tsc --noEmit como portões obrigatórios após cada escolha de template.
default@sdk-57 envia roteamento baseado em arquivos sob app/ - o layout que você estende para navegação de produção.
Gerar sem @sdk-57 - Durante a transição do SDK 57, create-expo-app@latest sem template pode criar o SDK 54 para compatibilidade com Expo Go em dispositivos físicos. Correção: Passe --template default@sdk-57 (ou seu template escolhido com o sufixo) para novo trabalho de produção.
Tratar tabs e default como fundamentalmente diferentes - Ambos enviam Expo Router e TypeScript com contagens de arquivos semelhantes. Equipes perdem tempo debatendo-os. Correção: Escolha um em toda a organização; a diferença é o layout inicial, não a capacidade.
Escolher bare-minimum "por via das dúvidas" - Prebuild commita android/ e ios/, aumentando a superfície de conflitos de merge e atrasando upgrades gerenciados. Correção: Comece com default@sdk-57; execute npx expo prebuild quando os diretórios nativos forem realmente necessários.
Permanecer no blank quando o app cresce além de uma tela - Engenheiros adicionam React Navigation ao App.tsx e acabam com uma árvore não padrão. Correção: Migre para Expo Router cedo ou comece com default@sdk-57.
Assumir que os templates incluem gerenciamento de estado ou camadas de API - Nenhum template envia Redux, TanStack Query ou pastas de funcionalidade. Correção: Adicione a arquitetura após a geração; veja Estrutura de Pastas para Funcionalidades.
Misturar estilos de entrada de template - default usa app/_layout.tsx; blank-typescript usa App.tsx. Copiar código de rota entre eles sem reestruturação falha. Correção: Combine imports e pontos de entrada com o template que você escolheu.
Pular expo-doctor após a seleção do template - Metadados do template podem resolver peers incompatíveis de módulos nativos. Correção: Execute npx expo-doctor antes do primeiro PR de funcionalidade.
Cinco templates oficiais: default, tabs, blank, blank-typescript e bare-minimum. Adicione @sdk-57 para fixar o Expo SDK 57 no momento da geração.
Qual template a maioria das equipes deve escolher?
default@sdk-57. Inclui Expo Router, TypeScript e os scripts recomendados do Expo CLI. Use blank-typescript@sdk-57 para picos mínimos e bare-minimum@sdk-57 apenas quando precisar de diretórios nativos imediatamente.
Qual a diferença entre default e tabs?
Ambos visam apps multi-tela com Expo Router e TypeScript. default é o iniciador de propósito geral; tabs enfatiza a estrutura de navegação de abas na árvore app/ gerada. Para a maioria das equipes, eles são intercambiáveis - padronize em um.
Quando devo escolher blank-typescript?
Quando você precisa de um app mínimo tipado sem navegação configurada - picos de biblioteca, exercícios de aprendizado de RN ou experimentos brownfield. Adicione Expo Router ou React Navigation quando as telas se multiplicarem.
Quando devo escolher bare-minimum?
Quando você precisa dos diretórios android/ e ios/ no primeiro dia - módulos nativos personalizados, CI nativo existente ou integração brownfield que não pode esperar por um prebuild posterior. Caso contrário, comece gerenciado com default@sdk-57.
Por que devo usar @sdk-57 no nome do template?
Durante a transição do SDK 57, create-expo-app@latest sem --template pode gerar o SDK 54 para compatibilidade com Expo Go em dispositivos físicos. Trabalho de produção visando RN 0.86 deve passar explicitamente @sdk-57.
Sim. default@sdk-57 e tabs@sdk-57 enviam TypeScript, tsconfig.json e arquivos de rota tipados sob app/. Use blank@sdk-57 apenas quando quiser explicitamente JavaScript sem tipos.
Posso trocar templates após a geração?
Não há migração automática. Mover de blank-typescript para Expo Router significa adicionar app/, dependências e configuração. Mover de gerenciado para bare-minimum significa executar prebuild e commitar diretórios nativos. Escolha o template certo cedo.
Quais arquivos o bare-minimum adiciona?
Diretórios android/ e ios/ gerados por npx expo prebuild durante a configuração, mais a mesma entrada mínima App.tsx como blank-typescript. Você mantém os projetos nativos desde o primeiro commit.
Devo usar --example em vez de --template?
--example puxa demos de expo/examples - ótimo para aprender integrações. Para apps de produção, use default@sdk-57 ou seu fork da organização para que os upgrades acompanhem o template mantido.
Armadilha: por que meu template tabs parece com o default?
Eles compartilham o mesmo SDK, Router e stack TypeScript. Os nomes de arquivos app/ gerados e o layout de abas diferem ligeiramente. Funcionalmente, eles resolvem o mesmo problema - não gere novamente para alternar entre eles.
Os templates incluem configuração de testes ou CI?
Não. Os templates enviam código-fonte do app, app.json e scripts Expo. Adicione configurações de Jest, Maestro, EAS e lint após a geração - ou use um repositório de templates interno que estenda default@sdk-57.
Templates SDK 57 visam RN 0.86. Dispositivos iOS físicos só podem instalar o último Expo Go da App Store, que pode estar atrasado em relação ao SDK 57. Use um simulador, uma build correspondente do Expo Go de expo.dev/go, ou uma build de desenvolvimento - não um SDK de template mais antigo - para testes em dispositivo.