What is JAMstack?

Last updated: July 2026

JAMstack is a web architecture that prebuilds the frontend into static markup on a CDN, with JavaScript and APIs for dynamic features. The acronym — JavaScript, APIs, Markup — rests on two principles: pre-rendering (the frontend is built into optimized static files ahead of time) and decoupling (frontend and backend communicate only over APIs). The reframe this glossary adds, and the one the frontend guides skip: the A is a backend. JAMstack’s famous “no server” doesn’t mean no backend — it means someone else’s server, reached over an API.

Key takeaways

QuestionAnswer
JAMJavaScript (browser) · APIs (dynamic) · Markup (prebuilt static)
The two principlesPre-rendering + decoupling
DeliveryStatic files from a CDN — no per-request origin render
The “A”APIs = a backend (BaaS, functions, headless services)
“Is it dead?”The term retired; the architecture won and went hybrid

The JAM in practice

// JavaScript — the JAM in practice: static Markup, browser JS, an API for the dynamic
// The page shell was prebuilt at build time and served from a CDN.
// The dynamic 20% — auth, data, comments — is this API call at runtime:
const query = new Parse.Query('Comment');
query.equalTo('postSlug', 'what-is-jamstack');
const comments = await query.find();
render(comments); // "no server" really means: someone else's server, via an API
// The A in JAM = APIs = a backend. A BaaS is that backend, with no server to run.

The page shell was prebuilt and served from the edge; the comments — the dynamic part — arrive at runtime through an API call. That single call is the whole architecture in miniature: static where you can be, API where you must be, and the “server” behind the API is a service you consume rather than one you run.

Traditional stack vs. JAMstack

Traditional server-rendered stack versus JAMstackIn a traditional stack, each visitor request hits an origin web server that queries a database and renders HTML per request. In JAMstack, the frontend is prebuilt into static markup at build time and served from a CDN, and the browser's JavaScript calls decoupled APIs for dynamic data, so no origin server or database is exposed on the request path.

JAMstack (prebuilt + API)

JS calls APIs
for dynamic data

Visitor

CDN
prebuilt static markup

Decoupled APIs
BaaS · functions · CMS

Traditional (per request)

Visitor

Origin server
renders HTML

Database

In a traditional stack, each visitor request hits an origin web server that queries a database and renders HTML per request. In JAMstack, the frontend is prebuilt into static markup at build time and served from a CDN, and the browser's JavaScript calls decoupled APIs for dynamic data, so no origin server or database is exposed on the request path.
Traditional (server-rendered)JAMstack
HTML madePer request, on the originAt build time, prebuilt
Served fromAn origin web serverA CDN edge
Dynamic dataRendered inline from the DBJavaScript calling APIs
CouplingFrontend and backend fusedDecoupled over APIs
Attack surfaceOrigin + DB exposedStatic files + a hardened API

Where the dynamic actually comes from

The section the SERP avoids because it breaks the “serverless” spell. Every dynamic need on a JAMstack site maps to an API call, and behind that API is a backend someone runs:

  • Auth → an identity service or BaaS issuing tokens.
  • Data → a content or database API returning JSON.
  • Forms → a serverless function or form service.
  • Search, comments, commerce → third-party or backend APIs.

So the honest description of JAMstack is static frontend + decoupled backend, and the natural backend is a BaaS: it supplies the dynamic 20% — database, auth, cloud functions, auto-generated APIs — with no server for you to provision. Vendor pages push a headless CMS here, which handles content only; a BaaS handles the whole dynamic backend, which is why the pairing is the most complete answer to “how is a static site dynamic?”

The security dividend

Decoupling isn’t only a performance story; it’s a security posture. With no origin server rendering pages and no database on the request path, the public web sees static files, which can’t be SQL-injected and run no server-side code to exploit. The only live surface is the API boundary — separately hosted, independently hardened, and usually far narrower than a monolith’s. The decoupled architecture entry generalizes the benefit; on JAMstack it shows up as an attacker finding a CDN full of flat HTML where the origin server used to be.

Is JAMstack dead? The honest verdict

The most-asked question deserves the plain answer. The acronym faded — its originator retired the “JAMstack” branding around 2023 for “composable” and “modern web architecture,” and the marketing energy moved on. The architecture won. “Prebuild what you can, fetch the rest via APIs, serve from a CDN” stopped being a movement and became a default, absorbed into headless platforms, hybrid meta-frameworks, and edge rendering. What evolved is the rigidity: pure static-everything gave way to mixing prebuilt and server-rendered routes per page. So JAMstack isn’t dead; it’s the water the modern web swims in, no longer needing a name.

Common use cases

  • Marketing, docs, and blogs — content that’s the same for everyone and changes on a schedule: prebuild and serve from the edge.
  • E-commerce storefronts — static product pages fronted by a CDN, cart and checkout via APIs.
  • SEO-sensitive sites — prebuilt HTML that crawlers read instantly, no JS-execution penalty.
  • Static frontend + BaaS — the dynamic 20% (auth, data, forms) over a managed backend.
  • High-traffic launches — the CDN absorbs spikes the way an origin server can’t.

