Skip to content

Moved React version pins into the pnpm catalog#28317

Merged
9larsons merged 1 commit into
mainfrom
deps/react-catalog-split
Jun 2, 2026
Merged

Moved React version pins into the pnpm catalog#28317
9larsons merged 1 commit into
mainfrom
deps/react-catalog-split

Conversation

@9larsons
Copy link
Copy Markdown
Contributor

@9larsons 9larsons commented Jun 2, 2026

The React 18 (admin) vs React 17 (public bundles) split was inlined across ~14 package.json files with nothing enforcing which lane held which version. ESLint and Tailwind already express their version splits through named catalogs (eslint9, tailwind3); React was the one core split that didn't.

This adds react, react-dom, and @testing-library/react to the catalog plus a react17 named catalog, and points every consumer at the right entry. The eventual React bump then becomes a single catalog decision instead of another chance to drift.

This is a no-op for resolved versions — the lockfile diff only reshapes specifiers into catalog refs; no package resolution changes. ^18.2.0 peer ranges are intentionally left loose.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jun 2, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 9f7ea673-9252-42a2-8e4c-7e42b85f7db4

📥 Commits

Reviewing files that changed from the base of the PR and between 3a11a3e and 524f672.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (15)
  • apps/activitypub/package.json
  • apps/admin-x-design-system/package.json
  • apps/admin-x-framework/package.json
  • apps/admin-x-settings/package.json
  • apps/admin/package.json
  • apps/announcement-bar/package.json
  • apps/comments-ui/package.json
  • apps/portal/package.json
  • apps/posts/package.json
  • apps/shade/package.json
  • apps/signup-form/package.json
  • apps/sodo-search/package.json
  • apps/stats/package.json
  • ghost/admin/package.json
  • pnpm-workspace.yaml
✅ Files skipped from review due to trivial changes (3)
  • apps/admin/package.json
  • apps/announcement-bar/package.json
  • apps/admin-x-framework/package.json
🚧 Files skipped from review as they are similar to previous changes (12)
  • apps/sodo-search/package.json
  • apps/signup-form/package.json
  • apps/admin-x-design-system/package.json
  • apps/posts/package.json
  • ghost/admin/package.json
  • apps/admin-x-settings/package.json
  • apps/stats/package.json
  • apps/comments-ui/package.json
  • apps/shade/package.json
  • pnpm-workspace.yaml
  • apps/activitypub/package.json
  • apps/portal/package.json

Walkthrough

This PR centralizes React and testing-library dependency version management across the monorepo by adding pnpm workspace catalog entries (main catalog for React 18 and a catalogs.react17 variant) and updating app package.json files to reference those catalogs via catalog: and catalog:react17. It also bumps apps/activitypub version from 3.1.30 to 3.1.31.

Possibly related PRs

  • TryGhost/Ghost#28320: Related catalog-driven dependency updates and zod -> catalog: change in core.
  • TryGhost/Ghost#27870: Adjusts publish workflow to handle catalog: references during pnpm publish.
  • TryGhost/Ghost#27902: Sets catalogMode: strict in pnpm workspace config to enforce catalog consistency.

Suggested reviewers

  • EvanHahn
  • troyciesco
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: consolidating React version pins from inline package.json specifications into the pnpm catalog system.
Description check ✅ Passed The description clearly explains the motivation, implementation approach, and rationale for centralizing React version management through the pnpm catalog.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch deps/react-catalog-split

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 2, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 73.70%. Comparing base (cb07c8f) to head (524f672).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main   #28317   +/-   ##
=======================================
  Coverage   73.70%   73.70%           
=======================================
  Files        1535     1535           
  Lines      130745   130745           
  Branches    15641    15641           
=======================================
+ Hits        96361    96369    +8     
+ Misses      33395    33389    -6     
+ Partials      989      987    -2     
Flag Coverage Δ
admin-tests 54.68% <ø> (+0.02%) ⬆️
e2e-tests 73.70% <ø> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@9larsons 9larsons enabled auto-merge (squash) June 2, 2026 19:14
- the React 18 (admin) vs React 17 (public bundles) split was inlined across ~14 package.json files with nothing enforcing which lane held which version
- adds react/react-dom/@testing-library/react to the catalog, plus a react17 named catalog mirroring the existing eslint9/tailwind3 pattern, so the split is declared in one place
- pure no-op for resolved versions: the lockfile diff only reshapes specifiers to catalog refs, no package resolution changes
- makes the eventual React bump a single catalog decision rather than another opportunity to drift
@9larsons 9larsons force-pushed the deps/react-catalog-split branch from 3a11a3e to 524f672 Compare June 2, 2026 19:20
@9larsons 9larsons merged commit a8e9c07 into main Jun 2, 2026
55 checks passed
@9larsons 9larsons deleted the deps/react-catalog-split branch June 2, 2026 19:41
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