Skip to content

node_runtime: Respect npm release-age filters for managed npm installs#56957

Merged
benbrandt merged 3 commits into
mainfrom
npm-install-times
May 18, 2026
Merged

node_runtime: Respect npm release-age filters for managed npm installs#56957
benbrandt merged 3 commits into
mainfrom
npm-install-times

Conversation

@benbrandt

Copy link
Copy Markdown
Member

Zed-managed npm installers were resolving a concrete latest version with
npm info and then installing package@version. That is brittle when users
configure npm release-age filtering via before or min-release-age: npm's
installer applies those rules during resolution, but our pinned install target
could disagree with it, and therefore fail to install.

This changes managed npm installs to install package@latest and let npm apply
its own resolver and user config. The local latest-version lookup remains as a
best-effort cache freshness check, not as the exact install target.

Exact extension API installs remain unchanged because extensions explicitly
request a package and version. If we want to revisit that we can.

Self-Review Checklist:

  • I've reviewed my own diff for quality, security, and reliability
  • Unsafe blocks (if any) have justifying comments
  • The content is consistent with the UI/UX checklist
  • Tests cover the new/changed behavior
  • Performance impact has been considered and is acceptable

Closes #53611

Release Notes:

  • Fixed npm-backed tool installs to better respect npm release-age filters.

@cla-bot cla-bot Bot added the cla-signed The user has signed the Contributor License Agreement label May 16, 2026
@zed-community-bot zed-community-bot Bot added the staff Pull requests authored by a current member of Zed staff label May 16, 2026
@benbrandt benbrandt added this pull request to the merge queue May 18, 2026
Merged via the queue into main with commit 2a00db0 May 18, 2026
44 checks passed
@benbrandt benbrandt deleted the npm-install-times branch May 18, 2026 21:17
TomPlanche pushed a commit to TomPlanche/zed that referenced this pull request May 20, 2026
zed-industries#56957)

Zed-managed npm installers were resolving a concrete latest version with
`npm info` and then installing `package@version`. That is brittle when
users
configure npm release-age filtering via `before` or `min-release-age`:
npm's
installer applies those rules during resolution, but our pinned install
target
could disagree with it, and therefore fail to install.

This changes managed npm installs to install `package@latest` and let
npm apply
its own resolver and user config. The local latest-version lookup
remains as a
best-effort cache freshness check, not as the exact install target.

Exact extension API installs remain unchanged because extensions
explicitly
request a package and version. If we want to revisit that we can.

Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Closes zed-industries#53611

Release Notes:

- Fixed npm-backed tool installs to better respect npm release-age
filters.
@benbrandt

Copy link
Copy Markdown
Member Author

/cherry-pick stable

zed-zippy Bot added a commit that referenced this pull request May 21, 2026
#56957) (cherry-pick to stable) (#57439)

Cherry-pick of #56957 to stable

----
Zed-managed npm installers were resolving a concrete latest version with
`npm info` and then installing `package@version`. That is brittle when
users
configure npm release-age filtering via `before` or `min-release-age`:
npm's
installer applies those rules during resolution, but our pinned install
target
could disagree with it, and therefore fail to install.

This changes managed npm installs to install `package@latest` and let
npm apply
its own resolver and user config. The local latest-version lookup
remains as a
best-effort cache freshness check, not as the exact install target.

Exact extension API installs remain unchanged because extensions
explicitly
request a package and version. If we want to revisit that we can.

Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX

checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Closes #53611

Release Notes:

- Fixed npm-backed tool installs to better respect npm release-age
filters.

Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
TomPlanche pushed a commit to TomPlanche/zed that referenced this pull request Jun 2, 2026
zed-industries#56957)

Zed-managed npm installers were resolving a concrete latest version with
`npm info` and then installing `package@version`. That is brittle when
users
configure npm release-age filtering via `before` or `min-release-age`:
npm's
installer applies those rules during resolution, but our pinned install
target
could disagree with it, and therefore fail to install.

This changes managed npm installs to install `package@latest` and let
npm apply
its own resolver and user config. The local latest-version lookup
remains as a
best-effort cache freshness check, not as the exact install target.

Exact extension API installs remain unchanged because extensions
explicitly
request a package and version. If we want to revisit that we can.

Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

Closes zed-industries#53611

Release Notes:

- Fixed npm-backed tool installs to better respect npm release-age
filters.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed The user has signed the Contributor License Agreement staff Pull requests authored by a current member of Zed staff

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Copilot fails to start due to .npmrc package age policy

2 participants