DerivativeSelf-hosted changelog and "What's new" widget, built from your Changesets, CHANGELOG.md or commits. No SaaS, no tracking.
pnpm add @sweberdev/derivativeDerivative turns the changelog you already keep into a "What's new" button for your app. It reads Changesets output, any CHANGELOG.md in the Keep a Changelog or conventional-changelog style, or conventional commits with version tags, and writes a static changelog.json, an Atom feed and a changelog page.
The widget is a single web component of about 6 kB gzipped with an unread badge, keyboard and screen reader support, dark mode and labels in English, German, French and Italian. The feed ships with your app and the read state stays in the browser, so there is no third-party service, no cookie and nothing to add to your privacy policy. A lean alternative to hosted tools such as Beamer or Headway.
Example
A short exampleCopy it into your project.
header.html
<!-- package.json: "build": "derivative build && vite build" -->
<header>
<a href="/">Acme</a>
<derivative-widget src="/changelog.json" lang="de"></derivative-widget>
</header>
<script type="module">
import "@sweberdev/derivative/widget"
</script>Features
What you getFree under MIT, with Pro on top.
Free, MIT
- Reads Changesets (default and GitHub formats), Keep a Changelog, conventional-changelog and conventional commits with tags
- derivative build writes changelog.json, an Atom feed and a standalone changelog page
- <derivative-widget>: popover or inline, unread badge, about 6 kB gzipped, no dependencies
- Accessible: labelled dialog, focus handling, Escape to close, reduced motion respected
- Labels and dates in English, German, French and Italian; dark mode and CSS custom properties
- Highlights: a title, summary and image for the releases that matter
- React bindings: <WhatsNew>, useChangelog and an unstyled <ChangelogList>
Pro
- Read statistics without cookies or visitor IDs: opens, reads and link clicks per release, with an HTML report
- Audience segments: entries only for certain plans or roles, via rules or a [for: pro] marker, and scheduled releases
- Announcements: an e-mail digest in your branding and posts to Slack, Teams, Discord, Mattermost and Google Chat
Compare
Free and ProSide by side.
| Feature | Free | Pro |
|---|---|---|
| Changelog parsers, CLI and Atom feed | Included | Included |
| Widget, React bindings and highlights | Included | Included |
| Read statistics and report | Not included | Included |
| Audience segments and scheduled releases | Not included | Included |
| E-mail digest and chat announcements | Not included | Included |
| Licence | MIT | Per person |
| Support | GitHub issues | Agency and Lifetime |
Pro
Pro packagesAdd-ons on top of the core.
@weber-development/derivative-insightsCounts opens, reads and link clicks per release on your own endpoint, without cookies or visitor IDs, and renders a report.
@weber-development/derivative-segmentsShows entries only to the plans or roles they are meant for and publishes releases on a schedule.
@weber-development/derivative-announceSends new releases as an e-mail digest and to Slack, Teams, Discord, Mattermost and Google Chat.
Pricing
PricingPrices are in CHF.
Freelancer
For one person working on client projects.
CHF 90
per year
2 months free
- 1 person
- No support entitlement
Agency
RecommendedFor teams of up to ten named people, one price.
CHF 290
per year
2 months free
- Up to 10 people
- Support included
Lifetime
Pay once for up to ten people and keep updates and repository access.
CHF 990
one-time
- Up to 10 people
- Support included
11 people or more: get in touch
- After cancelling, every version you already received keeps working. Only updates and repository access end.
- No licence key, no phone-home. The Pro packages never contact a server to check your licence.
- Agency and Lifetime cover up to ten named people for one price: you choose the number of seats at checkout and assign them in Polar. Your clients and their websites need no licence of their own.
- Checkout, invoices and VAT are handled by Polar as merchant of record.
FAQ
QuestionsShort answers.
Does Derivative send data to a server?
No. The feed is a static file you deploy with your app, and the widget stores the last release a reader has seen in their browser's local storage. Nothing else is stored or sent.
I don't use Changesets. Does it still work?
Yes. Derivative also reads Keep a Changelog and conventional-changelog files, or builds the feed from conventional commits and version tags. You can also write changelog.json by hand or from a CMS.
Can I write friendlier release notes than my commit messages?
Yes. Highlights in derivative.config.json add a title, a summary and an image to any release, while the generated entries stay as they are.
Does it work without React?
Yes. The widget is a standard web component that works in any framework or plain HTML. The React package is an optional wrapper.
Can I use the open-source part on its own?
Yes. @sweberdev/derivative and @sweberdev/derivative-react are MIT-licensed and complete without Pro. Pro adds statistics, segments and announcements on top of the same changelog.json.
Articles
ArticlesGuides and release notes.
2026-10-05
Derivative 0.1.0 releasedA self-hosted changelog and "What's new" widget, built from the Changesets, CHANGELOG.md or commits you already have. No SaaS, no tracking, about 6 kB.