Backend
Backend for an Expo app, compared: API routes, or none - Expo Go support and what each option installs.
Hey - here's how the backend category works in ReadyNative.
This one is about whether your app ships a server of its own. With Expo Router, a +api.ts file under src/app/api/ is a route handler that runs on the dev server in development and on EAS Hosting in production - same repo, same TypeScript, one deploy.
Unlike the other categories there's no @/lib/backend shim, because there's no client API to keep stable. What stays constant is EXPO_PUBLIC_API_URL: the origin your app calls, whether that's routes in this tree or a backend you run elsewhere. backend/none is the no-op - it just means no routes here.
Pick API routes when a module needs a server (auth/better-auth requires it, payments/stripe wants it for Checkout and webhooks) or when you'd rather write one endpoint than stand up a separate service. Pick none when your backend already exists somewhere else, or when the app doesn't need one - it also keeps the static web export, which API routes replace with a server bundle.
This category is part of ReadyNative Pro.
Options
One option per category - --backend <option> picks it:
bun run setup --backend api-routes| Option | Label | Expo Go | Hint |
|---|---|---|---|
api-routes | API routes (default) | yes | Expo Router +api.ts routes · src/server helpers · EAS Hosting · Expo Go OK |
none | No API routes | yes | no src/app/api |