Skip to content

[0.83] fix(pointer): backport #16140 (PointerRoutedAway + ScrollView contentOffset DIP) - #16335

Open
Collin Schneide (FaithfulAudio) wants to merge 1 commit into
microsoft:0.83-stablefrom
FacilitronWorks:fix/backport-16140-pointer-routed-away
Open

[0.83] fix(pointer): backport #16140 (PointerRoutedAway + ScrollView contentOffset DIP)#16335
Collin Schneide (FaithfulAudio) wants to merge 1 commit into
microsoft:0.83-stablefrom
FacilitronWorks:fix/backport-16140-pointer-routed-away

Conversation

@FaithfulAudio

@FaithfulAudio Collin Schneide (FaithfulAudio) commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

[0.83-stable] Backport #16140: ScrollView Pressables stuck / dead tap on high-DPI displays

Backport of #16140 ("Fix ScrollView Pressables stuck and dead tap on high-DPI displays", merged to main 2026-05-13, commit df07be9) onto 0.83-stable. Original fix by Gordon MacMaster (@gmacmaster); #16140 was itself the main cherry-pick of #16139 ("[0.84] Fix ScrollView Pressables stay stuck and next tap is dead on high-DPI displays", merged to 0.84-stable). All credit for the diagnosis and the fix belongs to that work — this PR only carries it back to 0.83. Fixes #16047 ("Scrolling Views not working with touch screen devices") on 0.83.

0.83-stable does not contain any of it today — PointerRoutedAway and the pointScaleFactor division in updateStateWithContentOffset both have zero hits at that ref.

Problem

In a Fabric/Composition app on a touch device:

  1. A Pressable/TouchableOpacity inside a ScrollView stays stuck in its pressed state after the finger starts a scroll, and a later tap elsewhere can be attributed to that originally-pressed target.
  2. On a Windows display scale other than 100%, after any scroll the next tap on a row does not fire press at all.

Root cause

Two independent defects, exactly as diagnosed in #16047 / #16140:

(a) m_activeTouches keeps a zombie entry when ScrollView redirects the pointer.
ScrollViewComponentView calls VisualInteractionSource::TryRedirectForManipulation, and the OS reassigns the pointer to the InteractionTracker. WinAppSDK does not raise PointerCaptureLost on our InputPointerSource for that path — it raises PointerRoutedAway, which CompositionEventHandler never subscribed to. After the redirect we get no PointerMoved / PointerReleased / PointerCaptureLost for that pointer, so the active-touch entry is never erased and the pressed Pressable never receives a cancel.

(b) ScrollView writes physical pixels into a DIP-typed state field.
ScrollViewComponentView::updateStateWithContentOffset() stored m_scrollVisual.ScrollPosition() straight into ScrollViewShadowNode::ConcreteState::Data::contentOffset. ScrollPosition() is in physical pixels — the scroll visual is sized layoutMetrics.frame.size.* * pointScaleFactor (see updateLayoutMetrics / updateContentVisualSize) — but contentOffset is consumed as DIPs. So JS UIManager.measure() over-subtracted the offset by pointScaleFactor after any scroll on a >100% scale, and Pressability fired LEAVE_PRESS_RECT synchronously inside pressIn, suppressing press. Every other consumer in the same file already divides by pointScaleFactorgetScrollMetrics(), ScrollInteractionTrackerOwner::ValuesChanged(), and hitTest(); only the state write did not.

Additionally, ScrollMomentumEnd was the one scroll-completion path that did not call updateStateWithContentOffset() (ScrollBeginDrag and ScrollEndDrag both do), so the last inertia delta could leave contentOffset stale even with the unit fix in place.

Fix

Three files, matching #16140:

  • CompositionEventHandler.cpp / .h — subscribe to InputPointerSource.PointerRoutedAway, add onPointerRoutedAway, which cancels and erases the active touch for that pointer; add m_pointerRoutedAwayToken and unsubscribe it in the destructor alongside the other pointer tokens.
  • ScrollViewComponentView.cpp — divide ScrollPosition() by pointScaleFactor (guarded to 1.0f when non-positive) before writing contentOffset. The scrollbar components keep receiving the raw physical-pixel position, which is what they expect.
  • ScrollViewComponentView.cpp — call updateStateWithContentOffset() at the top of the ScrollMomentumEnd handler, before notifying JS.

