I’ve run into this in App Router too: route groups are separate layout trees, so any client state that lives inside a group layout will reset when you navigate to a different group.
The most reliable pattern I’ve found is to put truly shared providers/state at the highest common ancestor (often app/layout.tsx), and keep group layouts focused on section-specific UI.
If you can’t lift it (because the layouts are intentionally different), then a persistent store (e.g., Zustand/Redux) or URL/cookie-backed state is usually the cleanest way to keep state stable across group boundaries.