Safeguard
Developer Tools•

How do you let app teams preview a design system update safely?

Publish the update under a next dist tag so only teams that opt in install it, then promote it to latest after feedback. Steps and what to watch.

Safeguard Security Team
4 min read

Publish the new version under a separate dist tag such as next, so a normal install keeps getting the stable release while volunteer apps opt in. After a few teams have run it, promote the version to latest. This gives you real world feedback before every app is exposed.

How npm tags make this work

The npm documentation explains that publishing sets the latest tag by default unless you pass the tag option, for example publishing with the beta tag. It also says a plain install of a package, with no version or tag, installs the version under latest. The dist-tag command can add, remove and list tags on a package afterwards.

So a version published under next sits in the registry without being anyone's default. Teams who run an install with the next tag, or pin the exact version, receive it. Everyone else is unaffected. More background is in npm dist-tags: what latest means for your installs.

A rollout in steps

  1. Merge the change to the library and run all gates: unit, visual, build of a sample app, and a dependency scan.
  2. Publish under the next tag. Use a pre release version number, as semver.org allows for pre release labels, so it is clear this is not final.
  3. Pick two or three pilot apps with different shapes: one large, one small, one with unusual styling. See the idea in pilot group for patch testing: who to pick.
  4. Ask pilots to install it in a branch, run their own tests, and report problems in one place.
  5. Fix and republish under next as needed.
  6. Promote by tagging the verified version as latest, and write release notes.
  7. Remove the next tag or move it to the following pre release so the channel stays meaningful.

What to watch during the pilot

SignalWhat it tells you
Install errors in pilot appsPeer range or lockfile conflicts
Visual diffs in their own testsStyle or token changes that your stories missed
Bundle size changeNew or duplicated dependencies
Runtime errors in stagingBehavior changes unit tests did not cover
New findings in their scansTransitive dependencies you introduced

Security fixes and previews

A preview channel suits feature work and risky upgrades. A security fix usually needs speed over ceremony: give it a short pilot or use your fast lane, as discussed in should a security dependency fix wait for the next release train. The idea of trying a fix on a small slice first is also covered in canary a dependency fix before full rollout.

Pitfalls

Do not let next become a second stable channel that apps stay on for months. Do not publish breaking changes under latest by mistake: check the tag in the publish output. And do not skip the dependency scan because it is only a preview, since pilot apps may deploy to staging with real credentials.

Safeguard can scan the pre release's dependency tree before you promote it, so a new transitive package does not slip in unnoticed. A free scan is available at gold.safeguard.sh/scan.

Quick check

Does publishing under next change latest?

No. With a tag specified, npm publishes to that tag and leaves latest where it was.

How long should a preview run?

Long enough for each pilot app to run its full test suite and deploy to staging. Set the exit criteria before you start.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.