Repository navigation
How do you manage one frontend codebase shared by multiple teams? #7442
Replies: 2 comments
|
For ~5 teams, I would not jump to micro-frontends yet. I’d first move from the current “one app with internal gateways” structure to a monorepo containing independently buildable apps + shared packages. Something along these lines: apps/ packages/ Each gateway would still live in the same repository and use the same trunk, but it would have its own build and deployment pipeline. |
|
For five teams, I would not jump to micro-frontends yet. Your main problem sounds less like runtime architecture and more like ownership and release boundaries. |
Uh oh!
There was an error while loading. Please reload this page.
Looking for advice from teams who've been here. We have a React + TypeScript + Refine + Vite admin panel hosting 5 separate apps ("gateways") in a single repo / single Vite build. Each gateway has its own backend API, its own team, and is fairly self-contained:
productionReadyflag hides beta gateways from prodIt works, but with 5 teams in one repo we keep hitting friction:
1. Releases / branching — All teams commit to a shared
testbranch, so commits get mixed across gateways. To ship one gateway we cut a release branch and cherry-pick that gateway's commits out of the mix. Fragile and manual. How do you ship independently on a shared trunk?2. Independent deploys — Single build means one team's change rebuilds/redeploys everyone. We've prototyped Module Federation / micro-frontends, but it's a big jump in complexity. Worth it for 5 teams, or overkill?
3. Ownership boundaries — No CODEOWNERS yet, any team can touch any gateway. CODEOWNERS, separate packages, enforced monorepo boundaries — what worked?
4. Shared code coupling — Our registry has circular-dependency landmines, and we're mid-migration to a shared npm package. Monorepo (pnpm/Nx/Turborepo) vs. published package vs. just discipline — what scaled?
Core question: for ~5 teams each owning a domain app in one frontend, would you stay monolith + good module boundaries, go monorepo with separate packages, or full micro-frontend? What did you regret?
Thanks 🙏
All reactions