

Web Development
2026-07-06 · 7 min read
Sapun Lamichhane
Founder & CEO of Arcetis
Static sites are faster for a specific, mechanical reason, not a vague one. A static site's HTML is generated once, at build time, and served as-is from a server or CDN — there's no database query, no server-side rendering computation, and no application logic running per request between a visitor's click and the page appearing. A dynamic site has to do real work on every single request, no matter how well-optimized that work is. Static removes an entire category of per-request work rather than merely speeding it up.
This site is a real example of that, not a description of the idea in the abstract. There are no API routes, no server actions, and no middleware in it — its own build configuration describes it, in plain terms, as middleware-free and fully static. Pages, including this one, are generated at build time, and even the contact form doesn't route through a server on this domain at all — it submits directly from the browser to a third-party form-handling service. There's no server-side application code running on a visitor's request, which is exactly why Core Web Vitals can be treated as a hard requirement decided at build time, instead of a problem discovered after launch and patched in later.
That structure helps Core Web Vitals specifically, not just "speed" in a general sense. Largest Contentful Paint improves because there's no server-side computation delay between the request and the first byte of real content arriving. Cumulative Layout Shift is easier to keep low because content dimensions are known and stable at build time, rather than streaming in after a client-side data fetch shifts the layout around it. And Interaction to Next Paint benefits indirectly, since a page that isn't also managing server round-trips has more of the main thread free to respond to input when it matters.
None of that makes static universally better, and the honest framing matters here. A static site's content is only as fresh as its last build. Anything that genuinely needs to change per request or per visitor — real-time inventory counts, a logged-in dashboard showing personal data, prices that vary by location or account tier, live availability — cannot be pre-rendered at build time, because the content by definition isn't the same for every visitor, or doesn't exist yet when the build runs.
The specific cases where static genuinely breaks down as a choice: e-commerce with real-time stock levels across many SKUs, any page gated behind authentication showing personal content, a marketplace or booking platform where availability changes minute to minute, or a site publishing so frequently that a full rebuild-and-redeploy cycle can't keep pace with it. Forcing any of those onto a static architecture doesn't make them faster — it makes them wrong, either serving confidently stale data or requiring enough client-side JavaScript patched on top to erase the performance advantage that made static worth choosing in the first place.
The actual decision isn't "static versus dynamic" as a permanent identity for a company's whole web presence — it's a per-project, sometimes per-page decision based on whether the content is genuinely the same for every visitor at any given moment. A marketing site, a blog, a service page, a portfolio — all static-shaped, because nothing on them is personalized per visitor. A logged-in account dashboard or a live checkout flow — not static-shaped, no matter how much of the rest of the site is.
The honest, non-generic version of "should this be static" is a question about the content itself, not a technology preference: if every visitor sees the same thing until the next deliberate publish, static is very likely the right, faster, simpler choice. The moment a page's content depends on who's looking or what changed a minute ago, that advantage stops applying — and the wrong move is forcing it to stay static anyway, rather than reaching for server rendering where it's actually earned.