Insights

Engineering

The pragmatic full-stack TypeScript setup in 2026

Server components, typed RPC and edge runtimes changed the defaults. What we now reach for on a new product build and why.

ASI TECH INC · June 29, 2026 · 7 min read

Framework churn is exhausting, but the current generation genuinely removed work.

Where the code runs is a design decision Rendering on the server by default cuts the client bundle and the waterfall. Reach for client interactivity deliberately, not habitually.

Typed RPC beats hand-written endpoints End-to-end type inference between server functions and components deletes an entire category of integration bug and the schema drift that came with it.

Our defaults - File-based routing with loaders that prefetch on the server - A query cache on the client for anything user-mutable - Schema validation at every boundary, including internal ones - Edge runtime for read paths, regional compute for heavy writes

Keep an escape hatch Every abstraction leaks eventually. Keep business logic in plain modules that do not import framework code, and swapping the framework stops being a rewrite.

More notes like this