Skip to content

Fix Circular Dependency issues for New Arch Apps - #15747

Merged
Andrew Coates (acoates-ms) merged 12 commits into
mainfrom
circulardependencyCheck
Mar 17, 2026
Merged

Fix Circular Dependency issues for New Arch Apps#15747
Andrew Coates (acoates-ms) merged 12 commits into
mainfrom
circulardependencyCheck

Conversation

@vineethkuttan

@vineethkuttanVineeth (vineethkuttan) commented Mar 9, 2026

Copy link
Copy Markdown
Contributor

Description

Fixing Circular Dependency issues for New Arch Apps

Type of Change

  • Bug fix (non-breaking change which fixes an issue)

Why

Due to ongoing issues in microsoft/cppwinrt#950 , we added a temporary fix in #13338 to make the projects build with -m , i.e one concurrent process for building the RNW App, refer here

What

Inspired by this changes microsoft/winget-cli#5932 , I have defined CppWinRTGenerateWindowsMetadata to prevent the circular reference in calculating the value

Testing

Tested in playground

Changelog

Should this change be included in the release notes: yes

Circular dependency build issues for RNW Fabric App has been fixed

Microsoft Reviewers: Open in CodeFlow

@github-actions

github-actionsBot commented Mar 10, 2026

Copy link
Copy Markdown

Performance Test Results

Branch:circulardependencyCheck
Commit:c6912e79
Time: 2026-03-11T06:53:52.052Z
Tests: 146/147 passed

✅ Passed

147 scenario(s) across 14 suite(s) — no regressions

SectionList

ScenarioMeanMedianStdDevRendersvs Baseline
SectionList mount4.90ms5.00ms±0.57ms1+0.0%
SectionList unmount0.10ms0.00ms±0.32ms0+0.0%
SectionList rerender11.60ms10.50ms±2.88ms2+0.0%
SectionList with-3-sections-15-items5.70ms5.50ms±1.34ms1+0.0%
SectionList with-5-sections-50-items6.10ms6.00ms±1.20ms1+0.0%
SectionList with-10-sections-200-items5.50ms5.50ms±0.53ms1+0.0%
SectionList with-20-sections-200-items4.60ms5.00ms±1.65ms1+0.0%
SectionList with-section-separator2.00ms2.00ms±0.47ms1+0.0%
SectionList with-item-separator2.50ms2.00ms±0.97ms1+0.0%
SectionList with-header-footer2.10ms2.00ms±0.32ms1+0.0%
SectionList with-section-footer2.10ms2.00ms±0.57ms1+0.0%
SectionList with-sticky-section-headers2.40ms2.00ms±1.26ms1+0.0%
SectionList with-empty-list0.60ms1.00ms±0.52ms1+0.0%
SectionList with-50-sections-1000-items1.80ms2.00ms±0.42ms1+0.0%

FlatList

ScenarioMeanMedianStdDevRendersvs Baseline
FlatList mount4.10ms4.00ms±0.74ms1+0.0%
FlatList unmount0.00ms0.00ms±0.00ms0+0.0%
FlatList rerender9.50ms9.00ms±1.58ms2+0.0%
FlatList with-10-items4.60ms4.00ms±1.26ms1+0.0%
FlatList with-100-items4.70ms5.00ms±0.67ms1+0.0%
FlatList with-500-items4.30ms4.00ms±0.67ms1+0.0%
FlatList horizontal4.80ms5.00ms±1.75ms1+0.0%
FlatList with-separator1.60ms2.00ms±0.52ms1+0.0%
FlatList with-header-footer1.90ms2.00ms±1.20ms1+0.0%
FlatList with-empty-list0.50ms0.50ms±0.53ms1+0.0%
FlatList with-get-item-layout1.30ms1.00ms±0.48ms1+0.0%
FlatList inverted1.90ms1.50ms±1.52ms1+0.0%
FlatList with-num-columns2.80ms3.00ms±0.92ms1+0.0%
FlatList with-1000-items4.50ms4.00ms±0.71ms1+0.0%

TouchableOpacity

