Stop fighting Xcode. Stop fighting Gradle. Stop being a masochist.

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:

Terminal
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
Dev build = your own private 'Expo Go' with YOUR native dependencies and config. No more excuses, you lazy bastard.

Shipping, not vibes: build, submit, and update. Like an adult.

The lazy way (iOS)
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.

The manual way
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 top

What Expo actually is (for the confused)

Expo doesn't remove complexity. It removes the dumb shit you shouldn't be dealing with anyway.

↑ Back to top

Why 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 top

The 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.

99% of "Expo problems" are skill issues wearing a framework costume. The other 1% is you not reading the docs.
↑ Back to top

When you should NOT use Expo (rare)

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: