This PR adds a RnwNewArch MSBuild property and RNW_NEW_ARCH build-time constant / pre-processor directive for use by external (module) devs. This PR also updates @react-native-windows/codegen to use the directive when appropriate, and also applies those changes to sample-custom-component.
The expectation is that external devs now use these new properties and directives instead of the previously exposed UseFabric, UseHermes and/or UseWinUI3 props. All logic expecting external developers to manually set those props has been removed and replaced with more robust checking that keys off RnwNewArch and throws warnings or errors if the other props aren't set correctly.
In addition, this PR adds further checks to make sure external projects load the WindowsSDK props sheet, followed by the appropriate RNW props and then the RNW targets. Failure to load these import properly would always risk putting the project in a broken state, now we at least tell people what they're missing.
Note: Old arch devs will still be able to toggle UseHermes.
Type of Change
Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
This change requires a documentation update
Why
We don't want end-users to have access to conditionally build their code for the new or old architectures, without having to use/replicate the current complicated un-scoped directives we use internally.
Closes #13929
What
See above.
Screenshots
N/A
Testing
Verified the flag exists and builds for the sample-custom-component. Also verified that new projects build properly.
Changelog
Should this change be included in the release notes: yes
Add RnwNewArch property and RNW_NEW_ARCH constants when building projects for the new architecture
THis PR backports #14042 to 0.76.
Description
This PR adds a
RnwNewArch
MSBuild property andRNW_NEW_ARCH
build-time constant / pre-processor directive for use by external (module) devs. This PR also updates@react-native-windows/codegen
to use the directive when appropriate, and also applies those changes tosample-custom-component
.The expectation is that external devs now use these new properties and directives instead of the previously exposed
UseFabric
,UseHermes
and/orUseWinUI3
props. All logic expecting external developers to manually set those props has been removed and replaced with more robust checking that keys offRnwNewArch
and throws warnings or errors if the other props aren't set correctly.In addition, this PR adds further checks to make sure external projects load the WindowsSDK props sheet, followed by the appropriate RNW props and then the RNW targets. Failure to load these import properly would always risk putting the project in a broken state, now we at least tell people what they're missing.
Note: Old arch devs will still be able to toggle
UseHermes
.Type of Change
Why
We don't want end-users to have access to conditionally build their code for the new or old architectures, without having to use/replicate the current complicated un-scoped directives we use internally.
Closes #13929
What
See above.
Screenshots
N/A
Testing
Verified the flag exists and builds for the sample-custom-component. Also verified that new projects build properly.
Changelog
Should this change be included in the release notes: yes
Add RnwNewArch property and RNW_NEW_ARCH constants when building projects for the new architecture
Microsoft Reviewers: Open in CodeFlow