Current issues and future plans
One big concern with client-side routing and Single-Page Apps in general is accessibility. Without proper care to manage focus and expose accessibility information through transitions, tools like VoiceOver will fail to announce page changes. That can potentially lead to the user being unaware that page content has changed. Gatsby uses ARIA live regions and a hidden element on a page to announce page changes, so all page transitions in Gatsby should be announced (see Add accessible routing PR, which was recently merged and released).
Gatsby isn’t the only framework that produces a Single-Page App. This is a problem for a big part of the web at the moment. We can’t solve it alone or on a user level – there should be more focused efforts to establish accessibility standards and initiatives that address issues that are unique to web apps. Without those efforts a big part of the web will always be less accessible.
In addition to partial hydration, it could be beneficial to only render some parts of the page first, especially during Single-Page App route transitions. This would lead to a smaller page-data file. It could be made possible with, for example, the
@defer directive in GraphQL. Parts of the data that would be deferred wouldn’t be included in the main page data bundle, but would instead be loaded after the initial, critical page data bundle.