Jamstack architecture is a way of building websites in which pages are pre-rendered into static files at build time, served from a CDN, and made dynamic in the browser with JavaScript that calls APIs. The name originally stood for JavaScript, APIs and Markup. Instead of a server building every page on each request, as a traditional WordPress or PHP site does, most of the work happens once, before anyone visits.
This guide explains how Jamstack architecture works, how it compares with traditional server-rendered sites, which tools are used today, and an honest answer to a question the 2023 version of this post didn’t need to ask: is Jamstack still relevant? It includes a small example I built with Astro to show the build-time model in practice.
The Three Parts: JavaScript, APIs and Markup
| Part | Role | Examples |
|---|---|---|
| Markup | HTML generated ahead of time from templates and content, then deployed as static files | Astro, Next.js static export, Hugo, Eleventy, Jekyll |
| APIs | Anything dynamic or server-side: content, search, payments, authentication, forms | Headless CMSs, Stripe, Auth0/Clerk, Algolia, your own serverless functions |
| JavaScript | Runs in the browser to add interactivity and call those APIs | Plain JavaScript, React, Vue, Svelte components |
The key idea is decoupling: the front end is built and hosted separately from the back-end services it uses. Content often lives in a headless CMS that exposes it through an API instead of rendering pages itself.
How Jamstack Architecture Works
- Write content and code. Developers commit code to Git; editors write content in a headless CMS or as Markdown files.
- Build. A push to Git or a CMS webhook triggers a build. The static site generator fetches content from APIs and turns templates into plain HTML, CSS and JavaScript files.
- Deploy to a CDN. The files are uploaded to a CDN, so every visitor gets them from a server close to them, with no application server or database in the request path.
- Add dynamic features at runtime. In the browser, JavaScript calls APIs or serverless functions for things that can’t be pre-built: search, comments, carts, logged-in content.
Git push / CMS webhook
|
v
Build step --- fetches content from APIs (headless CMS, Markdown, databases)
|
v
Static HTML, CSS, JS --> CDN (edge servers worldwide) --> Browser
|
v
APIs and serverless functions at runtime
(search, auth, payments, forms)A Minimal Example: Fetching an API at Build Time
Here is an Astro page that fetches a list of posts from an API. The code between the --- fences runs only during the build, never in the visitor’s browser:
---
// Runs at build time only: fetch content from an API (a headless CMS in a real site)
const res = await fetch('http://localhost:3000/posts');
const posts = await res.json();
---
<html lang="en">
<head>
<meta charset="utf-8" />
<title>My Jamstack blog</title>
</head>
<body>
<h1>Latest posts</h1>
<ul>
{posts.map((post) => <li>{post.title}</li>)}
</ul>
</body>
</html>I built it with Astro 7.4 against a small local API returning one post. The build took under a second and produced this dist/index.html, with no JavaScript files at all:
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>My Jamstack blog</title></head><body><h1>Latest posts</h1><ul><li>Hello HTTP</li></ul></body></html>Then I added a second post to the API. The deployed file did not change; it still showed one post. Only after running the build again did the new post appear:
build 1: <ul><li>Hello HTTP</li></ul>
after adding a post: <ul><li>Hello HTTP</li></ul> (unchanged)
build 2: <ul><li>Hello HTTP</li><li>Why I moved my blog to static</li></ul>That is the Jamstack trade-off in one test: pages are just files, which makes them fast, cheap and hard to break, but content changes require a rebuild. In production, a CMS webhook triggers that rebuild automatically.
Jamstack vs Traditional Architecture
| Traditional (e.g. WordPress, PHP) | Jamstack | |
|---|---|---|
| When pages are built | On every request, by the server | Once, at build time |
| What serves visitors | Application server plus database | CDN serving static files |
| Performance | Depends on server and caching | Fast by default; files are cached at the edge |
| Security | Server, database and plugins are exposed to every request | Smaller attack surface; no server or database in the request path |
| Scaling | Needs more servers or heavy caching | CDNs absorb traffic spikes |
| Content updates | Live immediately | Need a rebuild (or incremental regeneration) |
| Dynamic and personalized pages | Natural | Need client-side JavaScript, APIs or server functions |
| Editing experience | Built-in admin and preview | Depends on the headless CMS; previews need extra setup |
For a deeper look at the traditional side, see how a WordPress website renders. You can also combine the two: headless WordPress with Next.js and GraphQL keeps WordPress as the editor while the front end is pre-rendered.
Benefits of Jamstack
- Performance: pre-built HTML served from a CDN means a fast first byte everywhere and good Core Web Vitals with little effort.
- Security: there is no web server or database for attackers to reach on each request, and dynamic features are delegated to specialized APIs.
- Scalability and cost: serving static files is cheap, and CDNs handle sudden traffic without extra servers. Many hosts have generous free tiers.
- Developer experience: Git-based workflows, preview deployments for every pull request, and instant rollbacks to a previous build.
- Portability: the output is plain files that can be hosted almost anywhere.
Limitations
- Build times grow with the number of pages; a site with tens of thousands of pages can take many minutes to rebuild.
- Content freshness: updates appear only after a rebuild, which doesn’t suit news sites or rapidly changing inventory unless you use incremental approaches.
- Highly dynamic or personalized apps such as dashboards and social feeds end up doing most of their work in client-side JavaScript or server functions, which removes much of the benefit.
- More moving parts: a CMS, a build pipeline, a host and several APIs, each with its own account and pricing.
- Editor experience: live previews in a headless CMS take extra configuration compared with a traditional CMS.
Is Jamstack Still Relevant in 2026?
The name has faded; the ideas have not. Netlify, which popularized the term, now talks more about “composable” architecture, and The New Stack reported that the Jamstack community Discord was closed and some developers consider the term dead, while Netlify’s CEO argued that the architecture has simply become the normal way to build for the web. Netlify acquired Gatsby in 2023, and Gatsby, once the flagship Jamstack framework, is rarely chosen for new projects today.
What happened is that modern frameworks absorbed Jamstack’s principles and removed the “everything must be static” restriction. You can now choose per page:
- Static generation for pages that rarely change (classic Jamstack).
- Incremental regeneration, such as Next.js ISR, which rebuilds individual pages in the background after a set time or on demand, fixing the rebuild-everything problem.
- Islands, as in Astro, where a static page loads JavaScript only for the interactive components that need it.
- Server or edge rendering for personalized pages, close to the user.
So if you build a marketing site, blog or documentation with Astro or Next.js, pull content from a headless CMS and deploy it to a CDN-backed host, you are building a Jamstack site, whatever it is called.
Jamstack Tools in 2026
| Category | Common choices |
|---|---|
| Frameworks and static site generators | Astro, Next.js, Nuxt, SvelteKit, Hugo, Eleventy (Jekyll and Gatsby are mostly legacy) |
| Headless CMS | Contentful, Sanity, Strapi, Storyblok, Payload, headless WordPress (see the best headless CMS options) |
| Hosting and CDN | Netlify, Vercel, Cloudflare Pages/Workers, AWS Amplify, GitHub Pages |
| Serverless functions | Netlify Functions, Vercel Functions, Cloudflare Workers, AWS Lambda |
| APIs and services | Stripe (payments), Algolia (search), Auth0 or Clerk (auth), form services |
Choosing between these frameworks? See my overview of the top JavaScript frameworks in 2026.
When to Use Jamstack
| Good fit | Poor fit |
|---|---|
| Blogs, documentation and marketing sites | Real-time apps such as chat or live dashboards |
| Portfolios and landing pages | Pages that are different for every logged-in user |
| Content sites with a moderate number of pages | Sites with hundreds of thousands of frequently changing pages (unless you use incremental regeneration) |
| E-commerce catalogs with a hosted checkout | Teams that need a traditional all-in-one CMS with no developer involvement |
Best Practices
- Serve everything from a CDN, with long cache lifetimes for hashed assets (see how CDNs work).
- Automate builds from Git and trigger rebuilds from CMS webhooks.
- Use preview deployments for every pull request so changes can be reviewed before going live.
- Ship as little client-side JavaScript as possible; prefer islands or server components over hydrating the whole page.
- Keep secrets in serverless functions or build-time environment variables, never in browser code.
- Use incremental regeneration or on-demand rebuilds when full rebuilds get slow.
Conclusion
Jamstack means building pages ahead of time, serving them from a CDN and adding dynamic features through JavaScript and APIs. It makes sites fast, secure and cheap to run, at the cost of rebuilds and more moving parts. The label has faded, but its principles now sit at the heart of frameworks like Astro and Next.js, which let you mix static, incrementally regenerated and server-rendered pages in one project. For content-driven sites, it is still one of the best ways to build.
FAQs
What is Jamstack?
A web architecture where pages are pre-rendered into static files at build time, served from a CDN, and made dynamic with JavaScript and APIs. The name originally stood for JavaScript, APIs and Markup.
What does JAM stand for in Jamstack?
JavaScript, APIs and Markup. Today the name is usually written “Jamstack” because the approach is no longer strictly limited to those three parts.
Is Jamstack dead?
The name is used much less, and Netlify now emphasizes “composable” architecture, but the principles of pre-rendering, CDNs, decoupled front ends and APIs are standard in modern frameworks such as Astro and Next.js.
What is the difference between Jamstack and a traditional website?
A traditional site builds each page on the server at request time using a database. A Jamstack site builds pages ahead of time and serves static files from a CDN, using APIs for dynamic features.
Is Next.js a Jamstack framework?
It can be. Next.js supports static generation and incremental regeneration, which follow the Jamstack model, as well as server rendering, which does not. Many projects mix all three.
Can a Jamstack site have dynamic content?
Yes. Dynamic features such as search, comments, forms, payments and user accounts are handled by JavaScript calling APIs or serverless functions, or by server-rendering specific pages.
Is WordPress Jamstack?
Not in its traditional form, because it renders pages on the server for each request. Used as a headless CMS behind a static or pre-rendered front end, it can be part of a Jamstack setup.








