JAMstack ist eine Web-Architektur, die das Frontend vorab zu statischem Markup auf einem CDN baut, mit JavaScript und APIs für dynamische Funktionen. Das Akronym – JavaScript, APIs, Markup – ruht auf zwei Prinzipien: Prerendering (das Frontend wird im Voraus zu optimierten statischen Dateien gebaut) und Entkopplung (Frontend und Backend sprechen ausschließlich über APIs miteinander). Die Neujustierung, die dieses Glossar ergänzt und die Frontend-Leitfäden auslassen: Das A ist ein Backend. Das berühmte “kein Server” von JAMstack heißt nicht, dass es kein Backend gibt – es heißt der Server von jemand anderem, erreichbar über eine API.
Das Wichtigste in Kürze
| Frage | Antwort |
|---|---|
| JAM | JavaScript (Browser) · APIs (dynamisch) · Markup (vorgeneriert, statisch) |
| Die zwei Prinzipien | Prerendering + Entkopplung |
| Auslieferung | Statische Dateien aus einem CDN – kein Origin-Rendering je Anfrage |
| Das “A” | APIs = ein Backend (BaaS, Funktionen, Headless-Dienste) |
| “Ist es tot?” | Der Begriff ging in Rente; die Architektur gewann und wurde hybrid |
Das JAM in der Praxis
// 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. // Flutter / Dart — Back4app Flutter SDK
// A prebuilt shell, made dynamic by API calls — the JAMstack pattern
final query = QueryBuilder<ParseObject>(ParseObject('Comment'))
..whereEqualTo('postSlug', 'what-is-jamstack');
final comments = await query.query();
render(comments.results);
// Static delivery + dynamic-via-API: the backend is a BaaS, not a server
// you provision — auth, data, and functions reached over one API. // Swift — Back4app Swift SDK
// A prebuilt shell, made dynamic by API calls — the JAMstack pattern
let comments = try await Comment.query("postSlug" == "what-is-jamstack").find()
render(comments)
// Static delivery + dynamic-via-API: the backend is a BaaS, not a server
// you provision — auth, data, and functions reached over one API. // Kotlin — Back4app Android SDK
// A prebuilt shell, made dynamic by API calls — the JAMstack pattern
val query = ParseQuery.getQuery<ParseObject>("Comment")
query.whereEqualTo("postSlug", "what-is-jamstack")
val comments = query.find()
render(comments)
// Static delivery + dynamic-via-API: the backend is a BaaS, not a server
// you provision — auth, data, and functions reached over one API. Die Seiten-Shell wurde vorab gebaut und vom Edge ausgeliefert; die Kommentare – der dynamische Teil – treffen zur Laufzeit über einen API-Aufruf ein. Dieser eine Aufruf ist die gesamte Architektur im Kleinen: statisch, wo es geht, API, wo es sein muss – und der “Server” hinter der API ist ein Dienst, den Sie konsumieren, statt ihn selbst zu betreiben.
Klassischer Stack vs. JAMstack
| Klassisch (serverseitig gerendert) | JAMstack | |
|---|---|---|
| HTML entsteht | Je Anfrage, auf dem Origin | Zur Build-Zeit, vorgeneriert |
| Ausgeliefert von | Einem Origin-Webserver | Einem CDN-Edge |
| Dynamische Daten | Inline aus der DB gerendert | JavaScript, das APIs aufruft |
| Kopplung | Frontend und Backend verschmolzen | Entkoppelt über APIs |
| Angriffsfläche | Origin + DB offen | Statische Dateien + eine gehärtete API |
Woher das Dynamische tatsächlich kommt
Der Abschnitt, den die Suchergebnisse meiden, weil er den “Serverless”-Zauber bricht. Jeder dynamische Bedarf einer JAMstack-Seite entspricht einem API-Aufruf, und hinter dieser API steht ein Backend, das jemand betreibt:
- Authentifizierung → ein Identitätsdienst oder ein BaaS, der Tokens ausstellt.
- Daten → eine Content- oder Datenbank-API, die JSON zurückgibt.
- Formulare → eine Serverless-Funktion oder ein Formulardienst.
- Suche, Kommentare, Handel → APIs von Dritten oder aus dem eigenen Backend.
Die ehrliche Beschreibung von JAMstack lautet also statisches Frontend + entkoppeltes Backend, und das natürliche Backend ist ein BaaS: Es liefert die dynamischen 20 % – Datenbank, Authentifizierung, Cloud-Funktionen, automatisch generierte APIs – ohne dass Sie einen Server bereitstellen. Anbieterseiten schieben hier ein Headless-CMS nach vorn, das nur Inhalte verwaltet; ein BaaS deckt das gesamte dynamische Backend ab, und genau deshalb ist dieses Gespann die vollständigste Antwort auf die Frage, wie eine statische Seite dynamisch sein kann.
Die Sicherheitsdividende
Entkopplung ist nicht nur eine Performance-Geschichte, sondern eine Sicherheitsposition. Ohne Origin-Server, der Seiten rendert, und ohne Datenbank im Pfad der Anfrage sieht das öffentliche Web nur statische Dateien – die sich nicht per SQL-Injection angreifen lassen und keinen ausnutzbaren serverseitigen Code ausführen. Die einzige lebende Oberfläche ist die API-Grenze: separat gehostet, unabhängig gehärtet und in der Regel weit schmaler als die eines Monolithen. Der Eintrag zur entkoppelten Architektur verallgemeinert diesen Nutzen; bei JAMstack zeigt er sich darin, dass ein Angreifer ein CDN voller flacher HTML-Dateien vorfindet, wo früher der Origin-Server stand.
Ist JAMstack tot? Das ehrliche Urteil
Die meistgestellte Frage verdient eine klare Antwort. Das Akronym ist verblasst – sein Urheber hat die Marke “JAMstack” um 2023 zugunsten von “composable” und “moderner Web-Architektur” aufgegeben, und die Marketingenergie ist weitergezogen. Die Architektur hat gewonnen. “Vorgenerieren, was geht, den Rest über APIs holen, aus einem CDN ausliefern” hörte auf, eine Bewegung zu sein, und wurde zum Standard, aufgesogen von Headless-Plattformen, hybriden Meta-Frameworks und Edge-Rendering. Verändert hat sich die Strenge: Das reine Alles-statisch wich dem Mischen aus vorgenerierten und serverseitig gerenderten Routen je Seite. JAMstack ist also nicht tot; es ist zur Selbstverständlichkeit des modernen Webs geworden – und braucht dafür keinen Namen mehr.
Typische Anwendungsfälle
- Marketing, Dokumentation und Blogs – Inhalte, die für alle gleich sind und sich nach Plan ändern: vorgenerieren und vom Edge ausliefern.
- Online-Shops – statische Produktseiten hinter einem CDN, Warenkorb und Kasse über APIs.
- SEO-sensible Seiten – vorgeneriertes HTML, das Crawler sofort lesen, ohne Einbußen durch die JS-Ausführung.
- Statisches Frontend + BaaS – die dynamischen 20 % (Authentifizierung, Daten, Formulare) über ein verwaltetes Backend.
- Starts mit viel Traffic – das CDN fängt Lastspitzen ab, wie es ein Origin-Server nicht kann.
Sollten Sie JAMstack einsetzen? Entscheidungsmatrix
| Situation | Tendenz |
|---|---|
| Content, Dokumentation, Marketing, SEO zuerst | JAMstack – sein Heimspiel |
| Statisches Frontend, das dynamische Daten braucht | JAMstack + ein BaaS für die API |
| Stark personalisierte Seiten je Anfrage | Serverseitiges Rendering oder Edge |
| Echtzeit-App mit hoher Interaktivität | Clientseitiges Rendering + Live-Daten |
| Sehr viele Seiten, häufige Änderungen | Hybrid – einen Teil vorgenerieren, den Rest rendern |
| Kleine Angriffsfläche hat Vorrang | JAMstack – die Sicherheitsdividende |
Grenzen und Trade-offs
- Build-Zeiten wachsen mit der Seite. Tausende Seiten vorab zu bauen macht Deployments langsam; große oder schnell wechselnde Kataloge drängen zur hybriden Neugenerierung.
- Dynamisch heißt verdrahten. Jede interaktive Funktion ist eine API-Integration; die Einfachheit liegt auf der Auslieferungsseite, nicht zwingend auf der Bauseite.
- Redaktion ist weniger schlüsselfertig. Nicht-technische Redakteure brauchen ein Headless-CMS oder eine Verwaltungsschicht; ein eingebautes “diese Seite bearbeiten” wie im monolithischen CMS gibt es nicht.
- Sie hängen von APIs ab, die Ihnen nicht gehören. Dienste Dritter im Pfad der Anfrage bringen Risiken bei Verfügbarkeit und Versionierung mit – die Entkopplung schneidet in beide Richtungen.
- Nicht alles gehört statisch. Personalisierung je Anfrage und Echtzeitdaten sträuben sich gegen das Vorgenerieren; die moderne Antwort heißt mischen, nicht erzwingen.
JAMstack mit Back4app
Back4app ist eine Open-Source-Plattform für Backend as a Service (BaaS), die eine verwaltete Datenbank, automatisch generierte REST- und GraphQL-APIs, Authentifizierung, Dateispeicher und Serverless-Funktionen mit Cloud Code kombiniert. Es ist genau das “A”, das eine JAMstack-Seite braucht: Die statische Shell wird vorab gebaut und aus einem CDN ausgeliefert, und jeder dynamische Aufruf des JavaScripts – Anmeldung, Lese- und Schreibvorgänge, Formularübermittlungen, Suche – landet bei einer Back4app-API, ohne Origin-Server, den Sie betreiben müssten, und mit ACLs, die die einzige lebende Oberfläche härten, die diese Architektur überhaupt offenlegt. Das Gespann vervollständigt ehrlich die “Serverless”-Erzählung, die die Code-Tabs skizzieren: statische Auslieferung vom Edge, dynamisches Verhalten aus einem verwalteten Backend und die Sicherheitsdividende eines öffentlichen Webs, das flache Dateien sieht statt Ihrer Datenbank.
Häufige Fragen
Was ist JAMstack?
Eine Web-Architektur, die das Frontend zur Build-Zeit vorab zu statischem Markup baut, es aus einem CDN ausliefert und für alles Dynamische clientseitiges JavaScript nutzt, das APIs aufruft – Frontend und Backend sind dabei entkoppelt. Es ist ein Muster, kein Framework und kein Produkt.
Wofür steht JAM?
JavaScript, APIs und Markup. JavaScript läuft im Browser für die Interaktivität; APIs liefern die dynamischen Daten und die serverseitigen Operationen; Markup ist das vorgenerierte statische HTML, das vom Edge ausgeliefert wird. Die beiden Grundprinzipien hinter dem Akronym sind Prerendering und Entkopplung.
Was ist der Unterschied zwischen JAMstack und einem klassischen Stack?
Ein klassischer Stack wie ein datenbankgestütztes CMS rendert jede Seite je Anfrage auf einem Server aus der Datenbank. JAMstack liefert vorgenerierte statische Dateien aus einem CDN aus und ruft APIs nur für die dynamischen Teile auf – kein Origin-Server, der die Seite bei jedem Besuch rendert, und keine Datenbank, die zum öffentlichen Web hin offenliegt.
Können JAMstack-Seiten dynamisch sein?
Ja – die dynamische Funktionalität kommt zur Laufzeit über JavaScript, das APIs aufruft: Serverless-Funktionen, ein Headless-CMS, Dienste Dritter oder ein Backend as a Service. Der "statische" Teil ist nur die Shell; Authentifizierung, Daten, Suche und Handel kommen allesamt über API-Aufrufe.
Wie regeln Sie Authentifizierung, Daten und Formulare ohne Backend?
Sie haben sehr wohl ein Backend – nur erreichen Sie es über APIs, statt es selbst zu betreiben. Die Authentifizierung läuft über einen Identitätsdienst oder ein BaaS mit Tokens; Daten kommen aus einer Content- oder Datenbank-API; Formulare gehen an eine Serverless-Funktion oder einen Formulardienst. Jeder "dynamische" Bedarf entspricht einem API-Aufruf.
Was ist der Unterschied zwischen JAMstack und SSR?
Der Zeitpunkt. SSR rendert HTML je Anfrage auf dem Server; JAMstack rendert zur Build-Zeit vor und liefert statische Dateien aus. Moderne Frameworks mischen beides – statische Routen vorgeneriert, dynamische Routen serverseitig gerendert oder neu erzeugt. Genau dieser Hybrid ist das, wozu sich die JAMstack-Idee entwickelt hat.
Ist JAMstack tot?
Der Marketingbegriff ist verblasst – sein Urheber hat das Label um 2023 zugunsten von "composable" und "moderner Web-Architektur" aufgegeben. Die Architektur aber hat gewonnen: vorgenerieren, was geht, den Rest über APIs holen und aus einem CDN ausliefern ist heute schlicht die Art, wie ein Großteil des Webs gebaut wird – in Headless-CMS, hybriden Frameworks und Edge-Plattformen.
Wann sollten Sie JAMstack einsetzen?
Es glänzt bei Content-, Marketing-, Dokumentations- und SEO-sensiblen Seiten, bei denen Tempo und eine kleine Angriffsfläche zählen, sowie bei Shop-Fronten, die über APIs versorgt werden. Weniger passend ist es für stark echtzeitorientierte oder je Anfrage personalisierte Apps – dort ist serverseitiges oder Edge-Rendering das bessere Werkzeug.