To solve the collision problem, I built a state management system on top of React's useSyncExternalStore and Immer. Each squad's state lives in its own scope so changes can't leak into another team's features, but shared data like permissions and authentication flows through app-wide stores that every module can subscribe to. Components only re-render when the specific values they care about change, so one team updating their state doesn't trigger unnecessary renders across the rest of the platform.
The translation issue was solved the same way: the system uses plain TypeScript objects with type-safe keys, so developers get autocomplete for every translation string and the compiler catches typos before code reaches production. Feature modules are lazy-loaded so the browser only downloads code for the section the user actually opens, and route prefetching starts loading the next likely page while the current one is still visible. The monorepo itself uses git submodules to give each squad its own feature scope, which cut down merge conflicts because teams stopped editing the same files.