Pular para o conteúdo

Diário de desenvolvimento

Posts com a tag: React Native

Notas publicadas sobre este tema.

Feed RSS
Analytics React Native

Por que um app Expo precisa de uma camada de analytics antes de adicionar Amplitude

18 min de leitura

Escrito por: Jonathan Reis em

Crie um contrato único de analytics para um app Expo, mantenha Firebase e GA4 funcionando, adicione Amplitude sem reescrever o código de produto e ganhe rollout independente, falha isolada e decisões melhores.

Arquitetura de monorepo

Como manter assets canônicos em um monorepo React Native

10 min de leitura

Escrito por: Jonathan Reis em

Um padrão prático para organizar fontes, exports e entregas técnicas de apps React Native, sites estáticos, lojas e áudio compartilhado.

Builds nativos com Expo

Como criar ícones para Android e iOS no Expo sem o Android cortar a arte

9 min de leitura

Escrito por: Jonathan Reis em

Use uma fonte editável, um raster opaco para iOS e um foreground Android transparente para evitar que máscaras do launcher cortem seu ícone.

Arquitetura de jogos em React Native

Como modelar eventos de conclusão de tabuleiro para feedback em jogos React Native

10 min de leitura

Escrito por: Jonathan Reis em

Um modelo prático para diferenciar linha, coluna ou bloco concluído da nona colocação correta de um dígito e encaminhar ambos para som e haptics.

Desenvolvimento de games

Como criar uma linha mundial de jogos independentes de puzzles lógicos

11 min de leitura

Escrito por: Jonathan Reis em

Uma estratégia prática para lançar Sudoku, Nonogram, Hashi e outros puzzles como produtos independentes antes de conectá-los em uma coleção comum.

Expo e React Native iOS

Como rodar o primeiro build iOS de um app Expo num monorepo pnpm

14 min de leitura

Escrito por: Jonathan Reis em

O passo a passo de como fiz o primeiro build iOS de um app Expo (Sudoku) que já buildava no Android, num monorepo pnpm: prebuild, pod install, xcodebuild Release, simulador. Inclui as três armadilhas que travam o build (babel, Hermes prebuilt, Firebase mock) e como resolver cada uma nas fontes versionadas.

Game Development

Como embutir Godot em um app React Native e medir o custo real

17 min read

Escrito por: Jonathan Reis em

Uma POC Expo hospeda Godot em uma View nativa Android, corrige a ponte RN↔GDScript e troca milhares de nós por desenho batched; no iOS, o diagnóstico mostra por que build e bootstrap não provam renderização no Simulator.

React Native Skia

Como desenhar um tabuleiro de Sudoku inteiro em um SkPicture (e por que o Canvas declarativo travava)

9 min read

Escrito por: Jonathan Reis em

Por que o renderer Skia declarativo com 81 componentes React por célula sofria em dispositivos antigos, e como reimplementar o tabuleiro com Skia.PictureRecorder + <Picture> elimina o reconciler do caminho crítico de render.

Processo de engenharia

Escolhendo alvos de layout mobile por logs reais, não por chute de device

11 min read

Escrito por: Jonathan Reis em

Como usamos logs de user-agent no Loki, dados de uso por modelo de iPhone e estatísticas de resolução mobile para escolher fatores de tela práticos em um jogo React Native.

UX e produto

Rodando uma critique heurística de UX no meu próprio app — e corrigindo o que ela encontrou

9 min read

Escrito por: Jonathan Reis em

Um desenvolvedor solo faz uma avaliação heurística baseada em Nielsen num jogo React Native publicado, prioriza os achados e mede a mudança de score após as correções. Processo prático para devs indie sem equipe de UX.

Release Android com Expo

Versão, versionCode e config gerada: três números que o release Android precisa alinhar

8 min de leitura

Escrito por: Jonathan Reis em

Depois de nove uploads na Play com versionName 0.1.0, lint sobrescrevendo config de produção e comandos de build com nomes ambíguos, documentamos a regra SemVer, os scripts dev/prd e o porquê de não regenerar config no lint.

Analytics React Native

Como validar eventos no Firebase DebugView em um APK release React Native

9 min de leitura

Escrito por: Jonathan Reis em

Valide Firebase Analytics num APK React Native de produção combinando logs locais com a resposta realtime por trás do GA4 DebugView, mesmo quando o contador de dispositivos mostra zero.

Anúncios em React Native

AdMob UMP em React Native: mensagens de privacidade não são só painel

9 min de leitura

Escrito por: Jonathan Reis em

Um checklist prático para AdMob UMP em um app Android Expo/React Native, cobrindo GDPR, regulamentos estaduais dos EUA, vínculo com a loja e o gate do SDK antes dos anúncios.

React Native

Seu confete em React Native renderiza atrás dos cards: ordem de irmãos, zIndex e elevation

8 min de leitura

Escrito por: Jonathan Reis em

