[AskJS] How do you release libraries updates with breaking changes?

This page summarizes the projects mentioned and recommended in the original post on /r/javascript

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • tsParticles

    tsParticles - Easily create highly customizable JavaScript particles effects, confetti explosions and fireworks animations and use them as animated backgrounds for your website. Ready to use components available for React.js, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Inferno, Solid, Riot and Web Components.

    I'm working on a new version of a npm library and the v2 changelog is huge, with a lot of breaking changes (removed some old code to decrease the bundle size, split some features to plugin libraries).

  • react-codemod

    React codemod scripts

    Codemods - providing automated tooling to change old patterns to new ones can go a long way in helping drive adoption of the new version. The most notable example of doing this is react-codemod (many other examples exist)

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

  • mithril-codemods

    jscodeshift-powered [email protected] to [email protected] transformations

    Codemods - providing automated tooling to change old patterns to new ones can go a long way in helping drive adoption of the new version. The most notable example of doing this is react-codemod (many other examples exist)

  • jscodeshift

    A JavaScript codemod toolkit.

    Codemods are basically babel scripts that transform source code. The most commonly used tool for doing them is called jscodeshift

  • rfcs

    RFCs for substantial changes / feature additions to Vue core (by vuejs)

    RFCs. Stands for "request for comments" and is basically means writing a design document proposing and explaining changes before implementing them. The idea is to document rationale, etc to get community feedback early on, before any code is even written. This also doubles as a heads up regarding what changes are coming in the pipeline. The TC39 proposals, and Vue RFCs are examples of this. They might not help with the retroactive breaking changes that are already implemented, but they could help informing design decisions going forward - as you might be realizing by now, solid semantics are very very important, and RFCs can help immensely in getting them right from the beginning

  • semver

    Semantic Versioning Specification

    Release candidates. This means releasing v2 early using semver prerelease suffixes (see https://semver.org/, bullet 9). The idea is to provide your power users with a way to test the waters with the new codebase and get feedback to fix bugs and inform your migration strategy, before you roll out the official breaking change release. Another similar way of doing this is having a canary channel. Node.js "latest" releases are one example.

  • Mithril.js

    A JavaScript Framework for Building Brilliant Applications

    I went through a v1 -> v2 full rewrite transition w/ mithril.js and while I did some of the things I listed above, there were still other things that I could've done better. Doing a smooth transition is hard, but don't get discouraged, try your best, and I guarantee you'll learn a ton of very valuable stuff that will help you later in your career. Good luck!

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts