Skip to content

Layout breaks when the first element has a different minWidth than the rest - #58395

Open
pasqualeanatriello wants to merge 1 commit into
react:mainfrom
pasqualeanatriello:export-D119142409
Open

Layout breaks when the first element has a different minWidth than the rest#58395
pasqualeanatriello wants to merge 1 commit into
react:mainfrom
pasqualeanatriello:export-D119142409

Conversation

@pasqualeanatriello

Copy link
Copy Markdown
Contributor

Summary:
fixes react/yoga#2006

distributeFreeSpaceFirstPass decrements totalFlexGrowFactors /
totalFlexShrinkScaledFactors as it freezes items, but only reduces remainingFreeSpace
after the loop. Items after the first frozen one get an inflated fair share and freeze
spuriously. When the first item clamps, the whole line freezes and remainingFreeSpace
drains to 0, so the second pass has nothing to distribute and everything falls back to its
flex basis — a 540px row of three flexGrow: 1 items with maxWidth: 180 and minWidths
60/30/30 lays out as 60/30/30 instead of 180/180/180.

Snapshot both totals before the loop and divide by the snapshot. The first pass is then
iteration 1 of CSS Flexbox §9.7, and independent of child order.

Changelog:
[General][Fixed] - Fix a flex line collapsing to its minimum sizes when the first item clamps to its min or max main size

X-link: react/yoga#2021

Reviewed By: javache

Differential Revision: D119142409

Pulled By: pasqualeanatriello

…e rest

Summary:
fixes react/yoga#2006

`distributeFreeSpaceFirstPass` decrements `totalFlexGrowFactors` /
`totalFlexShrinkScaledFactors` as it freezes items, but only reduces `remainingFreeSpace`
after the loop. Items after the first frozen one get an inflated fair share and freeze
spuriously. When the first item clamps, the whole line freezes and `remainingFreeSpace`
drains to 0, so the second pass has nothing to distribute and everything falls back to its
flex basis — a 540px row of three `flexGrow: 1` items with `maxWidth: 180` and minWidths
60/30/30 lays out as 60/30/30 instead of 180/180/180.

Snapshot both totals before the loop and divide by the snapshot. The first pass is then
iteration 1 of CSS Flexbox §9.7, and independent of child order.

Changelog:
[General][Fixed] - Fix a flex line collapsing to its minimum sizes when the first item clamps to its min or max main size

X-link: react/yoga#2021

Reviewed By: javache

Differential Revision: D119142409

Pulled By: pasqualeanatriello
@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Sep 8, 2026
@facebook-github-tools facebook-github-tools Bot added p: Facebook Partner: Facebook Partner labels Sep 8, 2026
@meta-codesync

meta-codesync Bot commented Sep 8, 2026

Copy link
Copy Markdown

@pasqualeanatriello has exported this pull request. If you are a Meta employee, you can view the originating Diff in D119142409.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Layout breaks when the first element has a different minWidth than the rest

2 participants