Staged publishing adds an approval step before packages go live on the npm registry. Instead of publishing directly with npm publish, you can submit packages to a staging area with npm stage publish. A maintainer must then review and explicitly approve the staged package — with two-factor authentication (2FA) via the CLI or npmjs.com — before it becomes publicly available.
Staged publishing is useful when you want an extra review step before a package version becomes available on the registry.
You can use staged publishing for both new and existing packages. When you stage a package that does not yet exist, npm publishes a placeholder version of the package with the version 0.0.0-stage. This placeholder version is publicly available, but the staged version and its contents are not publicly available until a maintainer approves the staged package. After approval, the staged version is published to the package page.
Note: Staged publishing requires npm CLI version 11.15.0 or later and Node version 22.14.0 or higher.
Staged publishing has three steps:
Before using staged publishing, ensure the following:
On the command line, navigate to the root directory of your package.
cd /path/to/package
To stage your package, run:
npm stage publish
This submits your package to a staging area.
Note: npm stage publish does not require 2FA.
After you stage a package, you can inspect it in the CLI or on npmjs.com.
To list staged packages you have access to:
npm stage list [<package-spec>]
To view details for a specific staged package:
npm stage view <stage-id>
To download the staged package tarball for inspection:
npm stage download <stage-id>
Open the Staged Packages tab to review staged packages and find the package you want to approve.
To publish a staged package to the registry, approve it with 2FA.
To approve a staged package and publish it to the live registry:
npm stage approve <stage-id>
On npmjs.com, review the staged package in the Staged Packages tab, then click Approve.
Note: You will be prompted for 2FA verification whether you approve the package in the CLI or on npmjs.com.
On npmjs.com, you can approve or reject multiple staged package versions with one confirmation and one 2FA challenge. Each batch applies the same action to every selected version.
Note: Batch actions are rolling out gradually and may not be available on your account yet.
To remove a version from the batch, clear its In batch checkbox.
Batch limits:
N is the number of selected versions.
Keep the page open while the batch runs. The progress dialog shows a completion count and a status for each version:
When processing finishes, review the results and click Close to refresh the staged package list. Successfully published or rejected versions no longer appear in the list.
Note: Batch actions are independent. If one version fails, other versions can still succeed. Successful actions are not rolled back.
Try failed versions individually for more details. If the dialog reports an expired authorization or an unconfirmed result, refresh the page and check the current state before starting a new batch. If the dialog offers Retry because the results could not be finalized, click it to check completion again.
If a problem continues, contact npm Support with the package name and version.
If you use trusted publishing (OIDC) from CI/CD, you can use staged publishing to submit a package for review before it goes live. A maintainer must still review and approve the staged package with 2FA.
For more information on configuring trusted publisher permissions, see "Trusted publishing for npm packages."