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).
GIF animado de um desenvolvedor digitando com expressão de entusiasmo. O GIF representa a empolgação e a paixão de criar aplicativos com React Native.
GIF animado de um desenvolvedor digitando com expressão de entusiasmo. O GIF representa a empolgação e a paixão de criar aplicativos com React Native.

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! 😊
https://reactnative.dev/

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! ✅
Imagem representando um aperto de mãos entre um smartphone Android e um iPhone, simbolizando a capacidade do React Native de criar aplicativos para ambas as plataformas com uma única base de código. O aperto de mãos reforça a ideia de compatibilidade e colaboração entre os sistemas.
Imagem representando um aperto de mãos entre um smartphone Android e um iPhone, simbolizando a capacidade do React Native de criar aplicativos para ambas as plataformas com uma única base de código. O aperto de mãos reforça a ideia de compatibilidade e colaboração entre os sistemas.

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:
  • 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 --template
Opções aparecerão para você selecionar qual template usar, e então escolha:
Navigation (TypeScript)
Agora é só escolher o nome do app:
my-first-app
O 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.
Captura de tela do Visual Studio Code mostrando a estrutura de pastas de um projeto Expo recém-criado.  As pastas principais são: “app”, “assets”, “components”, “constants”, “node_modules”.  Os arquivos principais são: “.gitignore”, “app.json”, “package-lock.json”, “package.json” e “tsconfig.json”.
Captura de tela do Visual Studio Code mostrando a estrutura de pastas de um projeto Expo recém-criado. As pastas principais são: “app”, “assets”, “components”, “constants”, “node_modules”. Os arquivos principais são: “.gitignore”, “app.json”, “package-lock.json”, “package.json” e “tsconfig.json”.
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:
  1. Remova a pasta app/ e todo o seu conteúdo original:
    1. Essa pasta foi gerada automaticamente, mas vamos recriá-la de forma organizada mais adiante dentro da nova estrutura.
  1. Dentro da pasta assets/, apague apenas a pasta fonts/ e todo o seu conteúdo original:
    1. Assim, eliminamos exemplos de fontes que não serão utilizados no desenvolvimento do seu aplicativo.
  1. Exclua a pasta components/ e todo o seu conteúdo original:
    1. Posteriormente, criaremos uma nova pasta para os nossos componentes customizados, organizada dentro da estrutura principal.
  1. Elimine a pasta constants/ e todo o seu conteúdo original:
    1. 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.
Captura de tela do Visual Studio Code mostrando a estrutura de pastas de um projeto Expo após a remoção das pastas de exemplo. As pastas restantes são: “assets/images” e “node_modules”. Os arquivos restantes são: “.gitignore”, “app.json”, “package-lock.json”, “package.json” e “tsconfig.json”.
Captura de tela do Visual Studio Code mostrando a estrutura de pastas de um projeto Expo após a remoção das pastas de exemplo. As pastas restantes são: “assets/images” e “node_modules”. Os arquivos restantes são: “.gitignore”, “app.json”, “package-lock.json”, “package.json” e “tsconfig.json”.

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?
Captura de tela do VS Code mostrando a criação das pastas “src” e “app”, e do arquivo “index.tsx” dentro da pasta “app”.
Captura de tela do VS Code mostrando a criação das pastas “src” e “app”, e do arquivo “index.tsx” dentro da pasta “app”.

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 start
Este 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 i no terminal. Isso abrirá o app no simulador iOS (se você estiver usando um Mac e tiver o Xcode instalado).
  • Android: pressione a tecla a no terminal. Isso abrirá o app no emulador Android (se você tiver o Android Studio configurado).
  • Web: pressione a tecla w no terminal. Isso abrirá o app em uma aba do seu navegador.

Abrindo o app no seu celular (dispositivo físico):

  1. Instale o app Expo Go: procure por "Expo Go" na App Store (iOS) ou Google Play Store (Android) e instale o aplicativo.
  1. 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.
  1. 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:
Captura de tela mostrando o Visual Studio Code, com o código do componente “Home”, e o emulador/navegador, exibindo o aplicativo com o texto “Olá, Rocketseat!” centralizado.
Captura de tela mostrando o Visual Studio Code, com o código do componente “Home”, e o emulador/navegador, exibindo o aplicativo com o texto “Olá, Rocketseat!” centralizado.

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 j no 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:
  1. Dentro da pasta src/components/, crie uma nova pasta chamada Input.

Conheça o Rocketseat Para Empresas

Oferecemos soluções personalizadas para empresas de todos os portes.

Rocketseat

Rocketseat

Ecossistema de educação contínua referência em programação e Inteligência Artificial.

Artigos_

Explore conteúdos relacionados

Descubra mais artigos que complementam seu aprendizado e expandem seu conhecimento.

Imagem contendo uma carta e um símbolo de check
NewsletterReceba conteúdos inéditos e novidades gratuitamente
Mês do programador na Rocketseat

Válido por tempo limitado

Aprenda as tecnologias e habilidades mais valorizadas no mercado dev