Skip the context wrapper at root. Use Zustand with a server action bridge instead. Keep your stores client-side, initialize them from a single server action that fetches auth/prefs/flags, then pass that data as props to your layout. Route groups stay independent until they actually need to talk.
We did exactly this and killed the unnecessary re-renders. Context for shared state across multiple route groups is the wrong abstraction here anyway.