Um overlay de comemoração na tela de vitória caía atrás dos cards de resultado e descia rápido demais. A causa era a ordem de pintura entre irmãos no React Native, não um z-index faltando. Veja por que zIndex sozinho não basta no Android e como corrigimos os dois bugs.

Game Design

Quando validação prestativa vira trapaça: as notas de Sudoku que vazavam a resposta

7 min de leitura

Escrito por: Jonathan Reis em

Nosso Sudoku bloqueava anotações que conflitavam com a linha, coluna ou bloco. Parecia uma checagem de segurança. Na verdade era um solver de graça que dizia ao jogador quais números ainda eram possíveis. Veja o conserto e o princípio por trás dele.

React Native

Um TextInput escondido não captura teclado físico na New Architecture do React Native

8 min de leitura

Escrito por: Jonathan Reis em

Queríamos teclado físico num jogo React Native no Android. O truque clássico do TextInput escondido falhou no Fabric porque o showSoftInputOnFocus é ignorado. O adb provou isso, e um config plugin resolveu de vez.

React Native Skia

A borda arredondada que jogou todos os dígitos do Sudoku para o lado

8 min de leitura

Escrito por: Jonathan Reis em

Uma borda num container overflow-hidden deslocou nosso tabuleiro Skia e descentralizou todos os dígitos. Veja como screenshots, e não o olho, acharam a causa real num jogo React Native.

Ferramentas React Native

Por que __DEV__ é false em build de release, e como passamos a gatear as dev tools por config

7 min de leitura

Escrito por: Jonathan Reis em

Um atalho de desenvolvimento escondido atrás de __DEV__ sumiu exatamente quando precisávamos dele num build de release. Aqui está por que isso acontece no React Native e como movemos o gate para a config de runtime.

Design systems

Design tokens como fonte única: dando a um app de Sudoku uma direção de arte de verdade

8 min de leitura

Escrito por: Jonathan Reis em

Como demos a um Sudoku com cara de template uma direção de arte forte mexendo primeiro nos tokens de tema, compartilhando-os com o site e respeitando o orçamento de performance de um aparelho fraco.

Haptics em React Native

Adicionando haptics do Expo a um jogo React Native sem tratar vibração como som

8 min de leitura

Escrito por: Jonathan Reis em

Como o Daily Sudoku ganhou um toggle persistido de vibração, reaproveitou eventos de gameplay e manteve o bundle Web seguro usando expo-haptics no nativo.

React Native Web

Tocando os mesmos WAVs no Expo Web e no app React Native

8 min de leitura

Escrito por: Jonathan Reis em

Como reduzimos a diferença entre Web e app em um jogo Expo/React Native ao trocar tons sintéticos por assets WAV empacotados e logs de áudio configuráveis.

Testes React Native

Como manter E2E com Playwright útil quando React Native Skia renderiza canvas

9 min de leitura

Escrito por: Jonathan Reis em

Uma nota de campo sobre testar um tabuleiro React Native Skia em canvas com Playwright, trocar seletores só de DOM por uma ponte estreita e deixar persistência determinística.

React Native Android

Desligando sons de toque no Android em React Native sem brigar com Switch

7 min de leitura

Escrito por: Jonathan Reis em

Como uma configuração de som em React Native acabou controlando efeitos de jogo, tap nativo do Android e um bug de duplo toggle em um Switch aninhado.

Performance em React Native

Medindo latência percebida em React Native quando métricas de frame não bastam

7 min de leitura

Escrito por: Jonathan Reis em

Como medimos o tempo de resposta em React Native do handler do toque até estado e paint quando estatísticas de frame não explicavam o que o jogador sentia.

Performance em React Native

Migrando um tabuleiro Sudoku em React Native para Skia sem apagar o renderer antigo

7 min de leitura

Escrito por: Jonathan Reis em

Como testamos um tabuleiro Sudoku em Skia atrás de config sem apagar o renderer React Native, a camada de acessibilidade ou o caminho de rollback.

Builds Nativos Expo

Quando um upgrade do Expo transforma sua splash screen em tela branca

8 min de leitura

Escrito por: Jonathan Reis em

Uma nota prática sobre corrigir splash nativa quebrada depois de upgrade do Expo SDK, migrando do bloco legado de splash para o plugin expo-splash-screen.

React Native na Play Store

Publicando um app Expo/React Native na Google Play com AAB local

8 min de leitura

Escrito por: Jonathan Reis em

Como gerar um AAB local Expo/React Native para Google Play e ainda validar assinatura, Firebase, Sentry, AdMob, RevenueCat e entrega pela loja como release real.

Debug de release React Native

Quando o versionCode muda, mas o JavaScript não: uma armadilha em builds React Native

6 min de leitura

Escrito por: Jonathan Reis em

Um bug de release em que a Google Play instalou um versionCode Android novo enquanto o bundle JavaScript React Native ainda anunciava a release antiga no Sentry.