Skip to content

Conversation

@huextrat
Copy link
Contributor

@huextrat huextrat commented Jan 17, 2026

Summary

fixes: #8810

Synchronous props were bypassing the AnimatedPropsRegistry, causing stale values to be reapplied during commits. Fixed by keeping all props in the update batch while also sending synchronous props via the fast path.

Animated styles now correctly persist when animated props change on iOS with IOS_SYNCHRONOUSLY_UPDATE_UI_PROPS feature flag enabled.

Test plan

Tested with the https://github.com/mozzius/sync-ui-drawer-repro - the drawer overlay no longer flickers at 5% progress.

@huextrat
Copy link
Contributor Author

Hi @tomekzaw @MatiPl01

Has anyone had time to check this PR?

}
}

updatesBatch = std::move(shadowTreeUpdatesBatch);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The removal of this line will result in keeping all properties (these updated synchronously and these updated via shadowTree) within the updatesBatch. As a result, all properties will be still committed to the Shadow Tree, similar to how it worked before enabling synchronous updates, so the benefit of synchronous updates will be gone.

@MatiPl01
Copy link
Member

@huextrat Thanks for this PR!

In general, you have a good idea on how to handle this case but instead of keeping updatesBatch unchanged, I'd suggest updating updatesBatch to contain only these props which have to be updated via the Shadow Tree (like updatesBatch = std::move(shadowTreeUpdatesBatch) before) and save all remaining props immediately in the updates registry without committing them to the Shadow Tree.

Give me some more time to look at this and experiment on my own. I didn't have much time for working on this issue yet but I am planning to spend some time over the weekend so I'd likely come back to you after the weekend.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

IOS_SYNCHRONOUSLY_UPDATE_UI_PROPS causes animated styles to be dropped when animated props change

2 participants