Changelog Vorlage für React: RSS, E-Mail und Permalinks
Auf der Changelog-Seite prüft ein Käufer, ob sich dein Produkt noch bewegt, und ein Nutzer erfährt, dass das Feature, um das er gebeten hat, endlich da ist. An der zweiten Aufgabe scheitern die meisten: Niemand denkt daran, eine Seite zu besuchen, und das Release, an dem ihr einen Monat gearbeitet habt, lesen fünf Leute. Dieses Tutorial baut im Next.js App Router eine Changelog Vorlage, zu der Leute zurückkommen: datierte Releases, gruppiert nach Neu, Verbessert und Behoben, eine Seite pro Release, ein RSS-Feed und eine E-Mail-Anmeldung, alles aus einer einzigen Datendatei. Die UI ist unsere Vorlage Changelog Page, wir sind also nicht neutral. Datenmodell, Routen und Feed funktionieren aber genauso mit jeder anderen React Changelog Komponente oder Vorlage für Release Notes.
Was macht ein SaaS Changelog lesenswert?
Ein SaaS Changelog wird gelesen, wenn es sich leicht überfliegen und leicht verfolgen lässt. Beim ersten Punkt herrscht weitgehend Einigkeit. Keep a Changelog 1.1.0 (opens in a new tab) (geprüft am 6. November 2026) nennt die Grundsätze: für Menschen geschrieben, ein Eintrag für jede Version, Änderungen derselben Art zusammengefasst, Versionen, die man verlinken kann, die neueste zuerst und bei jeder ein Release-Datum, empfohlen im ISO-Format (2026-11-06).
Keep a Changelog gruppiert nach sechs Typen: Added, Changed, Deprecated, Removed, Fixed und Security. Das passt zu einer Bibliothek für Entwickler. Ein Produkt-Changelog, das Kunden lesen, lässt sich mit weniger Gruppen leichter überfliegen. Die Changelog-Vorlage von Gleap (opens in a new tab) (aktualisiert am 27. September 2026, geprüft am 6. November 2026) stellt New, Improved und Fixed nach vorn, ergänzt Deprecated und Security und warnt, dass zu viele Labels ein Changelog schwerer lesbar machen. Wir gehen einen Schritt weiter und bleiben bei drei. So verteilen sich die sechs darauf:
Der zweite Punkt, das Verfolgen, bekommt weniger Aufmerksamkeit. Als wir am 6. November 2026 nach „changelog page template“ gesucht haben, standen oben Vorlagen für Page Builder (Framer, Ceptile), ein Starter mit Next.js und MDX auf GitHub und Textformate für einen einzelnen Eintrag zum Kopieren. Sie kümmern sich darum, wie die Seite aussieht. Kaum etwas davon behandelt die drei Dinge, die Leser zurückholen: einen Link pro Release, der dauerhaft funktioniert, einen Feed und eine E-Mail, wenn etwas live geht.
Wie installierst du die Changelog-Vorlage?
Ein Befehl kopiert die Vorlage und die Teile, die sie importiert. Sie ist ein Pro-Item, das Konto hinter der CLI braucht also Wingo UI Pro.
Du bekommst components/templates/changelog-page.tsx und changelog-page-data.ts, dazu alles, was die beiden nutzen: die kostenlose Marketing Section (für den Seitenhintergrund, die Überschrift und das E-Mail-Formular), Marketing Header und Footer, die Segmented Control für den Filter New / Improved / Fixed, das Badge für die Gruppenlabels und den Tag Latest und die Pagination für Load older releases. Ohne die Prop releases rendert die Vorlage acht Beispiel-Releases eines erfundenen Produkts namens Acme.
$ npx wingo-ui@latest add changelog-pageWie speicherst du Releases, damit Seite, Feed und E-Mails übereinstimmen?
In einer schlichten TypeScript-Datei. Die Seite, die Seiten pro Release, die RSS-Route und alles, was E-Mails verschickt, importieren sie. So kann ein Release nicht an einer Stelle auftauchen und an einer anderen fehlen.
Der Typ-Import kostet auf dem Server nichts: Typen verschwinden beim Build, und changelog-page-data.ts hat ohnehin keine "use client"-Direktive, du könntest also auch CHANGELOG_RELEASES daraus importieren. Beim Slug-Helper ist das anders: changelog-page.tsx ist ein Client-Modul, und eine Server Component, die eine Funktion daraus aufruft, bekommt einen Fehler statt eines Strings. Kopierst du den Einzeiler, bleiben deine Slugs identisch mit den Ankern der Vorlage, und aus 1.4.0 wird überall v1-4-0.
glyph und tone wählen das gezeichnete Cover (die Glyph-Schlüssel stehen in CHANGELOG_GLYPHS: timeline, repeat, workflow, doc, chart, plug, cloud, shield, sparkles). Gib cover eine Bild-URL mit, wenn du stattdessen einen Screenshot zeigen willst.
Wie renderst du die Changelog-Seite im App Router?
Teil sie in zwei Dateien auf, wie bei jeder Client-Vorlage: eine Server-page.tsx für die Metadaten und einen kleinen Client-Wrapper für alles, was eine Funktion ist (linkComponent, onSubscribe).
Drei Props übersieht man leicht. Mit header={false} reserviert die Vorlage keinen Platz mehr für ihre eigene Sticky-Leiste. Gib die Höhe deines Headers also über --topbar-offset weiter, sonst rutscht die Versionsleiste darunter. Ohne onLoadMore wartet Load older releases 700 ms, um eine Anfrage vorzutäuschen; ein No-op macht den Button sofort, wenn die Daten lokal liegen. Und jeder sichtbare Text steckt in labels: Der Titel nennt Acme, und die Beschreibung verspricht jede Woche ein Release, bis du beides änderst.
Warum braucht jedes Release eine eigene Seite?
Weil der Anker-Link bricht, sobald die Liste paginiert, und weil sich ein Release unter einer eigenen URL am leichtesten teilen lässt. Jedes Release auf der Seite hat eine id (v1-4-0), und die Versions-Pill verlinkt darauf. Die Seite rendert anfangs aber nur pageSize Releases (standardmäßig 4). Ein Link auf /changelog#v1-0-0 aus einer alten E-Mail landet also oben auf einer Seite, auf der es dieses Release noch gar nicht gibt.
Eine statische Seite pro Release löst das und gibt RSS-Einträgen, E-Mails und Posts einen Link, der immer funktioniert. ChangelogReleaseEntry, der Teil, mit dem die Vorlage jedes Release rendert, zeigt eins auch für sich allein an:
Das Release ist reines JSON und gelangt deshalb problemlos aus der Server-Page in den Client-Wrapper. Achte auf subscribers={0}: Die Newsletter Section zeigt standardmäßig eine Beispielzahl von 12.400 Lesern. In einer Demo ist das in Ordnung, auf deiner Website ist es eine erfundene Zahl. Bei null wird diese Zeile ausgeblendet.
$ npx wingo-ui@latest add newsletter-sectionWie fügst du einem Next.js-Changelog einen RSS-Feed hinzu?
Mit einem Route Handler, der dieselben releases liest und RSS 2.0 zurückgibt. Verlinke jeden Eintrag auf seine Release-Seite und pack die gruppierten Änderungen in die Beschreibung, damit Leser das ganze Release sehen, ohne ihren Feedreader zu verlassen.
Die Beschreibung wird absichtlich zweimal escaped: einmal für den Text im HTML, einmal, damit das HTML selbst im XML gültig ist. Seit Next.js 15 werden GET Route Handler standardmäßig nicht gecacht, erst force-static macht den Feed zu einer Datei, die einmal pro Deploy gebaut wird. Mit aktivierten Cache Components lässt du diese Zeile weg: Ein Handler, der keine Request-Daten liest, wird ohnehin vorgerendert. Mittag UTC (T12:00:00Z) hält das Release für Leser zwischen UTC-12 und UTC+11 auf seinem Kalendertag; die Vorlage geht noch weiter und formatiert ihre Datumsangaben in UTC, sodass alle Besucher denselben Tag sehen. Ein Beispiel im echten Einsatz: Unser eigenes Changelog funktioniert genau so, mit einer Seite pro Version und einem RSS-Feed. Betreibst du auch einen Blog, behandelt der Beitrag zum Next.js Blog Template einen JSON Feed neben RSS.
Wie schließt du die E-Mail-Anmeldung an?
onSubscribe bekommt die getrimmte, bereits validierte E-Mail-Adresse. Das Formular zeigt einen Spinner, solange das Promise läuft, die Erfolgsmeldung, wenn es erfolgreich abschließt, und die Fehlermeldung, wenn es fehlschlägt. Der letzte Punkt ist wichtig: Eine Server Action, die { ok: false } zurückgibt, schließt trotzdem erfolgreich ab, und der Besucher sieht „You're in“. Wirf stattdessen einen Fehler.
Nutze Double Opt-in und antworte bei einer neuen, einer noch unbestätigten und einer bestehenden Adresse gleich, damit niemand über das Formular herausfinden kann, wer auf deiner Liste steht. Die Standard-Erfolgsmeldung sagt bereits „Check your inbox to confirm“ und passt damit zu diesem Ablauf. Wenn du ein Release veröffentlichst, schick pro Release eine kurze E-Mail mit Titel, Zusammenfassung und einem Link auf seine Seite. So wird die Seite pro Release zum Ziel jeder E-Mail, die du verschickst.
Wie zeigst du in der App, was neu ist?
Die öffentliche Seite erreicht Leute, die nach ihr suchen. Angemeldete Nutzer erreichst du leichter: Zeig die letzten paar Releases direkt in der App, in einem Panel „Was ist neu“ oder im Hilfemenü. Eine komplette Changelog-Seite ist dort zu schwer; die Timeline passt in ein Seitenpanel und liest dieselben Daten.
timePosition="side" stellt die Datumsangaben in eine eigene Spalte am Zeilenanfang, sobald die Timeline 512px breit ist, und schiebt sie in einem schmalen Panel oder auf dem Smartphone unter den Titel. Das ist eine Container Query, sie reagiert also auf die Breite des Panels. timeFormat="date" gibt den Tag aus; das Standardformat relative („vor 3 Tagen“) passt besser zu Activity Feeds als zu Releases. Jeder Titel verlinkt auf die Release-Seite.
Welche Fehler passieren auf Changelog-Seiten häufig?
- Commit-Messages als Einträge. „fix tz offset in date util“ sagt einem Kunden nichts, „Fälligkeitsdaten verschieben sich über Zeitzonen hinweg nicht mehr um einen Tag“ dagegen schon. Beschreib das Symptom, das die Nutzer gesehen haben.
- Bündeln. Eine Änderung pro Zeile. Eine neue Integration und ein Fix in der Abrechnung sind zwei Einträge in zwei Gruppen.
- Lange Pausen. Ein Changelog, dessen neuester Eintrag fünf Monate alt ist, sagt einem Käufer genau das Gegenteil von dem, was du willst. Liefer kleine Releases aus und schreib sie gleich mit auf.
- Tote Follow-Buttons. Der RSS-Button der Vorlage zeigt standardmäßig auf
/changelog/rss.xml. Bau die Route oder gibrssHref=""mit, um ihn auszublenden. - Beispielinhalte in Produktion. Durchsuch die gerenderte Seite vor dem Launch nach Acme: Standardtitel, Beschreibung, Newsletter-Zahl und, falls du sie behältst, Header und Footer der Vorlage.
Für den Rest der Marketing-Website (Preise, Kontakt, Rechtliches, About) behandelt der Guide zum SaaS Website Template jede Seite und zeigt, wie sie sich ein Layout teilen. Weitere Anleitungen Schritt für Schritt findest du in der Kategorie Praxis: Screens und Apps. Die Support-Seite derselben Website, mit Suche, Themen und Artikeln, behandelt unser Guide zum Help Center Template.
Wo fängst du an?
Kopier die Datendatei und die Routen von oben, installier dann die Vorlage mit npx wingo-ui@latest add changelog-page und ersetz die Beispiel-Releases durch deine letzten drei. Die Vorlage, die Timeline und die Newsletter Section gehören zu Wingo UI Pro: $8 im Monat, $80 im Jahr oder einmalig $150 (Preise). In der Vorlage Changelog Page kannst du dich vorher durch alle drei Designs klicken (classic, minimal und editorial).
Häufige Fragen
Was gehört auf die Changelog-Seite eines SaaS?
Die Releases, die neuesten zuerst, jedes mit Version, ISO-Datum, kurzem Titel, einer Zusammenfassung in einem Satz und den Änderungen nach Typ gruppiert (neu, verbessert, behoben). Dazu ein Permalink pro Release, ein RSS-Feed und eine E-Mail-Anmeldung, damit Leser folgen können, ohne selbst ans Nachsehen denken zu müssen.
Was ist der Unterschied zwischen Changelog und Release Notes?
Ein Changelog ist die fortlaufende Aufzeichnung aller Releases, an einem Ort und in einem Format. Release Notes beschreiben meist ein einzelnes Release ausführlicher, oft als E-Mail oder Blogbeitrag, der auf den passenden Eintrag im Changelog zurückverlinkt.
Wie füge ich einem Next.js-Changelog einen RSS-Feed hinzu?
Leg unter app/changelog/rss.xml/route.ts einen Route Handler an, der dasselbe releases-Array wie die Seite liest und RSS 2.0 als XML mit dem Content-Type application/rss+xml zurückgibt. Markier ihn als force-static und trag ihn in den Metadaten der Seite unter alternates.types ein, damit Feedreader ihn finden.
Sollte jedes Release im Changelog eine eigene Seite haben?
Ja, sobald du mehr Releases hast, als auf den ersten Bildschirm passen. Eine statische Seite pro Release gibt RSS-Einträgen, E-Mails und Social Posts einen Link, der immer funktioniert, und jede Seite bekommt ihren eigenen Titel und ihre eigene Beschreibung für die Suche.
Ist die Changelog-Vorlage von Wingo UI kostenlos?
Nein. Die Vorlage Changelog Page, die Timeline und die Newsletter Section sind Pro-Items und lassen sich mit npx wingo-ui@latest add installieren, sobald dein Konto Pro hat. Die Marketing Section, auf der sie aufbauen, ist kostenlos.
- Changelog
- Next.js
- Vorlagen
- RSS
