Next.js + separate Rails serviceServer Component → Rails API → Suspense
The Next server calls a Rails JSON or GraphQL endpoint. Authorization, tenancy,
locale, tracing, caching context, and response contracts cross that application
boundary before React resumes rendering.
Best fit: the API and independent frontend are intentional product boundaries.
React on Rails ProRails request → async prop → Suspense
Rails policies, scopes, caches, and query objects stay in the active page request.
Each resolved async prop fulfills a request-scoped Promise in the Node renderer and
flushes its Suspense boundary into the same browser response.
Best fit: Rails owns the product, domain logic, and request context.