Skip to main content
Introducing packages.sweber.dev
All packages
BetaMIT + Pro

DerivativeSelf-hosted changelog and "What's new" widget, built from your Changesets, CHANGELOG.md or commits. No SaaS, no tracking.

pnpm add @sweberdev/derivative

Derivative 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.

FeatureFreePro
Changelog parsers, CLI and Atom feedIncludedIncluded
Widget, React bindings and highlightsIncludedIncluded
Read statistics and reportNot includedIncluded
Audience segments and scheduled releasesNot includedIncluded
E-mail digest and chat announcementsNot includedIncluded
LicenceMITPer person
SupportGitHub issuesAgency and Lifetime

Pro

Pro packagesAdd-ons on top of the core.

  • @weber-development/derivative-insights

    Counts opens, reads and link clicks per release on your own endpoint, without cookies or visitor IDs, and renders a report.

  • @weber-development/derivative-segments

    Shows entries only to the plans or roles they are meant for and publishes releases on a schedule.

  • @weber-development/derivative-announce

    Sends 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
Subscribe

Agency

Recommended

For teams of up to ten named people, one price.

CHF 290

per year

2 months free

  • Up to 10 people
  • Support included
Subscribe

Lifetime

Pay once for up to ten people and keep updates and repository access.

CHF 990

one-time

  • Up to 10 people
  • Support included
Buy lifetime licence

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.
Read the licence terms

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.