Skip to content

fix: Re-run grid layout after item dimensions settle#578

Draft
MatiPl01 wants to merge 1 commit into
mainfrom
fix/grid-stale-layout-on-data-change
Draft

fix: Re-run grid layout after item dimensions settle#578
MatiPl01 wants to merge 1 commit into
mainfrom
fix/grid-stale-layout-on-data-change

Conversation

@MatiPl01

@MatiPl01 MatiPl01 commented Jun 27, 2026

Copy link
Copy Markdown
Owner

Description

Sortable.Grid could leave a freshly added or replaced row mispositioned after a non-reorder data change — an empty gap, or the new row invisible — until a drag forced a relayout (the reporter's "fixed the instant a drag starts").

Root cause: the layout reaction that turns measured item heights into positions is correctly marked dirty when an item's height settles, but on native its execution depends on Reanimated's per-frame mapper loop being pumped. There are scheduling windows where the dirty layout mapper isn't run until something pumps the loop — and a gesture explicitly does (which is why a drag fixes it). This change forces a relayout once item dimensions settle (reusing the existing layoutRequestId mechanism) so positions don't wait for the loop to be pumped.

Closes #565 (related: #286).

Note

Draft. This is a pragmatic compensation — the underlying trigger is Reanimated's native mapper scheduling, and the bug is intermittent and device/version dependent (it does not reproduce on a fast simulator). Please confirm it resolves the issue on a setup that reproduces before merging. A push-based layout (computing positions in the measurement flush instead of via the reactive mapper) would remove the dependency entirely but is a larger change.

@vercel

vercel Bot commented Jun 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
react-native-sortables-docs Ignored Ignored Jun 27, 2026 10:28pm

@MatiPl01 MatiPl01 self-assigned this Jun 27, 2026
@github-actions github-actions Bot added the fix label Jun 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Empty space / missing item after adding or replacing data; fixed by starting a drag

1 participant