You may notice is only ms for 10 GraphQL queries (this is local development environment). Typically backend server need to go through authentication for every request. Having 10 requests means backend server need to go through authentication 10 times, while it only needs one time when batching them in one request . X-Run-Time-ms 40 For page that requires authentication in React application, usually it calls API to get user information first, then displays menu and content based on user information. this leads to sequence API call pattern: first API call is for user information, second is for the other contents. How can we avoid this sequential API calls to get user information? Think about one type of server-side rendering, that SSR returns state of store and client use it as initial state to hydrate the client store ( in such context). Usually API call to get user information does not depend on anything and should be same . What if we alway run API of getting user information on server, but not via new server-side rendering way. This can be done via traditional server rendering. We can serve the of react application in (in java) and calls API of getting user information and return it as . rehydrate redux index.html jsp window.__INITIAL_STATE__ This turns out great that most of pages in my react application only generate one request.