Should you use JAMstack? A decision matrix

SituationLean
Content, docs, marketing, SEO-firstJAMstack — its home turf
Static frontend needing dynamic dataJAMstack + a BaaS for the API
Heavily personalized, per-request pagesServer-side rendering or edge
Real-time, highly interactive appClient rendering + live data
Huge page counts, frequent changesHybrid — prebuild some, render the rest
Small attack surface a priorityJAMstack — the security dividend

Limitations and trade-offs

  • Build times grow with the site. Prebuilding thousands of pages makes deploys slow; large or fast-changing catalogs push toward hybrid regeneration.
  • Dynamic means wiring. Every interactive feature is an API integration; the simplicity is on the delivery side, not necessarily the build side.
  • Content editing is less turnkey. Non-technical editors need a headless CMS or admin layer; there’s no built-in “edit this page” like a monolithic CMS.
  • You depend on APIs you don’t own. Third-party services on the request path add availability and versioning risk — the decoupling cuts both ways.
  • Not everything should be static. Per-request personalization and real-time data fight the prebuild model; the modern answer is to mix, not to force.

JAMstack on Back4app

Back4app is an open-source Backend-as-a-Service (BaaS) platform that combines a managed database, auto-generated REST and GraphQL APIs, authentication, file storage, and Cloud Code serverless functions. It is precisely the “A” a JAMstack site needs: the static shell prebuilds and serves from a CDN, and every dynamic call the JavaScript makes — login, data reads and writes, form submissions, search — resolves to a Back4app API, with no origin server for you to run and the ACLs hardening the one live surface the architecture exposes. The pairing is the honest completion of the “serverless” story the code tabs sketch: static delivery from the edge, dynamic behavior from a managed backend, and the security dividend of a public web that sees flat files instead of your database.

Frequently asked questions

What is JAMstack?

A web architecture that prebuilds the frontend into static markup at build time, serves it from a CDN, and uses client-side JavaScript calling APIs for anything dynamic — decoupling the frontend from the backend. It is a pattern, not a framework or product.

What does JAM stand for?

JavaScript, APIs, and Markup. JavaScript runs in the browser for interactivity; APIs supply the dynamic data and server-side operations; Markup is the prebuilt static HTML served from the edge. The two founding principles beneath the acronym are pre-rendering and decoupling.

Who created JAMstack and when?

The term was coined in 2015 by Mathias Biilmann (often co-credited to Chris Bach) at the static-hosting platform that pioneered the model, as a short way to name decoupled frontends that talk to APIs and are served statically from a CDN.

What is the difference between JAMstack and a traditional stack?

A traditional stack like a database-backed CMS renders each page on a server per request from a database. JAMstack serves prebuilt static files from a CDN and calls APIs only for the dynamic parts — no origin server rendering the page on every visit, and no database exposed to the public web.

Can JAMstack sites be dynamic?

Yes — the dynamic functionality is delivered at runtime by JavaScript calling APIs: serverless functions, a headless CMS, third-party services, or a backend-as-a-service. The "static" part is only the shell; auth, data, search, and commerce all arrive through API calls.

How do you handle auth, data, and forms without a backend?

You do have a backend — reached over APIs rather than run by you. Auth goes through an identity service or BaaS with tokens; data comes from a content or database API; forms post to a serverless function or a form service. Every "dynamic" need maps to an API call.

What is the difference between JAMstack and SSR?

Timing. SSR renders HTML on the server per request; JAMstack pre-renders at build time and serves static files. Modern frameworks blend them — static routes prebuilt, dynamic routes server-rendered or regenerated — which is the hybrid the JAMstack idea evolved into.

Is JAMstack dead?

The marketing term faded — its originator retired the label around 2023 in favor of "composable" and "modern web architecture." But the architecture won: prebuild what you can, fetch the rest via APIs, serve from a CDN is now simply how much of the web is built, living inside headless CMS, hybrid frameworks, and edge platforms.

What is a headless CMS and how does it fit?

A content store that exposes content over an API with no built-in frontend. The static site generator or frontend consumes it at build or runtime — the classic JAMstack content source, and one example of the broader "backend behind an API" the architecture depends on.

When should you use JAMstack?

It excels for content, marketing, docs, and SEO-sensitive sites where speed and a small attack surface matter, plus e-commerce fronts backed by APIs. It fits less well for heavily real-time or per-request-personalized apps, where server-side or edge rendering is the better tool.

Related terms

Compare with

Further reading

Ready to build your backend?

Start your project on Back4app in minutes — database, auth, APIs, and Cloud Code included. No credit card required.

Written and reviewed by Back4app Engineering, Back4app Engineering · Published 2026-07-30