Skip to content

Port perf tests to 0.84-stable - #15994

Merged
Abhijeet Jha (iamAbhi-916) merged 3 commits into
microsoft:0.84-stablefrom
iamAbhi-916:cherry-pick/perf-0.84-stable
Apr 15, 2026
Merged

Port perf tests to 0.84-stable#15994
Abhijeet Jha (iamAbhi-916) merged 3 commits into
microsoft:0.84-stablefrom
iamAbhi-916:cherry-pick/perf-0.84-stable

Conversation

@iamAbhi-916

@iamAbhi-916Abhijeet Jha (iamAbhi-916) commented Apr 15, 2026

Copy link
Copy Markdown
Contributor

Cherry-picks perf testing infrastructure to 0.84-stable:

86e6a03 — [Fabric]: Performance Tests for React Native Windows (#15666)
9430a12 — fix: include hidden files in perf artifact upload to restore PR comments (#15893)
ecef157 — fix: respect track mode in compare-results to avoid false regression (#15933)

Microsoft Reviewers: Open in CodeFlow

* perf testing v1( view , text , textinput)
* Fixed spike testing by using median and other issues
* chore: gitignore perf-testing build output
* remove scripts/ as separate folder
* add component perf tests for Button, Image, ScrollView, Switch, Modal, ActivityIndicator, Pressable, TouchableOpacity, TouchableHighlight, FlatList, and SectionList
* Cleanup
* Change files
* lint fix and format
* cleanup
* fix pipeline issues with cachedAct!
* Save PR number to artifact for future report workflow
* remove tsconfig from tracking
* review comments
* update baselines
* lint:fix
* add statistical stability gates (Mann-Whitney U, CV, gate/track mode)
* add maxCV and mode to defaultConfig threshold
* Add 100x stress-gate scenarios to all 13 perf suites
* lint fix and format
* update yarn lock
* Bump version to 0.0.0-canary.1033
…nts (microsoft#15893)
* fix: resolve artifact path mismatch in perf-comment workflow
* fix: include hidden files in perf artifact upload
* fix: auto-discover native perf results in compare report
* Do not create m_childrenContainer when using a custom visual to mount children into (microsoft#15877)
* Do not create m_childrenContainer when using a custom visual to mount children into
* Change files
* fix
* RELEASE: Releasing 10 package(s) (main) (microsoft#15885)
Co-authored-by: React-Native-Windows Bot <53619745+rnbot@users.noreply.github.com>
* Implement onClick (microsoft#15889)
* Implement onClick
* Change files
* RELEASE: Releasing 10 package(s) (main) (microsoft#15891)
Co-authored-by: React-Native-Windows Bot <53619745+rnbot@users.noreply.github.com>
* Fork ubroken module (microsoft#15892)
* fix: auto-discover native perf results in compare report
* Change files
* fix: capture live run metrics in PerfJsonReporter instead of re-reading baselines
* Change files
* fix: use temp files for cross-process live metrics
* lint fix
* make touchableOpacity less noisy
* Change files
* codegen build fix
* revert: undo codegen changes (schema version mismatch)
---------
Co-authored-by: Andrew Coates <30809111+acoates-ms@users.noreply.github.com>
Co-authored-by: azure-pipelines[bot] <36771401+azure-pipelines[bot]@users.noreply.github.com>
Co-authored-by: React-Native-Windows Bot <53619745+rnbot@users.noreply.github.com>
Co-authored-by: Vladimir Morozov <vmorozov@microsoft.com>
…icrosoft#15933)
* fix: respect track mode in compare-results to avoid false regression failures
* Change files
* fix: update TouchableOpacity multiple-100 baseline to match CI environment
@github-actions

Copy link
Copy Markdown

Performance Test Results

Branch:cherry-pick/perf-0.84-stable
Commit:28023f55
Time: 2026-04-15T09:27:39.284Z
Tests: 161/161 passed

✅ Passed

161 scenario(s) across 28 suite(s) — no regressions

SectionList

ScenarioMeanMedianStdDevRendersvs Baseline
SectionList mount3.10ms3.00ms±0.57ms1-40.0%
SectionList unmount0.20ms0.00ms±0.42ms0+0.0%
SectionList rerender7.00ms7.00ms±1.63ms2-33.3%
SectionList with-3-sections-15-items3.90ms4.00ms±0.99ms1-27.3%
SectionList with-5-sections-50-items4.00ms4.00ms±0.82ms1-33.3%
SectionList with-10-sections-200-items3.80ms3.50ms±1.23ms1-36.4%
SectionList with-20-sections-200-items3.30ms4.00ms±1.25ms1-20.0%
SectionList with-section-separator1.70ms1.00ms±1.25ms1-50.0%
SectionList with-item-separator1.60ms2.00ms±0.52ms1+0.0%
SectionList with-header-footer1.70ms1.00ms±1.57ms1-50.0%
SectionList with-section-footer1.00ms1.00ms±0.00ms1-50.0%
SectionList with-sticky-section-headers1.20ms1.00ms±0.42ms1-50.0%
SectionList with-empty-list0.30ms0.00ms±0.48ms1-100.0%
SectionList with-50-sections-1000-items1.00ms1.00ms±0.00ms1-50.0%

FlatList

ScenarioMeanMedianStdDevRendersvs Baseline
FlatList mount3.10ms3.00ms±1.20ms1-25.0%
FlatList unmount0.20ms0.00ms±0.42ms0+0.0%
FlatList rerender6.40ms6.00ms±0.70ms2-33.3%
FlatList with-10-items3.40ms3.00ms±0.97ms1-25.0%
FlatList with-100-items3.40ms3.00ms±0.84ms1-40.0%
FlatList with-500-items3.60ms3.00ms±0.97ms1-25.0%
FlatList with-1000-items3.10ms3.00ms±0.57ms1-25.0%
FlatList horizontal2.80ms3.00ms±0.63ms1-40.0%
FlatList with-separator1.10ms1.00ms±0.32ms1-50.0%
FlatList with-header-footer1.30ms1.00ms±0.95ms1-50.0%
FlatList with-empty-list0.30ms0.00ms±0.48ms1-100.0%
FlatList with-get-item-layout1.00ms1.00ms±0.00ms1+0.0%
FlatList inverted1.10ms1.00ms±0.32ms1-33.3%
FlatList with-num-columns2.50ms2.00ms±1.65ms1-33.3%

TouchableOpacity

ScenarioMeanMedianStdDevRendersvs Baseline
TouchableOpacity mount0.60ms1.00ms±0.52ms1+0.0%
TouchableOpacity unmount0.30ms0.00ms±0.48ms0+0.0%
TouchableOpacity rerender0.40ms0.00ms±0.52ms2-100.0%
TouchableOpacity custom-active-opacity0.40ms0.00ms±0.52ms1-100.0%
TouchableOpacity disabled0.40ms0.00ms±0.52ms1-100.0%
TouchableOpacity with-all-handlers0.50ms0.50ms±0.53ms1-50.0%
TouchableOpacity with-hit-slop0.60ms1.00ms±0.52ms1+0.0%
TouchableOpacity with-delay1.00ms1.00ms±1.49ms1+0.0%
TouchableOpacity nested1.10ms1.00ms±0.32ms1+0.0%
TouchableOpacity multiple-103.80ms4.00ms±1.08ms1-33.3%
TouchableOpacity multiple-5017.13ms16.00ms±2.33ms1-44.8%
TouchableOpacity multiple-10014.60ms14.00ms±3.04ms1-72.0%

ScrollView

ScenarioMeanMedianStdDevRendersvs Baseline
ScrollView mount0.60ms0.00ms±0.97ms1+0.0%
ScrollView unmount0.00ms0.00ms±0.00ms0+0.0%
ScrollView rerender0.40ms0.00ms±0.52ms2-100.0%
ScrollView children-202.13ms2.00ms±0.64ms1-50.0%
ScrollView children-10011.47ms11.00ms±1.85ms1-31.3%
ScrollView horizontal2.30ms2.00ms±0.48ms1-50.0%
ScrollView sticky-headers2.30ms2.00ms±0.95ms1-33.3%
ScrollView scroll-indicators0.60ms1.00ms±0.52ms1+0.0%
ScrollView nested0.90ms1.00ms±0.57ms1+0.0%
ScrollView content-container-style0.50ms0.50ms±0.53ms1-50.0%
ScrollView children-50018.93ms15.00ms±11.14ms1-21.1%

TouchableHighlight

ScenarioMeanMedianStdDevRendersvs Baseline
TouchableHighlight mount0.30ms0.00ms±0.48ms1-100.0%
TouchableHighlight unmount0.00ms0.00ms±0.00ms0+0.0%
TouchableHighlight rerender0.40ms0.00ms±0.52ms2-100.0%
TouchableHighlight custom-underlay-color0.20ms0.00ms±0.42ms1+0.0%
TouchableHighlight custom-active-opacity0.30ms0.00ms±0.48ms1+0.0%
TouchableHighlight disabled0.30ms0.00ms±0.48ms1+0.0%
TouchableHighlight with-all-handlers0.20ms0.00ms±0.42ms1+0.0%
TouchableHighlight with-hit-slop0.30ms0.00ms±0.48ms1+0.0%
TouchableHighlight nested-touchables0.60ms1.00ms±0.52ms1+0.0%
TouchableHighlight multiple-touchables-101.60ms2.00ms±0.52ms1-33.3%
TouchableHighlight multiple-touchables-509.40ms9.00ms±1.58ms1-28.0%
TouchableHighlight multiple-touchables-10016.70ms16.50ms±2.67ms1-26.7%

Pressable

ScenarioMeanMedianStdDevRendersvs Baseline
Pressable mount0.40ms0.00ms±0.52ms1+0.0%
Pressable unmount0.00ms0.00ms±0.00ms0+0.0%
Pressable rerender0.30ms0.00ms±0.48ms2-100.0%
Pressable with-all-handlers0.30ms0.00ms±0.48ms1+0.0%
Pressable with-style-function0.30ms0.00ms±0.48ms1+0.0%
Pressable disabled0.20ms0.00ms±0.42ms1+0.0%
Pressable with-hit-slop0.20ms0.00ms±0.42ms1+0.0%
Pressable nested0.50ms0.50ms±0.53ms1-50.0%
Pressable multiple-102.20ms2.00ms±0.77ms1-33.3%
Pressable multiple-5010.47ms10.00ms±1.36ms1-28.6%
Pressable multiple-10011.27ms9.00ms±6.83ms1-25.0%

Modal

ScenarioMeanMedianStdDevRendersvs Baseline
Modal mount0.60ms0.00ms±0.97ms1+0.0%
Modal unmount0.10ms0.00ms±0.32ms0+0.0%
Modal rerender0.10ms0.00ms±0.32ms2+0.0%
Modal slide-animation0.30ms0.00ms±0.48ms1+0.0%
Modal fade-animation0.10ms0.00ms±0.32ms1+0.0%
Modal transparent0.30ms0.00ms±0.48ms1+0.0%
Modal with-callbacks0.20ms0.00ms±0.42ms1+0.0%
Modal rich-content1.00ms1.00ms±0.00ms1-50.0%
Modal with-accessibility0.10ms0.00ms±0.32ms1+0.0%

Image

ScenarioMeanMedianStdDevRendersvs Baseline
Image mount0.10ms0.00ms±0.32ms1+0.0%
Image unmount0.00ms0.00ms±0.00ms0+0.0%
Image rerender0.20ms0.00ms±0.42ms2+0.0%
Image with-resize-mode0.20ms0.00ms±0.42ms1+0.0%
Image with-border-radius0.00ms0.00ms±0.00ms1+0.0%
Image with-tint-color0.10ms0.00ms±0.32ms1+0.0%
Image with-blur-radius0.10ms0.00ms±0.32ms1+0.0%
Image with-accessibility0.10ms0.00ms±0.32ms1+0.0%
Image multiple-100.67ms1.00ms±0.49ms1+0.0%
Image multiple-502.60ms2.00ms±0.83ms1-33.3%
Image multiple-1005.33ms5.00ms±1.11ms1-37.5%

ActivityIndicator

ScenarioMeanMedianStdDevRendersvs Baseline
ActivityIndicator mount0.10ms0.00ms±0.32ms1+0.0%
ActivityIndicator unmount0.00ms0.00ms±0.00ms0+0.0%
ActivityIndicator rerender0.10ms0.00ms±0.32ms2+0.0%
ActivityIndicator size-large0.00ms0.00ms±0.00ms1+0.0%
ActivityIndicator size-small0.10ms0.00ms±0.32ms1+0.0%
ActivityIndicator with-color0.10ms0.00ms±0.32ms1+0.0%
ActivityIndicator not-animating0.00ms0.00ms±0.00ms1+0.0%
ActivityIndicator with-accessibility0.10ms0.00ms±0.32ms1+0.0%
ActivityIndicator multiple-100.60ms1.00ms±0.51ms1+0.0%
ActivityIndicator multiple-502.60ms3.00ms±0.51ms1-25.0%
ActivityIndicator multiple-1005.67ms5.00ms±0.98ms1-28.6%

Switch

ScenarioMeanMedianStdDevRendersvs Baseline
Switch mount0.30ms0.00ms±0.67ms1+0.0%
Switch unmount0.00ms0.00ms±0.00ms0+0.0%
Switch rerender0.30ms0.00ms±0.48ms2-100.0%
Switch value-true0.00ms0.00ms±0.00ms1+0.0%
Switch disabled0.10ms0.00ms±0.32ms1+0.0%
Switch custom-colors0.10ms0.00ms±0.32ms1+0.0%
Switch on-value-change0.20ms0.00ms±0.42ms1+0.0%
Switch with-accessibility0.20ms0.00ms±0.42ms1+0.0%
Switch multiple-101.20ms1.00ms±0.77ms1-50.0%
Switch multiple-506.53ms6.00ms±2.07ms1-33.3%
Switch multiple-10012.20ms11.00ms±2.43ms1-31.3%

Button

ScenarioMeanMedianStdDevRendersvs Baseline
Button mount0.50ms0.50ms±0.53ms1-50.0%
Button unmount0.00ms0.00ms±0.00ms0+0.0%
Button rerender0.70ms1.00ms±0.48ms2+0.0%
Button disabled0.40ms0.00ms±0.52ms1-100.0%
Button with-color0.30ms0.00ms±0.48ms1-100.0%
Button with-accessibility0.40ms0.00ms±0.52ms1-100.0%
Button multiple-103.73ms4.00ms±0.59ms1-33.3%
Button multiple-5014.40ms17.00ms±6.34ms1-37.0%
Button multiple-10010.93ms11.00ms±2.37ms1-42.1%

TextInput

ScenarioMeanMedianStdDevRendersvs Baseline
TextInput mount0.10ms0.00ms±0.32ms1+0.0%
TextInput unmount0.00ms0.00ms±0.00ms0+0.0%
TextInput rerender0.10ms0.00ms±0.32ms2+0.0%
TextInput multiline0.10ms0.00ms±0.32ms1+0.0%
TextInput with-value0.20ms0.00ms±0.42ms1+0.0%
TextInput styled0.00ms0.00ms±0.00ms1+0.0%
TextInput multiple-1005.33ms5.00ms±0.98ms1-28.6%

View

ScenarioMeanMedianStdDevRendersvs Baseline
View mount0.00ms0.00ms±0.00ms1+0.0%
View unmount0.00ms0.00ms±0.00ms0+0.0%
View rerender0.10ms0.00ms±0.32ms2+0.0%
View nested-502.67ms2.00ms±1.05ms1-33.3%
View nested-1005.47ms5.00ms±0.83ms1-28.6%
View shadow0.20ms0.00ms±0.42ms1+0.0%
View border-radius0.10ms0.00ms±0.32ms1+0.0%
View nested-50012.73ms8.00ms±9.42ms1-20.0%

Text

ScenarioMeanMedianStdDevRendersvs Baseline
Text mount0.20ms0.00ms±0.42ms1+0.0%
Text unmount0.00ms0.00ms±0.00ms0+0.0%
Text rerender0.10ms0.00ms±0.32ms2+0.0%
Text long-10000.10ms0.00ms±0.32ms1+0.0%
Text nested0.10ms0.00ms±0.32ms1+0.0%
Text styled0.20ms0.00ms±0.42ms1+0.0%
Text multiple-1005.60ms5.00ms±1.18ms1-28.6%

SectionList.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
SectionList native mount4.35ms4.38ms±0.55ms1-32.6%

FlatList.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
FlatList native mount3.70ms3.39ms±0.61ms1-63.2%

TouchableHighlight.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
TouchableHighlight native mount1.41ms1.29ms±0.21ms1-38.0%

TouchableOpacity.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
TouchableOpacity native mount1.54ms1.44ms±0.23ms1-54.1%

Pressable.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
Pressable native mount1.32ms1.20ms±0.41ms1-52.1%

ScrollView.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
ScrollView native mount2.52ms2.39ms±0.30ms1-41.0%

ActivityIndicator.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
ActivityIndicator native mount1.09ms1.05ms±0.10ms1-57.6%

TextInput.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
TextInput native mount1.64ms1.59ms±0.16ms1-61.2%

Switch.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
Switch native mount0.99ms0.94ms±0.14ms1-45.5%

Button.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
Button native mount1.60ms1.46ms±0.40ms1-44.0%

Modal.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
Modal native mount0.99ms0.94ms±0.21ms1-23.1%

Image.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
Image native mount1.49ms1.46ms±0.24ms1-35.3%

View.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
View native mount1.25ms1.10ms±0.44ms1-23.0%

Text.native-perf-test.ts

ScenarioMeanMedianStdDevRendersvs Baseline
Text native mount1.21ms1.17ms±0.13ms1-32.9%

@iamAbhi-916
Abhijeet Jha (iamAbhi-916) merged commit 815420a into microsoft:0.84-stableApr 15, 2026
39 checks passed
@iamAbhi-916
Abhijeet Jha (iamAbhi-916) deleted the cherry-pick/perf-0.84-stable branch April 15, 2026 11:40
@vineethkuttanVineeth (vineethkuttan) added this to the 0.84 milestone Apr 20, 2026
Sign up for freeto 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

@iamAbhi-916@vineethkuttan