Skip to content

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

Closed
Dagur wants to merge 1 commit into
react:mainfrom
Dagur:issue/2006/winwidth-wrong-distribution
Closed

Layout breaks when the first element has a different minWidth rest#2021
Dagur wants to merge 1 commit into
react:mainfrom
Dagur:issue/2006/winwidth-wrong-distribution

Conversation

@Dagur

@Dagur Dagur commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

#2006

Full disclosure, this was generated by LLM.

@meta-cla meta-cla Bot added the CLA Signed label Sep 3, 2026
@facebook-github-tools facebook-github-tools Bot added the Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team. label Sep 3, 2026
@meta-codesync

meta-codesync Bot commented Sep 8, 2026

Copy link
Copy Markdown

@pasqualeanatriello has imported this pull request. If you are a Meta employee, you can view this in D119142409.

@meta-codesync

meta-codesync Bot commented Sep 9, 2026

Copy link
Copy Markdown

@pasqualeanatriello merged this pull request in 73bebc0.

meta-codesync Bot pushed a commit to react/react-native that referenced this pull request Sep 9, 2026
…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.

Layout only changes for configs that opt in: this sits behind
`Errata::FlexFirstPassUsesRunningTotals`, which new configs set by default, so existing
geometry is untouched until a config clears the bit. Same shape as
`MinSizeUndefinedInsteadOfAuto`, which gates the CSS §4.5 auto-min floor.

Changelog:
[General][Fixed] - Fix a flex line collapsing to its minimum sizes when the first item clamps to its min or max main size, behind the new `FlexFirstPassUsesRunningTotals` errata (set by default)

X-link: react/yoga#2021

Reviewed By: javache

Differential Revision: D119142409

Pulled By: pasqualeanatriello

fbshipit-source-id: 9e5ad19e2ca818a5cccdcac68cfb8905a6f40894
shashikant-panchal pushed a commit to shashikant-panchal/react-native that referenced this pull request Sep 10, 2026
…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.

Layout only changes for configs that opt in: this sits behind
`Errata::FlexFirstPassUsesRunningTotals`, which new configs set by default, so existing
geometry is untouched until a config clears the bit. Same shape as
`MinSizeUndefinedInsteadOfAuto`, which gates the CSS §4.5 auto-min floor.

Changelog:
[General][Fixed] - Fix a flex line collapsing to its minimum sizes when the first item clamps to its min or max main size, behind the new `FlexFirstPassUsesRunningTotals` errata (set by default)

X-link: react/yoga#2021

Reviewed By: javache

Differential Revision: D119142409

Pulled By: pasqualeanatriello

fbshipit-source-id: 9e5ad19e2ca818a5cccdcac68cfb8905a6f40894
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed Merged Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant