Upgrade @changesets/cli to v3 and adapt release workflow - #4202
Open
gilgardosh wants to merge 3 commits into
Open
Upgrade @changesets/cli to v3 and adapt release workflow#4202gilgardosh wants to merge 3 commits into
gilgardosh wants to merge 3 commits into
Conversation
gilgardosh
temporarily deployed
to
accounter-fullstack
August 13, 2026 10:08 — with
GitHub Actions
Inactive
gilgardosh
temporarily deployed
to
accounter-fullstack
August 13, 2026 10:09 — with
GitHub Actions
Inactive
gilgardosh
temporarily deployed
to
accounter-fullstack
August 17, 2026 07:59 — with
GitHub Actions
Inactive
gilgardosh
temporarily deployed
to
accounter-fullstack
August 17, 2026 07:59 — with
GitHub Actions
Inactive
gilgardosh
force-pushed
the
claude/changesets-cli-major-bump-h4awcc
branch
from
August 24, 2026 08:38
f13af06 to
6de344d
Compare
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The new publish wrapper has robustness issues (missing spawn error handling, risky process.exit usage, and unsafe JSON parsing) that can break or silently misreport releases in CI.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Upgrades the monorepo’s Changesets tooling to @changesets/cli v3 and keeps the existing release automation working by restoring legacy publish output that the pinned dotansimha/changesets-action depends on.
Changes:
- Bumped
@changesets/clifrom2.31.1to3.0.0(lockfile updated accordingly). - Adjusted Changesets config schema reference and opted back into private package versioning behavior via
privatePackages. - Updated the publish GitHub Actions workflow to use a new
changeset:publishscript that wrapschangeset publishand re-emits legacyNew tag:lines.
File summaries
| File | Description |
|---|---|
| yarn.lock | Updates dependency graph to reflect @changesets/cli@3.0.0 and its transitive changes. |
| scripts/changeset-publish.mjs | Adds a CI wrapper to run changeset publish with CHANGESETS_OUTPUT and re-print legacy New tag: lines. |
| package.json | Adds changeset:publish script and upgrades @changesets/cli to 3.0.0. |
| .github/workflows/publish.yml | Switches the release action publish command to yarn changeset:publish. |
| .changeset/config.json | Updates $schema to @changesets/config@4.0.0 and configures privatePackages. |
| .changeset/changesets-cli-v3-config.md | Documents the rationale and CI compatibility approach for the v3 migration. |
Review details
- Files reviewed: 5/6 changed files
- Comments generated: 3
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| env: { ...process.env, CHANGESETS_OUTPUT: reportPath }, | ||
| }, | ||
| ); | ||
|
|
Comment on lines
+44
to
+45
| process.exit(code ?? 1); | ||
| }); |
Comment on lines
+56
to
+60
| try { | ||
| return JSON.parse(line); | ||
| } catch { | ||
| return {}; | ||
| } |
- opt back into versioning private packages (v3 stopped doing so by default, which made every changeset touching both a private and a public package fail) - point config $schema at @changesets/config@4.0.0 - add a `changeset publish` wrapper that re-emits the `New tag:` lines the release action parses (v3 no longer prints them) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014gQYArw7b9S6kWL9Hpjn91
gilgardosh
force-pushed
the
claude/changesets-cli-major-bump-h4awcc
branch
from
August 24, 2026 16:15
6de344d to
594a4fe
Compare
gilgardosh
temporarily deployed
to
accounter-fullstack
August 24, 2026 16:15 — with
GitHub Actions
Inactive
gilgardosh
temporarily deployed
to
accounter-fullstack
August 24, 2026 16:15 — with
GitHub Actions
Inactive
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Upgrades
@changesets/clifrom v2.31.1 to v3.0.0 and adapts the release workflow to work with breaking changes in the v3 output format. The v3 release removed the🦋 New tag:lines from publish output that thedotansimha/changesets-actionstill relies on for parsing released packages.Key Changes
@changesets/clito v3.0.0 inpackage.json.changeset/config.jsonfrom v3.0.0 to v4.0.0"privatePackages": { "version": true, "tag": false }to.changeset/config.json(v3 changed the default behavior, breaking mixed changesets)scripts/changeset-publish.mjs— a wrapper script that:changeset publishwithCHANGESETS_OUTPUTenvironment variable pointing to a temporary NDJSON report fileNew tag: <pkg>@<version>lines to stdout for the release action to parsechangeset:publishnpm script topackage.jsonto invoke the wrapper.changeset/changesets-cli-v3-config.mdexplaining the migration rationaleImplementation Details
The wrapper script uses Node's
child_process.spawn()to run the changesets CLI with inherited stdio, ensuring all human-facing output is preserved. It only adds the legacy tag lines after successful completion (exit code 0), maintaining the original exit code behavior for error handling.https://claude.ai/code/session_014gQYArw7b9S6kWL9Hpjn91