ScenarioMeanMedianStdDevRendersvs Baseline
TouchableOpacity mount0.80ms1.00ms±0.42ms1+0.0%
TouchableOpacity unmount0.00ms0.00ms±0.00ms0+0.0%
TouchableOpacity rerender1.00ms1.00ms±0.67ms2+0.0%
TouchableOpacity custom-active-opacity0.80ms1.00ms±0.42ms1+0.0%
TouchableOpacity disabled0.60ms1.00ms±0.52ms1+0.0%
TouchableOpacity with-all-handlers0.60ms1.00ms±0.52ms1+0.0%
TouchableOpacity with-hit-slop0.60ms1.00ms±0.52ms1+0.0%
TouchableOpacity with-delay0.90ms1.00ms±0.88ms1+0.0%
TouchableOpacity nested1.40ms1.00ms±0.52ms1+0.0%
TouchableOpacity multiple-106.60ms6.00ms±1.76ms1+0.0%
TouchableOpacity multiple-5028.93ms29.00ms±1.67ms1+0.0%
TouchableOpacity multiple-10030.67ms30.00ms±3.68ms1+0.0%

ScrollView

ScenarioMeanMedianStdDevRendersvs Baseline
ScrollView mount0.30ms0.00ms±0.48ms1+0.0%
ScrollView unmount0.00ms0.00ms±0.00ms0+0.0%
ScrollView rerender0.60ms1.00ms±0.52ms2+0.0%
ScrollView children-203.87ms4.00ms±0.99ms1+0.0%
ScrollView children-10015.60ms16.00ms±1.64ms1+0.0%
ScrollView horizontal4.00ms4.00ms±1.15ms1+0.0%
ScrollView sticky-headers2.70ms3.00ms±1.06ms1+0.0%
ScrollView scroll-indicators0.80ms1.00ms±0.42ms1+0.0%
ScrollView nested1.30ms1.00ms±0.48ms1+0.0%
ScrollView content-container-style0.70ms1.00ms±0.48ms1+0.0%
ScrollView children-50019.67ms19.00ms±2.06ms1+0.0%

TouchableHighlight

ScenarioMeanMedianStdDevRendersvs Baseline
TouchableHighlight mount0.50ms0.50ms±0.53ms1+0.0%
TouchableHighlight unmount0.10ms0.00ms±0.32ms0+0.0%
TouchableHighlight rerender0.60ms1.00ms±0.52ms2+0.0%
TouchableHighlight custom-underlay-color0.40ms0.00ms±0.52ms1+0.0%
TouchableHighlight custom-active-opacity0.30ms0.00ms±0.48ms1+0.0%
TouchableHighlight disabled0.30ms0.00ms±0.48ms1+0.0%
TouchableHighlight with-all-handlers0.30ms0.00ms±0.48ms1+0.0%
TouchableHighlight with-hit-slop0.40ms0.00ms±0.52ms1+0.0%
TouchableHighlight nested-touchables0.80ms1.00ms±0.42ms1+0.0%
TouchableHighlight multiple-touchables-102.60ms3.00ms±0.52ms1+0.0%
TouchableHighlight multiple-touchables-5013.00ms12.50ms±1.56ms1+0.0%
TouchableHighlight multiple-touchables-10022.70ms22.50ms±2.87ms1+0.0%

Pressable

ScenarioMeanMedianStdDevRendersvs Baseline
Pressable mount0.20ms0.00ms±0.42ms1+0.0%
Pressable unmount0.00ms0.00ms±0.00ms0+0.0%
Pressable rerender0.50ms0.50ms±0.53ms2+0.0%
Pressable with-all-handlers0.40ms0.00ms±0.52ms1+0.0%
Pressable with-style-function0.40ms0.00ms±0.52ms1+0.0%
Pressable disabled0.40ms0.00ms±0.52ms1+0.0%
Pressable with-hit-slop0.40ms0.00ms±0.52ms1+0.0%
Pressable nested0.90ms1.00ms±1.20ms1+0.0%
Pressable multiple-103.13ms3.00ms±0.52ms1+0.0%
Pressable multiple-5014.33ms14.00ms±1.23ms1+0.0%
Pressable multiple-10016.00ms12.00ms±8.86ms1+0.0%

Modal

