Next App Router introduced a new and simpler way to define static, dynamic and ISR pages, which are all described in length here, but it introduced some caveats. The one I'm most worried about is top level providers, it is quite common to have a provider for an http client on the top level of your app like react query, and you might need authentication tokens passed in to them.
The new Server Components paradigm allows us to get cookies in a server component and pass it down to the client provider, allowing us to access http-only cookies, but at the same time, by doing so you just made your whole app dynamic. Why? Cookies are a dynamic function, and by getting them in the top level layout you are effectively using cookies in every page now, even when you don't need them.
Now, the solutions i could come up with are:
Top level provider doesn't use cookies, and you pass them only at the request themselves, which doesn't seem possible with TRPC but I might be wrong.
Multiple providers only where I need them, which sounds pretty terrible, and will cause the context to be bounded only to that part of the component tree.
I'm really tempted to leave TRPC altogether and just use fetch and route handlers, but the type safety is so nice that I want to know if there are any better solutions. It's crazy that I haven't seen anyone talk abou this at length, I might be missing something because this is really inconvenient.