Skip to content
Glossary

What Is Jamstack?

Jamstack is a web architecture based on pre-rendered static files served from a CDN, with dynamic functionality added via JavaScript and APIs — delivering fast, secure, and scalable sites.

Jamstack is a web architecture that pre-renders pages into static files at build time, serves them from a global CDN, and adds dynamic behavior through JavaScript and APIs in the browser. The name comes from its three parts: JavaScript, APIs, and Markup.

The core principle is simple: do as much work as possible ahead of time, before any user shows up. Instead of building a page on every request, a Jamstack site builds the page once during deployment, then ships the finished HTML to CDN edge nodes worldwide. Dynamic pieces — login state, user-specific data, live prices — load afterward via API calls from the client.

How a Jamstack site works

  1. Build time — a static site generator (Next.js SSG, Astro, Gatsby, Hugo) renders your content and templates into plain HTML, CSS, and JS files.
  2. Deploy — those files are pushed to a CDN with edge nodes around the globe. A git push typically triggers the build and deploy automatically.
  3. Request — when someone visits, the page is served from the nearest edge node as a finished file. There's no server rendering it on the fly.
  4. Hydrate and fetch — JavaScript in the browser then calls APIs (auth, database, payments, search) for anything that has to be live or personalized.

A short way to put it: the page structure is static and pre-built; the data inside it can still be dynamic.

Why teams choose it

  • Speed — serving a pre-built file from a nearby edge node skips the server round-trip that traditional rendering needs, so first paint is fast.
  • Security — there's no application server or database sitting directly in the request path for most pages, which removes a large class of attack surface.
  • Scaling — a CDN absorbs traffic spikes by design; you're serving files, not running per-request compute.
  • Workflow — content and code live in git, and deploys are reproducible builds rather than manual server changes.

Jamstack vs. traditional server rendering

JamstackTraditional (server-rendered)
HTML builtAt build time, onceOn every request
Served fromCDN edgeOrigin server
Dynamic dataClient-side via APIsServer-side per request
Scaling under loadCDN handles itAdd/scale servers
Best forContent-heavy, mostly-read sitesHighly personalized, write-heavy apps

It is not the same as a pure static site

This is the most common misunderstanding. A pure static site has no dynamic data at all. Jamstack uses static files as the delivery mechanism but layers live behavior on top through APIs. A Jamstack e-commerce site can still show real inventory, take payments, and authenticate users — those just happen through API calls rather than full server-rendered pages.

The shift to hybrid

Strict 100% static Jamstack is less common today. Most production sites now run a hybrid model: a static or edge-cached shell, server components for routes that need fresh data, edge functions for lightweight logic, and client-side API calls for the rest. Next.js App Router is the most widely used implementation of this — static routes are pre-rendered, while dynamic routes use server components or APIs, all from one codebase.

Common mistakes

  • Forcing everything static. A dashboard that's different for every user gains little from build-time rendering. Use Jamstack for the content layer, server logic for the rest.
  • Forgetting build-time cost. A site with tens of thousands of pages can have slow builds. Incremental or on-demand rendering exists for exactly this.
  • Treating it as serverless-free. APIs and edge functions still run somewhere; Jamstack moves that work off the critical render path, it doesn't delete it.

Key takeaways

  • Jamstack = pre-rendered Markup + JavaScript + APIs, served from a CDN.
  • Static delivery, dynamic data — not a static site.
  • Best fit: content-led, mostly-read sites (marketing, blogs, docs, storefronts).
  • Modern practice is hybrid, with Next.js App Router as the common base.

Most real projects don't need to choose between fully static and fully dynamic. I build sites — like Pizzeria Bestek on React and Supabase — using a Jamstack-style static frontend talking to live APIs, picking which routes are pre-rendered and which fetch on demand based on how often the data actually changes. For a recommendation on your specific stack, contact for a quote.

Continue reading

Want this built?