Skip to content

beta: React 18 + 19 compatibility#3328

Open
dreamwasp wants to merge 29 commits intomainfrom
cass-gmt-1473-beta
Open

beta: React 18 + 19 compatibility#3328
dreamwasp wants to merge 29 commits intomainfrom
cass-gmt-1473-beta

Conversation

@dreamwasp
Copy link
Copy Markdown
Contributor

@dreamwasp dreamwasp commented Apr 15, 2026

Overview

Upgrades the Gamut monorepo for React 19 while keeping React 18 in the supported peer range for consumers. This includes:

  • Workspace dependencies on React 19 (react, react-dom, react-test-renderer) and aligned Yarn resolutions.
  • Peer dependency updates on published packages (e.g. @codecademy/gamut) so apps can use React 18.3 or 19.
  • react-hook-form upgrade and follow-on fixes in Connected Form / Grid Form.
  • React 19–oriented ref handling (notably Popover / PopoverContainer and related floating UI) and small utilities (isNullish / isDefined) where strict equality is required.
  • Tooling updates (ESLint, TypeScript-ESLint, Testing Library, Jest config tweaks) and eslint-plugin-gamut rule/test updates.

PR Checklist

  • Related to designs:
  • Related to JIRA ticket: GMT-1473
  • Version plan added/updated (or not needed)
  • I have run this code to verify it works
  • This PR includes unit tests for the code change
  • This PR includes testing instructions tests for the code change
  • [tbd] The alpha package of this PR is passing end-to-end tests in all relevant Codecademy repositories

Testing Instructions

Component / area Location What to verify
Popover / positioning AtomsPopoverContainer Open/close, alignment controls, scroll/resize; repeat with RTL on.
Tooltips / floating tips MoleculesTipsToolTip (and other Tip stories as needed) Open states, anchor behavior.
Modal / focus MoleculesModalsModal Open, focus trap, close; Dark mode.
Menu MoleculesMenu Keyboard nav, disabled items if covered by stories.
Select AtomsFormInputsSelectDropdown Default, multi-select, and searchable examples if present.
Forms (RHF) OrganismsConnectedFormConnectedForm / ConnectedFormGroup / ConnectedFormInputs Submit/validation flows still work.
Grid Form OrganismsGridForm (e.g. Usage, States, Layout) Field groups and validation.

Accessibility: On a subset of the above (PopoverContainer, Modal, Menu, SelectDropdown, ConnectedForm), run VoiceOver : focus order, labels, and escape to dismiss.

PR Previews

mono on 18
mono on 19
monolith on 18

@nx-cloud
Copy link
Copy Markdown

nx-cloud Bot commented Apr 15, 2026

View your CI Pipeline Execution ↗ for commit 71b5d00


☁️ Nx Cloud last updated this comment at 2026-04-15 21:15:52 UTC

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 15, 2026

⚠️ JUnit XML file not found

The CLI was unable to find any JUnit XML files to upload.
For more help, visit our troubleshooting guide.

@dreamwasp dreamwasp marked this pull request as ready for review April 15, 2026 21:09
@dreamwasp dreamwasp requested a review from a team as a code owner April 15, 2026 21:09
@codecademydev
Copy link
Copy Markdown
Collaborator

📬 Published Alpha Packages:

Package Version npm Diff
@codecademy/gamut 68.2.3-alpha.cc966e.0 npm diff
@codecademy/gamut-icons 9.57.3-alpha.cc966e.0 npm diff
@codecademy/gamut-illustrations 0.58.10-alpha.cc966e.0 npm diff
@codecademy/gamut-kit 0.6.593-alpha.cc966e.0 npm diff
@codecademy/gamut-patterns 0.10.29-alpha.cc966e.0 npm diff
@codecademy/gamut-styles 17.13.2-alpha.cc966e.0 npm diff
@codecademy/gamut-tests 5.3.4-alpha.cc966e.0 npm diff
@codecademy/variance 0.26.2-alpha.cc966e.0 npm diff
eslint-plugin-gamut 2.4.4-alpha.cc966e.0 npm diff

@github-actions
Copy link
Copy Markdown
Contributor

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.

2 participants