How this differs from #16140 on main — please read

A literal cherry-pick cannot build on 0.83-stable, because #16140 was written on top of infrastructure that only exists on main. DispatchSynthesizedTouchCancelForActiveTouch and CancelActiveTouchForPointerInternal both have zero occurrences in CompositionEventHandler.{cpp,h} at 0.83-stable, so the merged form of onPointerRoutedAway would not resolve.

I diffed the added-line sets against #16140 to confirm this: the only things that differ are the onPointerRoutedAway body, the main-only helper/onPointerCaptureLost refactor, the ReactNativeIsland.h include, and that one comment line. Everything else — the PointerRoutedAway subscription lambda, the destructor unsubscribe, the header declaration, m_pointerRoutedAwayToken, the pointScaleFactor division block, and the momentum-end call — is byte-for-byte identical to #16140.

Validation

What I have not verified — please weigh these before merging:

Caveats for reviewers:

  • The onPointerCaptureLost divergence above is the thing to check. Because 0.83-stable's onPointerCaptureLost has no active-touch cleanup, the touch-cancel coverage on this branch after merging only this PR is narrower than on main: the ScrollView redirect path is fixed, but other system-driven capture losses (focus change, another window stealing input) still leak. That gap is intentional scope separation, not an oversight.
  • I chose std::find_if over pair.second.touch.identifier rather than main's m_activeTouches.find(pointerId), purely to match the surrounding 0.83 code. The two are equivalent here (the map key is the pointer id); happy to switch to the plain find.
  • If you would rather I mirror Fix ScrollView Pressables stuck and dead tap on high-DPI displays #16140 exactly by also introducing DispatchSynthesizedTouchCancelForActiveTouch + CancelActiveTouchForPointerInternal on 0.83-stable, say so and I will — it just pulls in more of main than a minimal backport needs, and it collides with [0.83] fix(fabric): touch-input reliability — primary-button labeling, guaranteed touch END/CANCEL, phantom active-touch self-heal #16333.
  • The pointScaleFactor > 0.0f ? ... : 1.0f guard is Fix ScrollView Pressables stuck and dead tap on high-DPI displays #16140's; keeping it avoids a divide-by-zero if updateStateWithContentOffset() ever runs before the first updateLayoutMetrics.
  • The scrollbar components intentionally still get the raw physical-pixel offset — m_verticalScrollbarComponent->ContentOffset(rawScrollPosition) receives exactly the same value the pre-patch code passed, so scrollbar behaviour is unchanged by construction. (The scrollbar helper stores it and multiplies incoming DIP hit-test points by m_scaleFactor, i.e. it works in physical pixels internally.) Only the shadow-node state is converted.
  • Change file included (type: patch). Let me know if you would prefer prerelease to match Fix ScrollView Pressables stuck and dead tap on high-DPI displays #16140's own change file.
Microsoft Reviewers: Open in CodeFlow

…w contentOffset DIP) to 0.83-stable

Backports upstream PR microsoft#16140 by @gmacmaster (merged to main 2026-05-13, itself a
cherry-pick of microsoft#16139 onto 0.84-stable) so that 0.83-stable also gets it.

A literal cherry-pick does not build here, so two adaptations were required and
are documented in the PR description:

- onPointerRoutedAway uses the 0.83-era DispatchTouchEvent(TouchEventType::Cancel, ...)
  plus std::find_if over pair.second.touch.identifier, because microsoft#16140's
  CancelActiveTouchForPointerInternal / DispatchSynthesizedTouchCancelForActiveTouch
  helpers do not exist on this branch.
- microsoft#16140's onPointerCaptureLost refactor is omitted: on main that function already
  had an active-touch cleanup block to refactor; on 0.83-stable it has none.

Everything else - the subscription lambda, the destructor unsubscribe, the header
declaration and token, the pointScaleFactor conversion, and the momentum-end
updateStateWithContentOffset() call - is byte-for-byte identical to microsoft#16140.
@FaithfulAudio
Collin Schneide (FaithfulAudio) requested a review from a team as a code owner July 26, 2026 06:50
@azure-pipelines

Copy link
Copy Markdown
Contributor
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@acoates-ms Andrew Coates (acoates-ms) changed the title fix(pointer): backport #16140 (PointerRoutedAway + ScrollView contentOffset DIP) to 0.83-stable [0.83] fix(pointer): backport #16140 (PointerRoutedAway + ScrollView contentOffset DIP) Aug 3, 2026
@acoates-ms

Copy link
Copy Markdown
Contributor

/azp run

@azure-pipelines

Copy link
Copy Markdown
Contributor
Azure Pipelines:
Successfully started running 1 pipeline(s).

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown

Performance Test Results

Branch: fix/backport-16140-pointer-routed-away
Commit: 2666578b
Time: 2026-08-03T23:54:32.995Z
Tests: 160/161 passed

❌ Regressions Detected

Button

Scenario Baseline Current Change Status
Button multiple-50 22.40ms 29.40ms +25.9%

Button multiple-50: Duration increased by 25.9% / +7.00ms (threshold: 15% & 5ms)

✅ Passed

152 scenario(s) across 27 suite(s) — no regressions

SectionList

Scenario Mean Median StdDev Renders vs Baseline
SectionList mount 5.80ms 5.00ms ±1.32ms 1 +0.0%
SectionList unmount 0.40ms 0.00ms ±0.52ms 0 +0.0%
SectionList rerender 11.90ms 12.00ms ±1.97ms 2 +14.3%
SectionList with-3-sections-15-items 6.40ms 6.00ms ±1.58ms 1 +9.1%
SectionList with-5-sections-50-items 6.10ms 6.00ms ±1.10ms 1 +0.0%
SectionList with-10-sections-200-items 6.00ms 6.00ms ±1.15ms 1 +9.1%
SectionList with-20-sections-200-items 5.10ms 5.00ms ±1.37ms 1 +0.0%
SectionList with-section-separator 3.30ms 3.00ms ±1.64ms 1 +50.0%
SectionList with-item-separator 2.30ms 2.00ms ±0.82ms 1 +0.0%
SectionList with-header-footer 1.60ms 2.00ms ±0.52ms 1 +0.0%
SectionList with-section-footer 2.10ms 2.00ms ±1.79ms 1 +0.0%
SectionList with-sticky-section-headers 1.90ms 2.00ms ±0.57ms 1 +0.0%
SectionList with-empty-list 0.50ms 0.50ms ±0.53ms 1 -50.0%
SectionList with-50-sections-1000-items 1.80ms 2.00ms ±0.42ms 1 +0.0%

FlatList

Scenario Mean Median StdDev Renders vs Baseline
FlatList mount 5.00ms 4.50ms ±1.83ms 1 +12.5%
FlatList unmount 0.10ms 0.00ms ±0.32ms 0 +0.0%
FlatList rerender 9.70ms 10.00ms ±0.95ms 2 +11.1%
FlatList with-10-items 4.90ms 5.00ms ±0.57ms 1 +25.0%
FlatList with-100-items 5.20ms 5.00ms ±1.03ms 1 +0.0%
FlatList with-500-items 4.80ms 5.00ms ±0.79ms 1 +25.0%
FlatList with-1000-items 5.30ms 5.00ms ±0.95ms 1 +25.0%
FlatList horizontal 3.90ms 4.00ms ±0.88ms 1 -20.0%
FlatList with-separator 2.10ms 2.00ms ±0.32ms 1 +0.0%
FlatList with-header-footer 3.00ms 3.00ms ±1.56ms 1 +50.0%
FlatList with-empty-list 0.60ms 1.00ms ±0.52ms 1 +100.0%
FlatList with-get-item-layout 1.90ms 2.00ms ±0.57ms 1 +100.0%
FlatList inverted 2.30ms 2.00ms ±1.70ms 1 +33.3%
FlatList with-num-columns 2.80ms 3.00ms ±0.42ms 1 +0.0%

TouchableOpacity

