Skip to content

feat: graduate the linked install strategy from experimental to stable#9677

Merged
owlstronaut merged 1 commit into
release/v11from
backport/v11/9674
Jun 26, 2026
Merged

feat: graduate the linked install strategy from experimental to stable#9677
owlstronaut merged 1 commit into
release/v11from
backport/v11/9674

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Backport of #9674 to release/v11.

#9674)

Removes the experimental designation from `install-strategy=linked`
(isolated mode): drops the install-time warning and the `(experimental)`
note in the config docs. `linked` is now a supported, opt-in install
strategy. The default stays `hoisted`.

## Why

`install-strategy=linked` (RFC-0042) has been experimental since it
shipped, warning on every install. It has since been hardened
extensively — the discrepancies tracked in #9608, plus ~50 earlier PRs,
are resolved — and it now produces hoisted-equivalent results across
`install`/`ci`/`ls`/`query`/`explain`/`audit`/`sbom`/`exec`/`run`/`link`/`uninstall`,
the supply-chain controls (`allow-scripts`/`allow-remote`/`allow-git`,
`--strict-allow-scripts`), and the v12 features (`npm patch`,
`packageExtensions`, `.npm-extension`), with a project lockfile
identical to hoisted. It has also been exercised against the [Gutenberg
monorepo](WordPress/gutenberg#75814), which
powers the WordPress Block Editor. The experimental warning no longer
reflects its state.

## How

- `@npmcli/arborist` (`reify.js`): remove the `The "linked" install
strategy is EXPERIMENTAL and may contain bugs.` warning emitted on every
linked install.
- `@npmcli/config` (`definitions.js`): drop `(experimental)` from the
`install-strategy` description for `linked`.
- Regenerate the config docs snapshot to match.

The `node_modules/.store/` layout remains an internal implementation
detail. This does not change the default install strategy.

## References

- Hardening tracked in #9608
- RFC-0042 (isolated mode):
https://github.com/npm/rfcs/blob/main/accepted/0042-isolated-mode.md

(cherry picked from commit 86416a6)
@owlstronaut owlstronaut merged commit abd8c6b into release/v11 Jun 26, 2026
63 checks passed
@owlstronaut owlstronaut deleted the backport/v11/9674 branch June 26, 2026 17:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants