React NativeReact Native para iniciantesCriando apps com React Native e ExpoComo criar app para Android iOS com Java ScriptTutorial React Native passo a passo
Aprenda React Native: guia completo para 2025

Rocketseat

Conheça o Rocketseat Para Empresas
Oferecemos soluções personalizadas para empresas de todos os portes.
Fala, dev! Quer aprender a desenvolver aplicativos para Android e iOS usando React Native? Neste guia completo, você vai conhecer o passo a passo para iniciar no desenvolvimento mobile e entender como essa tecnologia pode impulsionar sua carreira.
Vamos utilizar o Expo, um framework que facilita o processo de criação de aplicativos, permitindo que você se concentre no aprendizado prático e no desenvolvimento de projetos reais.
Eu sou Rodrigo Gonçalves, Head de Educação na Rocketseat. Vamos juntos explorar o universo do desenvolvimento mobile e dar o primeiro passo para impulsionar sua jornada como desenvolvedor(a).

O que é React Native?
Imagine criar aplicativos nativos para Android e iOS usando apenas JavaScript (e TypeScript, que a gente super recomenda!). Essa é a mágica do React Native! ✨
Com ele, você:
- Cria apps para duas plataformas com um único código: adeus, retrabalho! 👋
- Acelera o desenvolvimento: o famoso time-to-market agradece! ⏱️
- Reaproveita código: componentes são como peças de LEGO, podemos usar as mesmas peças, mas construir infinitas possibilidades. 😉
- Conta com uma comunidade gigante: precisa de ajuda? Tem sempre alguém disposto! 💪
- Segue os passos de gigantes: Facebook, Microsoft, Discord... todos usam React Native! 🏆
Se você já tem familiaridade com desenvolvimento web (HTML, CSS e JavaScript), vai se sentir em casa! A lógica é muito parecida, o que torna a curva de aprendizado bem mais suave. Se você não tem, fique tranquilo que até o final desse artigo, eu vou te apresentar opções para você sair do zero e de forma gratuita! 😊

Como o React Native funciona?
Sabe aquela história de "escrever uma vez, rodar em qualquer lugar"? O React Native leva isso a sério! Você cria interfaces de forma declarativa, usando componentes como
View, Image e Text. Eles são como blocos de montar que representam elementos visuais.Quando o app é executado, esses componentes são traduzidos para seus equivalentes nativos em cada plataforma. Ou seja, uma
View vira uma ViewGroup no Android e uma UIView no iOS. O resultado? Performance nativa! 🚀A componentização é outro ponto forte. Em vez de criar 30 botões iguais, você cria um só e reaproveita. Precisou mudar a cor? Altera em um único lugar e voilà! ✨ Produtividade e manutenção fácil? Temos! ✅

Preparando o terreno: configurando o ambiente.
Antes de começar a codar, precisamos preparar o nosso ambiente de desenvolvimento. Mas calma, não precisa ter medo! Vamos usar o Expo Managed Workflow, que é super simples para iniciantes.
Você vai precisar:
- Node.js: instale a versão LTS. É rapidinho!
- Um editor de código: recomendamos o VS Code, mas você pode usar o seu preferido.
- Um celular (Android ou iOS) ou um emulador: para testar o app.
Dica: se você usa Windows ou Linux e tem um iPhone, use o Expo Go! É um app que permite rodar o seu projeto diretamente no celular, sem precisar de cabo. 😉
Link para o passo a passo oficial da Rocketseat (em português, para facilitar!)
Pause este artigo agora, clique no link em uma nova aba e configure o seu ambiente. É rapidinho e vai fazer toda a diferença!
Criando o nosso primeiro projeto.
Agora sim, vamos começar a brincadeira! Abra o seu terminal e digite:
npx create-expo-app --templateOpções aparecerão para você selecionar qual template usar, e então escolha:
Navigation (TypeScript)Agora é só escolher o nome do app:
my-first-appO que esse comando faz?
Depois de alguns segundos (ou minutos, dependendo da sua conexão com a internet 😉), o
create-expo-app terminará de criar o seu projeto.Abrindo o projeto no editor de código.
Abra a pasta do projeto no seu editor de código favorito. Recomendamos o VS Code, que é leve, poderoso e tem ótimas extensões para React Native.