Scenario Mean Median StdDev Renders vs Baseline
TouchableOpacity mount 0.90ms 1.00ms ±0.32ms 1 +0.0%
TouchableOpacity unmount 0.20ms 0.00ms ±0.42ms 0 +0.0%
TouchableOpacity rerender 1.70ms 1.00ms ±2.00ms 2 +0.0%
TouchableOpacity custom-active-opacity 0.70ms 1.00ms ±0.48ms 1 +0.0%
TouchableOpacity disabled 0.90ms 1.00ms ±0.57ms 1 +0.0%
TouchableOpacity with-all-handlers 0.70ms 1.00ms ±0.48ms 1 +0.0%
TouchableOpacity with-hit-slop 1.10ms 1.00ms ±0.32ms 1 +0.0%
TouchableOpacity with-delay 0.60ms 1.00ms ±0.52ms 1 +0.0%
TouchableOpacity nested 1.70ms 1.00ms ±1.25ms 1 +0.0%
TouchableOpacity multiple-10 7.33ms 7.00ms ±1.72ms 1 +16.7%
TouchableOpacity multiple-50 32.47ms 32.00ms ±3.76ms 1 +10.3%
TouchableOpacity multiple-100 62.67ms 59.00ms ±19.75ms 1 +18.0%

ScrollView

Scenario Mean Median StdDev Renders vs Baseline
ScrollView mount 0.50ms 0.50ms ±0.53ms 1 +Infinity%
ScrollView unmount 0.00ms 0.00ms ±0.00ms 0 +0.0%
ScrollView rerender 0.50ms 0.50ms ±0.53ms 2 -50.0%
ScrollView children-20 3.67ms 4.00ms ±1.40ms 1 +0.0%
ScrollView children-100 20.80ms 19.00ms ±6.39ms 1 +18.8%
ScrollView horizontal 4.90ms 4.00ms ±1.66ms 1 +0.0%
ScrollView sticky-headers 3.80ms 3.50ms ±1.23ms 1 +16.7%
ScrollView scroll-indicators 1.20ms 1.00ms ±0.42ms 1 +0.0%
ScrollView nested 2.00ms 1.50ms ±1.83ms 1 +50.0%
ScrollView content-container-style 1.70ms 1.00ms ±2.00ms 1 +0.0%
ScrollView children-500 34.53ms 22.00ms ±23.43ms 1 +15.8%

TouchableHighlight

Scenario Mean Median StdDev Renders vs Baseline
TouchableHighlight mount 0.40ms 0.00ms ±0.52ms 1 -100.0%
TouchableHighlight unmount 0.00ms 0.00ms ±0.00ms 0 +0.0%
TouchableHighlight rerender 0.80ms 1.00ms ±0.42ms 2 +0.0%
TouchableHighlight custom-underlay-color 0.60ms 1.00ms ±0.52ms 1 +Infinity%
TouchableHighlight custom-active-opacity 0.50ms 0.50ms ±0.53ms 1 +Infinity%
TouchableHighlight disabled 0.20ms 0.00ms ±0.42ms 1 +0.0%
TouchableHighlight with-all-handlers 0.50ms 0.50ms ±0.53ms 1 +Infinity%
TouchableHighlight with-hit-slop 0.40ms 0.00ms ±0.52ms 1 +0.0%
TouchableHighlight nested-touchables 0.80ms 1.00ms ±0.42ms 1 +0.0%
TouchableHighlight multiple-touchables-10 3.20ms 3.00ms ±0.42ms 1 +0.0%
TouchableHighlight multiple-touchables-50 17.20ms 17.50ms ±3.26ms 1 +40.0%
TouchableHighlight multiple-touchables-100 29.60ms 29.50ms ±5.99ms 1 +31.1%

Pressable

