[PF-2236] Unlock react-truncate react version support - #5067
Open
azebich wants to merge 1 commit into
Open
Conversation
🦋 Changeset detectedLatest commit: 3802b98 The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
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 |
Contributor
|
📖 Storybook Preview 🚀 Your Storybook preview is ready: View Storybook 📍 Preview URL: This preview is updated automatically when you push changes to this PR. |
azebich
changed the base branch from
master
to
feature/pf-2262-lift-the-react-19-peer-dep
July 28, 2026 12:26
azebich
marked this pull request as ready for review
July 28, 2026 12:27
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.
PF-2236
Description
ShowMorewas blocked from React 19 support byreact-truncate: unmaintained (last published 2018) and peer-locked toreact <= 16, so React 19 consumers hit an unresolvable transitive peer conflict.This PR removes the JS-measurement library entirely and reimplements truncation with native CSS line-clamp, reusing idioms the kit already ships:
overflow-hidden [display:-webkit-box] [-webkit-box-orient:vertical] break-wordsand an inlineWebkitLineClamp: rows— the same pattern (and inline-style precedent) asTypographyOverflow.isOverflownutil from@toptal/picasso-utils(same overflow semantics asTypographyOverflow), re-checked by aResizeObserver. A zero-size guard keeps the previous assumption in unmeasurable environments (jsdom,display: nonecontainers) so the toggle keeps rendering there, matching the old behavior.useIsomorphicLayoutEffect(from@toptal/picasso-shared), nowindow/documentin render.Package changes: drop
react-truncatefrom@toptal/picasso-show-more, drop the unusedreact-truncatefrom@toptal/picassoand@types/react-truncatefrom the root; add@toptal/picasso-shared+@toptal/picasso-utilsworkspace deps (+ tsconfig references); lift the React peer cap (>=17.0.0 < 19.0.0→>=17.0.0).Behavior — verified against the built package in Chrome (Playwright), SSR (
renderToString), and jest:rowsvisible lines with a native ellipsis; expand/collapse round-trips to the exact full text; content shorter thanrowshides the toggle; multiline (\n→<br/>) content clamps correctly;rows={0}still hides content and keeps the toggle. Public API unchanged.Reviewer note on snapshots: the updated jest snapshots show a truncated class string (
[display:-webkit [-webkit-box). That is a known artifact of davinci-qa's JSS-era snapshot serializer (it chops multi-hyphen class names in snapshot output only) — the rendered DOM provably contains the full classes, as visible in the SSR output.How to test
rowsrenders no toggle; resize the viewport and confirm the toggle appears/disappears as the text re-wrapspnpm test:unit -- packages/base/ShowMore— 8 tests greenScreenshots
Development checks
picasso-tailwind-mergerequires major update (check itsREADME.md)propsin component with documentationexamplesfor componentBreaking change
Alpha packages
Manually trigger the publish.yml workflow to publish alpha packages. Specify pull request number as a parameter (only digits, e.g.
123).PR Review Guidelines
When to approve? ✅
You are OK with merging this PR and
nit:to your comment. (ex.nit: I'd rename this variable from makeCircle to getCircle)When to request changes? ❌
You are not OK with merging this PR because
When to comment (neither ✅ nor ❌)
You want your comments to be addressed before merging this PR in cases like:
How to handle the comments?