
What enterprise software actually needs from the Next.js App Router
Server Components, streaming, and typed data layers are not blog-demo features. They are how we keep enterprise software fast, cacheable, and maintainable after the original team rotates.
Sofia Rahman · Director of Engineering · 10 min · August 5, 2026
The App Router is a rendering model, not a folder fad. Enterprise software needs a clear split: server components fetch and authorize, client components handle interaction, and nothing in between leaks secrets into the browser bundle.
We default to streaming shells for authenticated products. The chrome and the permissioned data should not share a waterfall. Caching is explicit: tags, revalidation, and a policy for what is user-specific versus what is shared. Accidental personalization in a shared cache is an incident.
Typed end-to-end contracts (Zod on the boundary, generated types from the API) stop the slow death of “any” that appears six months after launch. Headless CMS content gets the same treatment: schemas, preview, and localization as code, not CMS folklore.
Performance budgets are release gates. If a template cannot hit its LCP target with production third parties enabled, it does not ship. That single rule has saved more enterprise software launches than any after-the-fact speed project.