Scenario Mean Median StdDev Renders vs Baseline
Pressable mount 0.40ms 0.00ms ±0.52ms 1 +0.0%
Pressable unmount 0.00ms 0.00ms ±0.00ms 0 +0.0%
Pressable rerender 0.60ms 1.00ms ±0.52ms 2 +100.0%
Pressable with-all-handlers 0.40ms 0.00ms ±0.52ms 1 +0.0%
Pressable with-style-function 0.30ms 0.00ms ±0.48ms 1 +0.0%
Pressable disabled 0.40ms 0.00ms ±0.52ms 1 +0.0%
Pressable with-hit-slop 0.80ms 0.00ms ±1.55ms 1 +0.0%
Pressable nested 0.90ms 1.00ms ±0.32ms 1 +0.0%
Pressable multiple-10 3.40ms 3.00ms ±0.51ms 1 +0.0%
Pressable multiple-50 18.87ms 19.00ms ±2.26ms 1 +35.7%
Pressable multiple-100 21.33ms 18.00ms ±12.32ms 1 +50.0%

Modal

Scenario Mean Median StdDev Renders vs Baseline
Modal mount 0.50ms 0.50ms ±0.53ms 1 +Infinity%
Modal unmount 0.00ms 0.00ms ±0.00ms 0 +0.0%
Modal rerender 0.70ms 1.00ms ±0.48ms 2 +Infinity%
Modal slide-animation 0.30ms 0.00ms ±0.48ms 1 +0.0%
Modal fade-animation 0.40ms 0.00ms ±0.52ms 1 +0.0%
Modal transparent 0.50ms 0.50ms ±0.53ms 1 +Infinity%
Modal with-callbacks 0.30ms 0.00ms ±0.48ms 1 +0.0%
Modal rich-content 2.00ms 2.00ms ±0.47ms 1 +0.0%
Modal with-accessibility 0.20ms 0.00ms ±0.42ms 1 +0.0%

Image

Scenario Mean Median StdDev Renders vs Baseline
Image mount 0.20ms 0.00ms ±0.42ms 1 +0.0%
Image unmount 0.10ms 0.00ms ±0.32ms 0 +0.0%
Image rerender 0.20ms 0.00ms ±0.42ms 2 +0.0%
Image with-resize-mode 0.10ms 0.00ms ±0.32ms 1 +0.0%
Image with-border-radius 0.10ms 0.00ms ±0.32ms 1 +0.0%
Image with-tint-color 0.10ms 0.00ms ±0.32ms 1 +0.0%
Image with-blur-radius 0.20ms 0.00ms ±0.42ms 1 +0.0%
Image with-accessibility 0.20ms 0.00ms ±0.42ms 1 +0.0%
Image multiple-10 1.00ms 1.00ms ±0.00ms 1 +0.0%
Image multiple-50 4.27ms 4.00ms ±0.59ms 1 +33.3%
Image multiple-100 10.33ms 9.00ms ±2.16ms 1 +12.5%

ActivityIndicator

Scenario Mean Median StdDev Renders vs Baseline
ActivityIndicator mount 0.10ms 0.00ms ±0.32ms 1 +0.0%
ActivityIndicator unmount 0.10ms 0.00ms ±0.32ms 0 +0.0%
ActivityIndicator rerender 0.30ms 0.00ms ±0.48ms 2 +0.0%
ActivityIndicator size-large 0.30ms 0.00ms ±0.48ms 1 +0.0%
ActivityIndicator size-small 0.20ms 0.00ms ±0.42ms 1 +0.0%
ActivityIndicator with-color 0.00ms 0.00ms ±0.00ms 1 +0.0%
ActivityIndicator not-animating 0.20ms 0.00ms ±0.42ms 1 +0.0%
ActivityIndicator with-accessibility 0.10ms 0.00ms ±0.32ms 1 +0.0%
ActivityIndicator multiple-10 1.00ms 1.00ms ±0.00ms 1 +0.0%
ActivityIndicator multiple-50 4.67ms 4.00ms ±1.99ms 1 +0.0%
ActivityIndicator multiple-100 10.73ms 11.00ms ±2.81ms 1 +57.1%

Switch

