JUST FUCKING USE EXPO.
If you're building a React Native app and you're still balls-deep in Xcode errors, Gradle nightmares, and CocoaPods hell—congratulations, you absolute clown, you've invented a full-time job that doesn't pay.
Expo is the shortest path from idea → running app → shipped to stores. Stop jerking off to "bare workflow" and ship something for once in your miserable life.
Expo Go is not the point. The toolchain is the point.
Stop reading. Do this, idiot.
You want to build an app. Not a build system. Not a fucking tribal identity. An app.
So shut up and copy-paste this shit:
npx create-expo-app@latest my-app
cd my-app
npx expo start
Scan. Run. Iterate. You're already ahead of the dipshits still crying about "native performance" on X.
If you need native libraries (you do, dumbass), make a dev build.
Expo Go is training wheels for babies. Dev builds are for people who actually want to ship. Which one are you?
npm install -g eas-cli
eas login
eas build --profile development --platform ios
eas build --profile development --platform android
Shipping, not vibes: build, submit, and update. Like an adult.
npx testflight
One command. Builds your app, handles signing, generates certificates, submits to TestFlight. Done. Your app is in TestFlight while you're still reading this sentence. This is the future, and you're living in it.
eas build --platform ios --profile production
eas build --platform android --profile production
eas submit --platform ios
eas submit --platform android
eas update
OTA updates aren't magic, moron. They're for JS/styles/assets. Native changes still require a rebuild. Welcome to reality, where the rest of us live.
↑ Back to topWhat Expo actually is (for the confused)
- Expo is THE official React Native framework. Meta themselves recommend Expo as the default way to build React Native apps. Not my opinion—it's on their fucking website.
- Expo is a batteries-included SDK. Common mobile needs without duct-taping 40 janky libraries together like a crackhead.
- Expo is cloud services (EAS). Build, submit, and ship updates without sacrificing a goat to the CI gods every sprint. Oh, and EAS Submit is 100% FREE. You're welcome.
- Expo is not 'only Expo Go'. If you still think that, you're stuck in 2019 and your opinions are as outdated as your haircut.
- Expo is not 'anti-native'. Prebuild + dev builds exist. You can write native code. You can use native libraries. Sit the fuck down.
- The New Architecture is now DEFAULT. SDK 52+ enables React Native's New Architecture by default. Faster interactions, better performance, future-proof. You're already behind if you're not using it.
Expo doesn't remove complexity. It removes the dumb shit you shouldn't be dealing with anyway.
↑ Back to topWhy you should just fucking use Expo (in 2025)
Most apps die before they ship. Not because the idea sucks—because some dickhead spent 3 weeks configuring Metro bundler instead of building features. Expo is a leverage machine for people who want to make money, not flex on Stack Overflow. Here's what you actually get:
1. Velocity that compounds
Fast feedback loops win. Slow feedback loops are for losers who enjoy watching Gradle sync for 20 minutes. Expo keeps you shipping while your competitors are still googling "Android SDK not found".
2. Dev builds: the real 'Expo'
Need native modules? Cool, nobody's stopping you. Dev builds are fully yours. Your dependencies, your config, your runtime. Same DX, none of the suffering you seem to crave.
3. Prebuild: a clean escape hatch
Want the benefits of managed config but need native projects generated? Prebuild continuously generates iOS/Android projects from config. You can still go balls-deep in native code when required. Happy now?
npx expo prebuild --clean
4. EAS Build: stop maintaining a build dungeon
Code signing, CI weirdness, macOS build machines, Gradle drama—none of that is product. It's busy work for people who confuse suffering with productivity. EAS Build gives you repeatable builds without turning your team into unpaid DevOps interns. And if you're broke, run builds locally with --local for FREE.
5. EAS Submit: stores are bureaucracy—automate it
Shipping shouldn't mean 43 clicks in two dashboards while praying to Tim Cook. Submit from the CLI like someone who values their time.
6. EAS Update: fix your fuckups immediately
You shipped a bug. Congrats, you're human. OTA updates let you push fixes without begging Apple for a 3-day review. Use it responsibly, or don't—I'm not your mom.
7. Expo Router: navigation that doesn't make you want to die
File-based routing that works across iOS/Android/web, deep linking that isn't a fucking weekend project, and a structure even your junior devs can understand.
8. EAS Workflows: CI/CD without the YAML nightmares
Full CI/CD for React Native that actually works. Build, test with Maestro, submit to stores—all automated. Oh, and Microsoft killed App Center, so if you were using that garbage, EAS is your only sane option now. You're welcome for the heads up.
9. expo.new: 5 minutes to a running dev build
Go to expo.new and have a development build ready in 5 minutes. No more "setting up the environment" for 3 hours. No more excuses.
10. Boring consistency
Expo is opinionated in the places that matter: config, tooling, build flows. That boring-ass consistency is what separates teams that ship from teams that "refactor".
If you want to argue about purity, go become a monk. If you want to ship an app and make money, use Expo.
↑ Back to topThe usual bullshit I hear (objections)
Q: "Expo is only for prototypes."
Wrong, dipshit. Expo Go is for quick iteration. Dev builds + prebuild are for production apps that make real money. If you're still using 'prototype' as an insult, you've never shipped anything worth a damn.
Q: "But I need native code."
Then write native code, genius. Nobody's stopping you. Expo doesn't ban native code—it just means native code is the exception instead of your entire personality. Touch grass.
Q: "Vendor lock-in."
Lock-in is when you can't leave. You can eject anytime. Expo projects are still React Native projects. EAS even works with non-Expo RN. You're not trapped, you're just looking for excuses to not ship.
Q: "Performance."
Performance isn't a framework choice, it's engineering. Your shitty code will be slow on any framework. Expo doesn't stop you from profiling, optimizing, and writing good code. Skill issue detected.
Q: "OTA updates are scary."
Then don't be a reckless idiot. OTA updates are for non-native changes. Use channels, rollouts, and QA like a functioning adult. The existence of a knife doesn't make you a murderer—unless you're stupid.
Q: "I already started with RN CLI."
Sucks to be you. Adopt prebuild and stop crying. Keep what works, remove the pain. You don't win a trophy for suffering.
When you should NOT use Expo (rare)
- You have a heavily customized native app already and migrating would cost more than your entire engineering budget. Fine. Suffer.
- You absolutely must run a React Native version that doesn't align with any Expo SDK. Weird flex but okay.
- You have truly exotic build requirements AND a dedicated platform team who gets off on pain. Godspeed, masochists.
If you're starting a new app and you don't have a platform team, you're not special. You're just arrogant. Use Expo and shut up.
Decision tree (for indecisive cowards)
Are you building a mobile app?
├─ No → What the hell are you doing here? Build a website.
└─ Yes
├─ Mostly standard features (auth, camera, notifications, payments, maps)?
│ └─ Yes → JUST FUCKING USE EXPO. Stop overthinking.
└─ Extreme native requirements + platform team + unlimited budget?
└─ Yes → Fine, use bare RN. Everyone else: EXPO. Now.
Shipping beats debating. Revenue beats Reddit karma.
Receipts (read the damn docs)
If you want specifics instead of my beautiful rant, here are the official references. No excuses now:
- expo.new — Start a project in 5 minutes
- Get Started
- Development Builds
- Prebuild (CNG)
- EAS Build
- EAS Submit (FREE)
- npx testflight — One command to TestFlight
- EAS Update
- EAS Workflows
- Expo Router
- New Architecture
- Meta recommends Expo — Yes, really.