# What changed in @yarnpkg/core

> 68 changes in @yarnpkg/core 3 from its official release notes, upgrade guides and advisories: 31 breaking, 15 new APIs and options. Each one cited. Sources checked 2026-11-12. HTML: https://unstale.sh/npm/@yarnpkg/core/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @yarnpkg/core 3

### Breaking changes

- This configuration option was removed; build state moved into the install state. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Cache files must be regenerated because their timestamps changed to address a zip specification flaw affecting third-party tools. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- CLI definitions are now exposed on the entry point rather than on .command. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This API was removed; use formatUtils.pretty instead. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Immutable installs now default to enabled on CI; set YARN_ENABLE_IMMUTABLE_INSTALLS=false to allow mutations. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Use this type-safe API in place of the removed configuration.format. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The git: protocol now fetches HEAD by default instead of the hardcoded master branch. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The json option was removed; use jsonResponse instead. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Use jsonResponse in place of the removed json option. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Use this configuration option in place of the removed initVersion and initLicense options. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This configuration option was removed; use initFields instead. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Node 10 is no longer supported. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The description field was removed; use formatUtils.json with the PACKAGE_EXTENSION type. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- PnP now generates .pnp.cjs files regardless of the manifest type field. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Projects using portal dependencies with the node-modules linker must use this Node option to access their dependencies. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The Prettier SDK no longer uses PnPify; plugins must now be specified in Prettier's plugins configuration property. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This method was removed; the build state is now in Project.storedBuildState. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This API was removed; use structUtils.stringifyIdent instead. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The virtual folder was renamed to __virtual__. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The virtual folder used to disambiguate peer dependencies now uses this name. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Set this environment variable to false to allow mutations when immutable installs are enabled by default on CI. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Use --mode=skip-build in place of the renamed --skip-builds flag. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The --skip-builds flag was renamed to --mode=skip-build. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Build state is now stored in the install state at this path. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The command upgrades builtin plugins too, unless --skip-plugins is set. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The -a alias was removed; use -A or --all instead. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Use -A or --all in place of the removed -a alias. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This is the new name for @yarnpkg/plugin-node-modules. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This package was renamed to @yarnpkg/plugin-nm. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The package was split into @yarnpkg/sdks, @yarnpkg/pnpify, and @yarnpkg/nm. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Plugins can no longer access yup; Typanion is used instead. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)

### New APIs and options

- Yarn's builtin shell now supports background jobs with color-coded output. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Set this new flag to false to exclude YNxxxx message names from output. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The node-modules linker can now utilize hardlinks, with strategies selected through nmMode. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This setting selects the node_modules strategy: classic, hardlinks-local, or hardlinks-global. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- A new command removes a setting from local configuration, or from home configuration with -H. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The new -s or --save flag saves the patch instead of only printing it. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The command can install specific versions of official plugins and downloads plugins compatible with the current CLI by default. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This new command removes resolutions previously set by yarn link. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The new recursive flag upgrades the specified package regardless of where it is. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The new --prerelease flag replaces how prereleases were previously handled. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The new --from <glob> flag, when combined with -R, targets workspaces reachable from the matching workspaces. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- An official ESBuild resolver is now provided under this package name. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This package now contains the node_modules tree builder and hoister. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This package now contains the Editor SDKs. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The new enableMessageNames flag can be set to false to omit YNxxxx names from output. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)

### Performance

- The command should boot significantly faster on large projects. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)

### Behavior and default changes

- Builtin patches that fail to apply now emit a warning and use the original sources instead of causing an error. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- PnP projects can now use the Node exports field regardless of Node version. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Yarn's builtin shell now supports redirections from file descriptors. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The PnP hook now supports the node: protocol. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Workspaces now get self-references under this linker, so requiring a workspace's own package.json works without most absolute aliases. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Running yarn install in a Yarn v1 project now automatically enables this linker to ease migrations. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- yarn init and yarn set version now set the packageManager field. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The patched filesystem now supports file URLs, bigint, and fstat. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The node-modules linker now attempts to support portal dependencies; Node must run with --preserve-symlinks, and sub-dependencies must be hoisted outside the portal. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This method now matches on virtual descriptors. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- This method now matches on virtual descriptors. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The command now supports running shell scripts using Yarn's portable shell. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The command can now run inside existing projects and create missing files. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The command can now be used repeatedly on the same patch folder. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The command downloads binaries from the official Yarn website rather than GitHub. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- Verbose mode now prints when processes start and end, even if they have no output. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)

### Tooling

- This package now contains the PnPify CLI compatibility tool that creates in-memory node_modules. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)

### Fixes and other changes

- Boolean values specified through the ${ENV_VAR} syntax in configuration files are now interpreted properly. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- If preinstall, install, or postinstall fails, the remaining scripts are skipped. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The SIGTERM signal is now propagated to child processes. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
- The command now correctly unsets non-nested properties. (3.0.0) — [release notes](https://github.com/yarnpkg/berry/blob/HEAD/CHANGELOG.md)
