Skip to content

chore(deps): update syncpack to v15 and migrate its config - #1528

Merged
Anber merged 2 commits into
callstack:masterfrom
Anber:chore/update-syncpack-15
Oct 26, 2026
Merged

Anber merged 2 commits into
callstack:masterfrom
Anber:chore/update-syncpack-15

Conversation

@Anber

@Anber Anber commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

syncpack goes from ^11.2.1 to ^15.3.3 (published on 2026-08-09), and its config and the four sp:* scripts move to what syncpack 15 reads. Only these three files change.

 package.json
-  "sp:check": "syncpack",
+  "sp:check": "syncpack lint",
-  "sp:fix": "syncpack format && syncpack fix-mismatches",
+  "sp:fix": "syncpack format && syncpack fix",
-  "sp:list": "syncpack list-mismatches",
+  "sp:list": "syncpack list",
-  "syncpack": "^11.2.1",
+  "syncpack": "^15.3.3",
 .syncpackrc.js
-  dependencyTypes: ['dev', 'overrides', 'pnpmOverrides', 'prod', 'resolutions'],
-  filter: '.',
-  semverRange: '',
-  source: [],
-  workspace: true,
+  source: ['package.json', 'packages/*/package.json', 'website/package.json'],
+  versionGroups: [{ dependencyTypes: ['local', 'peer'], isIgnored: true }, <webpack4 group, unchanged>]
 pnpm-lock.yaml
+  syncpack@15.3.3 and its eight syncpack-<platform> packages
-  syncpack@11.2.1 and the 26 packages only it reached, among them minimatch@9.0.3
  • A bare syncpack ran list in 11.2.1; sp:check is now syncpack lint, still run by check:all and the pre-commit hook.
  • syncpack 15 resolves nothing from the ./packages/* and ./website patterns in workspaces, so without source the check shrinks to the root manifest (42 instances, not 137).
  • The ignore group keeps peer dependencies and local package versions unchecked, as the removed dependencyTypes list did. Without it a clean tree fails on 5x react (>=16 against ^16.14.0).

Evidence

On scratch copies of the base and the branch, with Node 24.22.0 and pnpm 9.15.9:

  • pnpm sp:check exits 0 on the branch (✓ No issues found, no config warning), as the base command does on the base.
  • It still fails when it should: @babel/core ^7.20.0 in website/package.json makes both exit 1 and name @babel/core. A peer mismatch is reported by neither.
  • pnpm install --frozen-lockfile --ignore-scripts exits 0.
  • The lockfile diff is the nine added keys, the 27 removed ones and the root syncpack entry; no other key changes, and minimatch@9.0.3 is gone.
  • sortAz, sortFirst, indent and the webpack4 version group equal the base.
pnpm install --frozen-lockfile --ignore-scripts
pnpm sp:check
pnpm exec syncpack lint
pnpm exec syncpack fix
pnpm exec syncpack format
pnpm exec syncpack list

Left out

  • examples/ is read by neither the base nor the branch; adding it to source reports six old mismatches under both versions.
  • sp:list now prints all 93 dependencies, where list-mismatches printed only mismatches. syncpack lint is the documented replacement but would duplicate sp:check.
  • sp:format leaves the same diff on a clean checkout of the base and of the branch (two reordered keys in the root manifest and packages/postcss-linaria/package.json). Not fixed here.
  • No changeset: the published output does not change.

Not verified

  • Linaria's CI has not run on this change; every check above ran locally.
  • Only Node 24.22.0 with pnpm 9.15.9, no other Node version or system.
  • A rebase onto later lockfile changes: the branch is based on master at 1f2df81.

Anber added 2 commits October 25, 2026 23:01
syncpack 15 rejects the dependencyTypes, filter, semverRange and
workspace keys and has no default command, so:

- .syncpackrc.js drops the four keys; peerDependencies and the versions
  of local packages, the two types the old dependencyTypes list left
  out, are ignored by a version group instead.
- source names package.json, packages/*/package.json and
  website/package.json: syncpack 15 finds no package through the
  './'-prefixed globs of package.json#workspaces, and these are the
  manifests syncpack 11 read from them.
- sp:check runs `syncpack lint`, sp:fix runs `syncpack fix` in place of
  fix-mismatches and sp:list runs `syncpack list`.

The lockfile was rebuilt with pnpm 9.15.9 (`pnpm install
--ignore-scripts` after changing the range): it adds syncpack 15.3.3
and its eight platform packages and drops the 27 packages only
syncpack 11.2.1 used, minimatch 9.0.3 among them.

Publish dates (npm): syncpack 15.3.3 2026-08-09T11:31:55Z;
syncpack-{darwin-arm64,darwin-x64,linux-arm64,linux-arm64-musl,
linux-x64,linux-x64-musl,windows-arm64,windows-x64} 15.3.3
2026-08-09T11:28Z to 11:30Z.
The label added for the ignored dependency types was one line over the print width, so prettier --check failed on .syncpackrc.js (the base file passes). pnpm lint does not report it because eslint skips dotfiles.
@changeset-bot

changeset-bot Bot commented Oct 26, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 4c84ee3

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@Anber
Anber merged commit 06bf647 into callstack:master Oct 26, 2026
4 checks passed
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.

1 participant