Solo development changed. One person plus agents can now ship what used to take a team. Two decisions make that work for me.
Monorepo, because agents want context
An agent is only as good as what it can see. Split the backend, the app, the shared types, and the docs across repos, and every task starts with me copying context by hand.
Put it all in one repo and the agent reads the API, changes the client, updates the types, and fixes the docs in a single pass. It sees what a change breaks before I do.
One repo also means one branch, one commit, one review. For a team that’s a tradeoff. For one person with agents, it’s a cheap win.
One codebase, not five native apps
I could write Swift for iOS, Kotlin for Android, and something else for web, desktop, and the rest. Five codebases, five toolchains, five sets of bugs, and agents with five times the surface to get wrong.
I write one. React Native and Expo cover iOS, Android, and web from the same code.
Iterate on the web, then deliver everywhere
The web is the fastest feedback loop there is. Hot reload shows a change in under a second. No simulator boot, no native build, no install step.
So I build and tune in the browser. When it works, I deliver the same code to the stores and to the web.
Native-only details, like camera, haptics, or a store-specific flow, I check on a device at the end. That’s a short pass, not the whole loop.
What this costs
The result won’t be the most native app on each platform. Some platform polish needs per-platform code, and I write that when it matters.
I take that trade. One person can’t maintain five apps well, and a single codebase that ships everywhere beats five that never catch up with each other.