Scenario Mean Median StdDev Renders vs Baseline
Switch mount 0.30ms 0.00ms ±0.48ms 1 +0.0%
Switch unmount 0.20ms 0.00ms ±0.42ms 0 +0.0%
Switch rerender 0.70ms 0.00ms ±1.57ms 2 -100.0%
Switch value-true 0.30ms 0.00ms ±0.48ms 1 +0.0%
Switch disabled 0.20ms 0.00ms ±0.42ms 1 +0.0%
Switch custom-colors 0.00ms 0.00ms ±0.00ms 1 +0.0%
Switch on-value-change 0.30ms 0.00ms ±0.48ms 1 +0.0%
Switch with-accessibility 0.20ms 0.00ms ±0.42ms 1 +0.0%
Switch multiple-10 1.60ms 2.00ms ±0.51ms 1 +0.0%
Switch multiple-50 12.73ms 13.00ms ±3.45ms 1 +44.4%
Switch multiple-100 22.33ms 21.00ms ±4.50ms 1 +31.3%

TextInput

Scenario Mean Median StdDev Renders vs Baseline
TextInput mount 0.10ms 0.00ms ±0.32ms 1 +0.0%
TextInput unmount 0.10ms 0.00ms ±0.32ms 0 +0.0%
TextInput rerender 0.30ms 0.00ms ±0.48ms 2 +0.0%
TextInput multiline 0.20ms 0.00ms ±0.42ms 1 +0.0%
TextInput with-value 0.20ms 0.00ms ±0.42ms 1 +0.0%
TextInput styled 0.20ms 0.00ms ±0.42ms 1 +0.0%
TextInput multiple-100 8.33ms 8.00ms ±2.74ms 1 +14.3%

View

Scenario Mean Median StdDev Renders vs Baseline
View mount 0.30ms 0.00ms ±0.48ms 1 +0.0%
View unmount 0.10ms 0.00ms ±0.32ms 0 +0.0%
View rerender 0.40ms 0.00ms ±0.52ms 2 +0.0%
View nested-50 5.07ms 5.00ms ±1.71ms 1 +66.7%
View nested-100 9.20ms 9.00ms ±1.52ms 1 +28.6%
View shadow 0.20ms 0.00ms ±0.42ms 1 +0.0%
View border-radius 0.20ms 0.00ms ±0.42ms 1 +0.0%
View nested-500 20.93ms 12.00ms ±18.69ms 1 +20.0%

Text

Scenario Mean Median StdDev Renders vs Baseline
Text mount 0.20ms 0.00ms ±0.42ms 1 +0.0%
Text unmount 0.10ms 0.00ms ±0.32ms 0 +0.0%
Text rerender 0.10ms 0.00ms ±0.32ms 2 +0.0%
Text long-1000 0.20ms 0.00ms ±0.42ms 1 +0.0%
Text nested 0.30ms 0.00ms ±0.48ms 1 +0.0%
Text styled 0.10ms 0.00ms ±0.32ms 1 +0.0%
Text multiple-100 9.93ms 9.00ms ±2.05ms 1 +28.6%

SectionList.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
SectionList native mount 7.13ms 6.95ms ±1.39ms 1 +6.8%

FlatList.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
FlatList native mount 6.49ms 6.53ms ±0.80ms 1 -29.3%

TouchableHighlight.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
TouchableHighlight native mount 1.74ms 1.53ms ±0.69ms 1 -26.5%

TouchableOpacity.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
TouchableOpacity native mount 1.95ms 1.79ms ±0.39ms 1 -42.9%

Pressable.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
Pressable native mount 1.71ms 1.59ms ±0.30ms 1 -36.7%

ScrollView.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
ScrollView native mount 3.94ms 3.56ms ±0.85ms 1 -12.1%

ActivityIndicator.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
ActivityIndicator native mount 1.68ms 1.63ms ±0.18ms 1 -34.2%

TextInput.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
TextInput native mount 2.51ms 2.46ms ±0.29ms 1 -39.8%

Switch.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
Switch native mount 1.59ms 1.48ms ±0.26ms 1 -14.4%

Button.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
Button native mount 2.33ms 2.19ms ±0.41ms 1 -15.6%

Image.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
Image native mount 1.97ms 2.01ms ±0.22ms 1 -11.0%

Modal.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
Modal native mount 1.33ms 1.06ms ±0.64ms 1 -12.6%

View.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
View native mount 1.44ms 1.42ms ±0.33ms 1 -1.0%

Text.native-perf-test.ts

Scenario Mean Median StdDev Renders vs Baseline
Text native mount 1.68ms 1.65ms ±0.29ms 1 -5.2%

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants