Why an Expo app needs an analytics layer before adding Amplitude
|18 min read
Written by: Jonathan Reis on
Build one analytics contract for an Expo app, keep Firebase and GA4 working, add Amplitude without rewriting product code, and gain independent rollout, failure isolation, and better product decisions.
How to run your first iOS build of an Expo app in a pnpm monorepo
|14 min read
Written by: Jonathan Reis on
Step by step how I ran the first iOS build of an Expo app (Sudoku) that already built on Android, in a pnpm monorepo: prebuild, pod install, xcodebuild Release, simulator. Includes the three traps that block the build (babel, Hermes prebuilt, Firebase mock) and how to fix each one in versioned source files.
How to embed Godot in a React Native app and measure the real cost
|17 min read
Written by: Jonathan Reis on
An Expo POC hosts Godot in a native Android View, fixes the RN↔GDScript bridge, and replaces thousands of nodes with batched drawing; on iOS, the diagnosis shows why a build and bootstrap do not prove Simulator rendering.
Drawing an entire Sudoku board in one SkPicture (and why the declarative Canvas stuttered)
|9 min read
Written by: Jonathan Reis on
Why the declarative Skia renderer with 81 React components per cell struggled on low-end devices, and how reimplementing the board with Skia.PictureRecorder + <Picture> removes the reconciler from the render hot path.
Version, versionCode, and generated config: three numbers an Android release must align
|8 min read
Written by: Jonathan Reis on
After nine Play uploads on versionName 0.1.0, lint overwriting production config, and ambiguous build script names, we documented SemVer rules, dev/prd commands, and why lint must not regenerate config.
How to validate Firebase DebugView events in a React Native release build
|9 min read
Written by: Jonathan Reis on
Validate Firebase Analytics in a production React Native APK by combining local debug logs with the realtime response behind GA4 DebugView, even when its device counter says zero.
AdMob UMP in React Native: privacy messages are not just console setup
|9 min read
Written by: Jonathan Reis on
A practical release checklist for AdMob UMP in an Expo/React Native Android app, covering GDPR messages, US state privacy messages, app store linking, and the SDK gate before ads can request.
A hidden TextInput can't capture a hardware keyboard on React Native's New Architecture
|8 min read
Written by: Jonathan Reis on
We wanted physical-keyboard input in a React Native game on Android. The classic hidden TextInput trick failed under Fabric because showSoftInputOnFocus is ignored. adb proved it, and a config plugin fixed it for good.
The rounded border that pushed every Sudoku digit off-center
|8 min read
Written by: Jonathan Reis on
A border on an overflow-hidden container silently shifted our Skia board and un-centered every digit. Here is how screenshots, not eyeballs, found the real cause in a React Native game.
Why __DEV__ is false in release builds, and how we gated dev tools by config instead
|7 min read
Written by: Jonathan Reis on
A developer shortcut hidden behind __DEV__ disappeared exactly when we needed it in a release build. Here is why that happens in React Native and how we moved the gate to runtime config.
Design tokens as one source of truth: giving a Sudoku app a real art direction
|8 min read
Written by: Jonathan Reis on
How we gave a template-looking Sudoku a bold art direction by changing the theme tokens first, sharing them with our website, and staying inside a low-end performance budget.
Playing the same WAV files in Expo Web and a React Native app
|8 min read
Written by: Jonathan Reis on
How we reduced the gap between Web and app in an Expo/React Native game by replacing synthetic tones with bundled WAV assets and configurable audio logs.
When an Expo upgrade turns your splash screen into a white screen
|8 min read
Written by: Jonathan Reis on
A practical field note on fixing a missing native splash after an Expo SDK upgrade by moving from the legacy splash block to the expo-splash-screen plugin.
Publishing an Expo/React Native app to Google Play with a local AAB
|7 min read
Written by: Jonathan Reis on
How to build a local Expo/React Native AAB for Google Play and still validate signing, Firebase, Sentry, AdMob, RevenueCat, and Play delivery like a real release.