ScenarioMeanMedianStdDevRendersvs Baseline
Modal mount0.20ms0.00ms±0.42ms1+0.0%
Modal unmount0.00ms0.00ms±0.00ms0+0.0%
Modal rerender0.30ms0.00ms±0.48ms2+0.0%
Modal slide-animation0.40ms0.00ms±0.52ms1+0.0%
Modal fade-animation0.30ms0.00ms±0.48ms1+0.0%
Modal transparent0.40ms0.00ms±0.52ms1+0.0%
Modal with-callbacks0.30ms0.00ms±0.48ms1+0.0%
Modal rich-content1.80ms2.00ms±0.42ms1+0.0%
Modal with-accessibility0.40ms0.00ms±0.52ms1+0.0%

Image

ScenarioMeanMedianStdDevRendersvs Baseline
Image mount0.10ms0.00ms±0.32ms1+0.0%
Image unmount0.00ms0.00ms±0.00ms0+0.0%
Image rerender0.10ms0.00ms±0.32ms2+0.0%
Image with-resize-mode0.10ms0.00ms±0.32ms1+0.0%
Image with-border-radius0.20ms0.00ms±0.42ms1+0.0%
Image with-tint-color0.10ms0.00ms±0.32ms1+0.0%
Image with-blur-radius0.00ms0.00ms±0.00ms1+0.0%
Image with-accessibility0.20ms0.00ms±0.42ms1+0.0%
Image multiple-100.93ms1.00ms±0.26ms1+0.0%
Image multiple-503.53ms3.00ms±1.19ms1+0.0%
Image multiple-1008.87ms8.00ms±2.17ms1+0.0%

ActivityIndicator

ScenarioMeanMedianStdDevRendersvs Baseline
ActivityIndicator mount0.10ms0.00ms±0.32ms1+0.0%
ActivityIndicator unmount0.00ms0.00ms±0.00ms0+0.0%
ActivityIndicator rerender0.20ms0.00ms±0.42ms2+0.0%
ActivityIndicator size-large0.20ms0.00ms±0.42ms1+0.0%
ActivityIndicator size-small0.20ms0.00ms±0.42ms1+0.0%
ActivityIndicator with-color0.00ms0.00ms±0.00ms1+0.0%
ActivityIndicator not-animating0.10ms0.00ms±0.32ms1+0.0%
ActivityIndicator with-accessibility0.20ms0.00ms±0.42ms1+0.0%
ActivityIndicator multiple-100.87ms1.00ms±0.35ms1+0.0%
ActivityIndicator multiple-503.87ms4.00ms±0.99ms1+0.0%
ActivityIndicator multiple-1007.40ms7.00ms±1.18ms1+0.0%

Switch

ScenarioMeanMedianStdDevRendersvs Baseline
Switch mount0.30ms0.00ms±0.48ms1+0.0%
Switch unmount0.00ms0.00ms±0.00ms0+0.0%
Switch rerender0.50ms0.50ms±0.53ms2+0.0%
Switch value-true0.10ms0.00ms±0.32ms1+0.0%
Switch disabled0.20ms0.00ms±0.42ms1+0.0%
Switch custom-colors0.40ms0.00ms±0.52ms1+0.0%
Switch on-value-change0.30ms0.00ms±0.48ms1+0.0%
Switch with-accessibility0.20ms0.00ms±0.42ms1+0.0%
Switch multiple-102.00ms2.00ms±1.20ms1+0.0%
Switch multiple-509.20ms9.00ms±1.42ms1+0.0%
Switch multiple-10017.27ms16.00ms±2.05ms1+0.0%

Button

ScenarioMeanMedianStdDevRendersvs Baseline
Button mount0.70ms1.00ms±0.48ms1+0.0%
Button unmount0.10ms0.00ms±0.32ms0+0.0%
Button rerender1.00ms1.00ms±0.67ms2+0.0%
Button disabled0.70ms1.00ms±0.48ms1+0.0%
Button with-color0.50ms0.50ms±0.53ms1+0.0%
Button with-accessibility0.70ms1.00ms±0.48ms1+0.0%
Button multiple-105.73ms6.00ms±0.96ms1+0.0%
Button multiple-5022.40ms27.00ms±7.79ms1+0.0%
Button multiple-10019.13ms19.00ms±2.13ms1+0.0%

TextInput