Vamos dar uma olhada rápida no que foi criado?
Limpando o terreno.
Antes de começar a desenvolver seu app, é fundamental ter um ambiente limpo e organizado. Por isso, vamos remover alguns diretórios criados automaticamente que contêm arquivos de exemplo e que podem causar conflitos com a nova estrutura que iremos implementar. Essa limpeza facilitará a manutenção e o entendimento do projeto, especialmente para quem está começando.
Passos para a limpeza:
- Remova a pasta
app/e todo o seu conteúdo original:
Essa pasta foi gerada automaticamente, mas vamos recriá-la de forma organizada mais adiante dentro da nova estrutura.
- Dentro da pasta assets/, apague apenas a pasta fonts/ e todo o seu conteúdo original:
Assim, eliminamos exemplos de fontes que não serão utilizados no desenvolvimento do seu aplicativo.
- Exclua a pasta
components/e todo o seu conteúdo original:
Posteriormente, criaremos uma nova pasta para os nossos componentes customizados, organizada dentro da estrutura principal.
- Elimine a pasta
constants/e todo o seu conteúdo original:
Essa remoção também visa evitar possíveis conflitos e preparar o ambiente para uma organização mais clara.
Depois de apagar essas pastas, a estrutura do seu projeto ficará semelhante à imagem abaixo. Os ícones e cores podem variar um pouco dependendo do seu editor de código e das extensões que você tem instaladas.

Componentes e estilização: dando vida ao app.
Agora que temos a estrutura básica do projeto pronta, vamos começar a construir a interface do nosso aplicativo. E para manter tudo organizado, vamos criar uma pasta chamada
src (de source, ou "código-fonte") na raiz do projeto. Essa pasta vai abrigar todo o código que nós escrevermos, separando-o dos arquivos de configuração do Expo.Dentro de
src, crie uma pasta chamada app. É aqui que, a partir de agora, vamos colocar os arquivos que representam as telas (ou rotas) do nosso aplicativo.Nosso primeiro componente:
Dentro da pasta
src/app/, crie um arquivo chamado index.tsx. Este será o ponto de partida, a tela inicial do nosso app.// src/app/index.tsx import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; export default function Home() { return ( <View style={styles.container}> <Text style={styles.title}>Olá, Rocketseat!</Text> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', padding: 32, }, title: { fontSize: 24, fontWeight: 'bold', color: '#67159C', // Um roxo da Rocketseat! 😉 }, });
O que esse código faz?

Executando o app: a mágica acontece!
Agora que você já escreveu o seu primeiro componente React Native, chegou a hora de vê-lo em ação!
No terminal, certifique-se de que você está dentro da pasta do projeto (
my-first-app, ou o nome que você escolheu). Se não estiver, navegue até lá usando o comando cd nome-da-pasta.Dentro da pasta do projeto, digite o seguinte comando e pressione enter:
npx expo startEste comando inicia o servidor de desenvolvimento do Expo. Você verá um menu com várias opções no terminal, e um QR code será gerado.
Abrindo o app no emulador/simulador:
- iOS: pressione a tecla
ino terminal. Isso abrirá o app no simulador iOS (se você estiver usando um Mac e tiver o Xcode instalado).
- Android: pressione a tecla
ano terminal. Isso abrirá o app no emulador Android (se você tiver o Android Studio configurado).
- Web: pressione a tecla
wno terminal. Isso abrirá o app em uma aba do seu navegador.
Abrindo o app no seu celular (dispositivo físico):
- Instale o app Expo Go: procure por "Expo Go" na App Store (iOS) ou Google Play Store (Android) e instale o aplicativo.
- Escaneie o QR Code: abra o Expo Go no seu celular e use a opção de escanear o QR code. Aponte a câmera para o QR code que apareceu no seu terminal.
- Conexão na mesma rede: certifique-se de que o seu celular e o seu computador estejam conectados à mesma rede Wi-Fi.
Se tudo correr bem, você verá a tela do seu aplicativo com a mensagem "Olá, Rocketseat!" centralizada, como na imagem abaixo:

