Hi, I'm Filipi Rafael.

React Native specialist
Mobile software engineer with over 6 years of experience, passionate about solving real problems and creating amazing products. I build iOS and Android apps and obsess over performance and the details.
- 6+
- years of React Native in production
- 1M+
- users across two social networks I helped build
- 2
- app stores, every release shipped end to end
- 3
- countries I've worked with teams in: Brazil, US, Australia
- Based in
- São Paulo, Brazil
- Day job
- Senior software engineer at Umatch
- Studying
- Software Engineering postgraduate
- Languages
- Portuguese, fluent English, basic Spanish
I've spent six years building React Native products with end-to-end ownership of apps in production: architecture, performance, testing, CI/CD and publishing to both stores. Two of them were social networks that together passed a million users, which is where I learned what scale and retention really demand.
Before mobile, I administered SQL Server with a focus on security, access control and incident response. I work in fluent English and have worked directly with teams in the United States and Australia.
Outside the day job, I build my own iOS and Android apps, from design to launch. It's where I test new ideas with real users and keep sharpening the craft: performance, animation, and the details people feel but can't name.
My own apps.
From design to launch, built by me for iOS and Android.
Notes on mobile development.
- One Supabase project for every app I shipHow a schema per app, row-level security on every table and prefixed edge functions let a solo developer add a new backend in zero minutes.
- The 5-point rule: how I decide which app to build nextFive yes-or-no questions, scored before a domain is bought. Four out of five builds. Anything less waits or dies.
- The stack that lets me ship a React Native app in two weeksExpo, EAS, Supabase, RevenueCat, PostHog and Sentry, chosen once and never chosen again. What each one does, and what I refuse to add.
Six things I never compromise on.
Performance is a feature.
Smooth scrolling, fast launches, no stutter even on an old Android. People never mention it, but they feel it, and they stay.
The details are the product.
Animation with weight, haptics on the moments that matter, empty states that actually help. The finish is what people remember.
Solve the real problem.
I start from the person and the pain, not the feature list. If I can't state the problem in one sentence, I'm not ready to write code.
Own it end to end.
Architecture, tests, CI/CD, the release in both stores and the metrics after it. Shipping is the start, not the finish.
Ship, measure, improve.
Small releases, real data, honest analysis. What doesn't move the numbers gets cut, and I say so.
Simple beats clever.
Typed, well-named code the next person can change on a Friday. Clever is a bill someone else pays later.
One stack, known deeply.
React Native and Expo for the app, Swift and Kotlin when a screen needs to go native, Supabase and PostgreSQL on the backend, RevenueCat for subscriptions and PostHog for product data. Chosen on purpose and known in depth, so the time goes into the product.
Say hi.
Roles, projects, feedback, or just to talk shop about React Native. I read everything.