From a4bfbdaaa9f0438fd92e7bebcac63e839180f1b6 Mon Sep 17 00:00:00 2001 From: Ammar Ahmed <40239442+ammarahm-ed@users.noreply.github.com> Date: Thu, 28 Sep 2023 05:57:17 +0500 Subject: [PATCH] perf(android): batch setupAccessibleView calls to improve TTI (#10391) --- packages/core/accessibility/index.android.ts | 21 +++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/core/accessibility/index.android.ts b/packages/core/accessibility/index.android.ts index 4879888d5..41bb528c7 100644 --- a/packages/core/accessibility/index.android.ts +++ b/packages/core/accessibility/index.android.ts @@ -442,13 +442,28 @@ export function setupAccessibleView(view: View): void { updateAccessibilityProperties(view); } -export function updateAccessibilityProperties(view: View): void { +let updateAccessibilityPropertiesMicroTask; +let pendingViews = new Set(); +export function updateAccessibilityProperties(view: View) { if (!view.nativeViewProtected) { return; } - setAccessibilityDelegate(view); - applyContentDescription(view); + pendingViews.add(view); + if (updateAccessibilityPropertiesMicroTask) return; + + updateAccessibilityPropertiesMicroTask = true; + Promise.resolve().then(() => { + updateAccessibilityPropertiesMicroTask = false; + let _pendingViews = Array.from(pendingViews); + pendingViews = new Set(); + for (const view of _pendingViews) { + if (!view.nativeViewProtected) continue; + setAccessibilityDelegate(view); + applyContentDescription(view); + } + _pendingViews = []; + }); } export function sendAccessibilityEvent(view: View, eventType: AndroidAccessibilityEvent, text?: string): void {