Debugger: desvendando os mistérios do código.
Precisa descobrir por que algo não está funcionando? Use o debugger!
console.log: exiba mensagens no terminal.
- Breakpoints: pause a execução em pontos específicos do código para inspecionar variáveis. (Aperte
jno terminal para abrir o debugger no navegador).
Componentes customizados: reutilização é a chave!
Agora que você já criou seu primeiro componente (
Home), vamos dar um passo além e aprender a criar componentes customizados. A grande vantagem de criar seus próprios componentes é a reutilização de código. Em vez de repetir o mesmo código várias vezes, você cria um componente uma única vez e o reutiliza em diferentes partes do seu aplicativo. É como construir com peças de LEGO: você monta as peças básicas e depois as combina para criar estruturas mais complexas.Organizando o código: a pasta components
Para manter o nosso projeto organizado, vamos criar uma pasta chamada
components dentro da pasta src. É aqui que vamos guardar todos os nossos componentes customizados.Criando o componente Button
Vamos começar criando um componente
Button (botão). Ele será um botão estilizado que poderemos usar em várias telas do nosso app.Dentro da pasta
components, crie uma nova pasta chamada Button (com "B" maiúsculo, por convenção). Dentro da pasta Button, crie dois arquivos:index.tsx: este arquivo conterá a estrutura do nosso componente (o que ele é e como ele se comporta).
styles.ts: este arquivo conterá os estilos do nosso componente (como ele aparece).
Essa separação entre estrutura e estilo é uma boa prática para manter o código organizado e fácil de manter.
Abra o arquivo
src/components/Button/index.tsx e cole o seguinte código:// src/components/Button/index.tsx import React from 'react'; import { TouchableOpacity, Text } from 'react-native'; // 1. Importações import { styles } from './styles'; // 2. Importa os estilos interface ButtonProps { // 3. Define as Props title: string; onPress: () => void; } export function Button({ title, onPress, ...rest }: ButtonProps) { // 4. Componente Button return ( <TouchableOpacity style={styles.button} onPress={onPress} {...rest}> <Text style={styles.buttonText}>{title}</Text> </TouchableOpacity> ); }
Abra o arquivo
src/components/Button/styles.ts e cole o seguinte código:// src/components/Button/styles.ts import { StyleSheet } from 'react-native'; export const styles = StyleSheet.create({ button: { backgroundColor: '#67159C', // Roxo da Rocketseat! borderRadius: 8, paddingVertical: 12, paddingHorizontal: 24, alignItems: 'center', }, buttonText: { color: '#FFFFFF', fontSize: 16, fontWeight: 'bold', }, });
O que esse código faz?
Usando o componente Button
Agora que você criou o componente
Button, vamos usá-lo na tela inicial do nosso app (src/app/index.tsx):// src/app/index.tsx import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; import { Button } from '../components/Button'; // 1. Importa o componente Button export default function Home() { return ( <View style={styles.container}> <Text style={styles.title}>Olá, Rocketseat!</Text> <Button title="Entrar" onPress={() => alert('Clicou!')} /> {/* 2. Usa o componente Button */} </View> ); } const styles = StyleSheet.create({ container: { backgroundColor: '#19181F', flex: 1, justifyContent: 'center', alignItems: 'center', padding: 32, }, title: { fontSize: 24, marginBottom: 20, fontWeight: 'bold', color: '#67159C', // Um roxo da Rocketseat! 😉 }, });
O que mudou?
Com isso, você criou seu primeiro componente customizado, reutilizável e estilizado! 🚀 No próximo passo, vamos aprender como criar um componente para inserir texto (um input).
Componente Input: coletando dados do usuário.
Depois de criar um botão, que tal um campo de texto para o usuário digitar? Vamos criar um componente
Input para isso!Siga a mesma estrutura que usamos para o
Button:- Dentro da pasta
src/components/, crie uma nova pasta chamadaInput.
Conheça o Rocketseat Para Empresas
Oferecemos soluções personalizadas para empresas de todos os portes.
Artigos_
Explore conteúdos relacionados
Descubra mais artigos que complementam seu aprendizado e expandem seu conhecimento.
NewsletterReceba conteúdos inéditos e novidades gratuitamente