Skip to content

[PF-2262] Lift React v19 peer dep cap - #5070

Draft
azebich wants to merge 2 commits into
masterfrom
feature/pf-2262-lift-the-react-19-peer-dep
Draft

[PF-2262] Lift React v19 peer dep cap#5070
azebich wants to merge 2 commits into
masterfrom
feature/pf-2262-lift-the-react-19-peer-dep

Conversation

@azebich

@azebich azebich commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

PF-2262

Description

Unblocks React 19 support across the library (objective O2). Plan of record and verified
current-state analysis: PF-2236 (spike).

MUI v4/v5 are fully removed from Picasso, @base-ui/react@1.6.0 already supports React 19, and
component source is clean of the patterns React 19 removed. What is left is peer-dependency and
config hygiene, a small ref-plumbing fix, third-party library upgrades, and — the critical path —
the React 19 validation harness, which does not exist yet. Nothing has been validated on React 19
so far
, so the harness is what makes "React 19 validated" a real claim rather than an assumed one.

Workstreams in this PR:

A. Peer-dep cap sweep — drop the upper bound on every remaining package
(react: ">=17.0.0 < 19.0.0"">=17.0.0"), currently 88 of 91 workspace packages. Also drop
the react-dom cap, present on 6 packages (picasso, picasso-forms, picasso-query-builder,
picasso-rich-text-editor, shared, base/Page). Applied via codemod; widening a peer range is a
minor bump.

B. Types + TS prerequisite — in pnpm-workspace.yaml, bump @types/react 17^19, add
@types/react-dom (absent today), and move the react / react-dom overrides to ^19. The TS
prerequisite is already met: the repo is on TypeScript ~5.5.0 and @types/react@19 needs ≥ 5.0.

C. Ref / transition cluster — replace the element .ref reads (and their bare @ts-ignores) in
Fade.tsx:30, Slide.tsx:64 and ClickAwayListener.tsx:89. nodeRef is already threaded through Fade
and Slide, so the remaining gap is Collapse.tsx:87, whose <Transition> has no nodeRef and
therefore still reaches the removed findDOMNode under react-transition-group@4. Smoke-test the
29 cloneElement sites.

D. Third-party lib upgradesreact-day-picker ^8.10.0 → v9, react-querybuilder 6.5.4
v7+, recharts ^2.12.3 → ≥ 2.13, react-transition-group (nodeRef, see §C). Validate or
replace react-final-form@^6.5.9, react-router-dom@^5.3.4, react-helmet-async@2.0.3,
react-input-mask@^3.0.0-alpha.2 and react-truncate@^2.4.0.

E. Validation harness (critical path) — add the test:react19 script and a react19-validate CI
job: side-by-side React 19 install, stories rendered through RTL in StrictMode, asserting no
warnings or errors. This replaces the placeholder that currently skips React 19 validation entirely.

F. Validate + release — harness green across the library, then ship the minor version bump.

@azebich azebich self-assigned this Jul 28, 2026
@changeset-bot

changeset-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: cc6fa65

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@toptal/picasso-charts Patch
@topkit/analytics-charts Patch

Not sure what this means? Click here to learn what changesets are.

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

@github-actions

Copy link
Copy Markdown
Contributor

📖 Storybook Preview

🚀 Your Storybook preview is ready: View Storybook

📍 Preview URL: https://toptal.github.io/picasso/prs/5070/

This preview is updated automatically when you push changes to this PR.

github-actions Bot added a commit that referenced this pull request Jul 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📖 Storybook Preview

🚀 Your Storybook preview is ready: View Storybook

📍 Preview URL: https://toptal.github.io/picasso/prs/5070/

This preview is updated automatically when you push changes to this PR.

github-actions Bot added a commit that referenced this pull request Jul 29, 2026
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