ScenarioMeanMedianStdDevRendersvs Baseline
TextInput mount0.20ms0.00ms±0.42ms1+0.0%
TextInput unmount0.10ms0.00ms±0.32ms0+0.0%
TextInput rerender0.20ms0.00ms±0.42ms2+0.0%
TextInput multiline0.20ms0.00ms±0.42ms1+0.0%
TextInput with-value0.10ms0.00ms±0.32ms1+0.0%
TextInput styled0.20ms0.00ms±0.42ms1+0.0%
TextInput multiple-1007.00ms7.00ms±1.13ms1+0.0%

View

ScenarioMeanMedianStdDevRendersvs Baseline
View mount0.20ms0.00ms±0.42ms1+0.0%
View unmount0.00ms0.00ms±0.00ms0+0.0%
View rerender0.40ms0.00ms±0.52ms2+0.0%
View nested-503.47ms3.00ms±0.92ms1+0.0%
View nested-1007.33ms7.00ms±1.18ms1+0.0%
View shadow0.00ms0.00ms±0.00ms1+0.0%
View border-radius0.10ms0.00ms±0.32ms1+0.0%
View nested-50016.20ms10.00ms±11.48ms1+0.0%

Text

ScenarioMeanMedianStdDevRendersvs Baseline
Text mount0.20ms0.00ms±0.42ms1+0.0%
Text unmount0.00ms0.00ms±0.00ms0+0.0%
Text rerender0.20ms0.00ms±0.42ms2+0.0%
Text long-10000.10ms0.00ms±0.32ms1+0.0%
Text nested0.30ms0.00ms±0.48ms1+0.0%
Text styled0.20ms0.00ms±0.42ms1+0.0%
Text multiple-1007.47ms7.00ms±1.13ms1+0.0%

@vineethkuttan
Vineeth (vineethkuttan) marked this pull request as ready for review March 16, 2026 04:42
@vineethkuttanVineeth (vineethkuttan) changed the title [DRAFT] Circular dependency checkFixi Circular Dependency issues for New Arch AppsMar 16, 2026
Comment threadvnext/templates/cpp-app/windows/MyApp/MyApp.vcxproj Outdated
@vmorozVladimir Morozov (vmoroz) changed the title Fixi Circular Dependency issues for New Arch AppsFix Circular Dependency issues for New Arch AppsMar 16, 2026
@vineethkuttan

Copy link
Copy Markdown
ContributorAuthor

/azp run

@azure-pipelines

Copy link
Copy Markdown
Contributor
Azure Pipelines successfully started running 2 pipeline(s).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@acoates-ms
Andrew Coates (acoates-ms) merged commit d02a7c6 into mainMar 17, 2026
47 checks passed
@vineethkuttan
Vineeth (vineethkuttan) deleted the circulardependencyCheck branch March 18, 2026 04:02
github-actionsBot pushed a commit to vineethkuttan/react-native-windows that referenced this pull request Mar 18, 2026
* Try fixing microsoft#13599
* Change files
* fix by looking in winget-cli
- microsoft/winget-cli#5932
* Make changes in MyApp and revert changes in the prop
* Add Force Synchronous PDB Write
* Remove the direct Build.0/Deploy.0 entries for the vcxproj
* fix folly build issues
- reverting playground.yml
* Set WinMD generation to true
github-actionsBot pushed a commit to vineethkuttan/react-native-windows that referenced this pull request Mar 19, 2026
* Try fixing microsoft#13599
* Change files
* fix by looking in winget-cli
- microsoft/winget-cli#5932
* Make changes in MyApp and revert changes in the prop
* Add Force Synchronous PDB Write
* Remove the direct Build.0/Deploy.0 entries for the vcxproj
* fix folly build issues
- reverting playground.yml
* Set WinMD generation to true
Vineeth (vineethkuttan) added a commit that referenced this pull request Mar 23, 2026
* Try fixing #13599
* Change files
* fix by looking in winget-cli
- microsoft/winget-cli#5932
* Make changes in MyApp and revert changes in the prop
* Add Force Synchronous PDB Write
* Remove the direct Build.0/Deploy.0 entries for the vcxproj
* fix folly build issues
- reverting playground.yml
* Set WinMD generation to true
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.

New arch app first builds sometimes fail with circular dependency error MSB4006

3 participants

@vineethkuttan@acoates-ms@iamAbhi-916