npm / @yarnpkg/core
@yarnpkg/core
What changed in @yarnpkg/core 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-12.
31 breaking15 new APIs and options1 performance16 behavior and defaults1 tooling4 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@yarnpkg/core 368 changes
Breaking changes 31
This configuration option was removed; build state moved into the install state.
Cache files must be regenerated because their timestamps changed to address a zip specification flaw affecting third-party tools.
CLI definitions are now exposed on the entry point rather than on .command.
This API was removed; use formatUtils.pretty instead.
Immutable installs now default to enabled on CI; set YARN_ENABLE_IMMUTABLE_INSTALLS=false to allow mutations.
Use this type-safe API in place of the removed configuration.format.
The git: protocol now fetches HEAD by default instead of the hardcoded master branch.
The json option was removed; use jsonResponse instead.
Use jsonResponse in place of the removed json option.
Use this configuration option in place of the removed initVersion and initLicense options.
This configuration option was removed; use initFields instead.
Node 10 is no longer supported.
The description field was removed; use formatUtils.json with the PACKAGE_EXTENSION type.
PnP now generates .pnp.cjs files regardless of the manifest type field.
Projects using portal dependencies with the node-modules linker must use this Node option to access their dependencies.
The Prettier SDK no longer uses PnPify; plugins must now be specified in Prettier's plugins configuration property.
This method was removed; the build state is now in Project.storedBuildState.
This API was removed; use structUtils.stringifyIdent instead.
The virtual folder was renamed to __virtual__.
The virtual folder used to disambiguate peer dependencies now uses this name.
Set this environment variable to false to allow mutations when immutable installs are enabled by default on CI.
Use --mode=skip-build in place of the renamed --skip-builds flag.
The --skip-builds flag was renamed to --mode=skip-build.
Build state is now stored in the install state at this path.
The command upgrades builtin plugins too, unless --skip-plugins is set.
The -a alias was removed; use -A or --all instead.
Use -A or --all in place of the removed -a alias.
This is the new name for @yarnpkg/plugin-node-modules.
This package was renamed to @yarnpkg/plugin-nm.
The package was split into @yarnpkg/sdks, @yarnpkg/pnpify, and @yarnpkg/nm.
Plugins can no longer access yup; Typanion is used instead.
New APIs and options 15
Yarn's builtin shell now supports background jobs with color-coded output.
Set this new flag to false to exclude YNxxxx message names from output.
The node-modules linker can now utilize hardlinks, with strategies selected through nmMode.
This setting selects the node_modules strategy: classic, hardlinks-local, or hardlinks-global.
A new command removes a setting from local configuration, or from home configuration with -H.
The new -s or --save flag saves the patch instead of only printing it.
The command can install specific versions of official plugins and downloads plugins compatible with the current CLI by default.
This new command removes resolutions previously set by yarn link.
The new recursive flag upgrades the specified package regardless of where it is.
The new --prerelease flag replaces how prereleases were previously handled.
The new --from <glob> flag, when combined with -R, targets workspaces reachable from the matching workspaces.
An official ESBuild resolver is now provided under this package name.
This package now contains the node_modules tree builder and hoister.
This package now contains the Editor SDKs.
The new enableMessageNames flag can be set to false to omit YNxxxx names from output.
Performance 1
The command should boot significantly faster on large projects.
Behavior and default changes 16
Builtin patches that fail to apply now emit a warning and use the original sources instead of causing an error.
PnP projects can now use the Node exports field regardless of Node version.
Yarn's builtin shell now supports redirections from file descriptors.
The PnP hook now supports the node: protocol.
Workspaces now get self-references under this linker, so requiring a workspace's own package.json works without most absolute aliases.
Running yarn install in a Yarn v1 project now automatically enables this linker to ease migrations.
yarn init and yarn set version now set the packageManager field.
The patched filesystem now supports file URLs, bigint, and fstat.
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.
This method now matches on virtual descriptors.
This method now matches on virtual descriptors.
The command now supports running shell scripts using Yarn's portable shell.
The command can now run inside existing projects and create missing files.
The command can now be used repeatedly on the same patch folder.
The command downloads binaries from the official Yarn website rather than GitHub.
Verbose mode now prints when processes start and end, even if they have no output.
Tooling 1
This package now contains the PnPify CLI compatibility tool that creates in-memory node_modules.
Fixes and other changes 4
Boolean values specified through the ${ENV_VAR} syntax in configuration files are now interpreted properly.
If preinstall, install, or postinstall fails, the remaining scripts are skipped.
The SIGTERM signal is now propagated to child processes.
The command now correctly unsets non-nested properties.