Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
f6eedd5
Use image rnw-img-vs2026-node24
JunielKatarn Jun 3, 2026
5d015f5
Update fork-sync/bin.js chmod
JunielKatarn Jun 3, 2026
e65ade5
Upgrade to MSVC 14.5
JunielKatarn Jun 3, 2026
bce9182
Drop -UseWindowsPowerShell fallback
JunielKatarn Jun 3, 2026
3013ae0
Manually install yarn
JunielKatarn Jun 3, 2026
66c3581
Upgrade to .NET Hosting Bundle 10.0.8
JunielKatarn Jun 3, 2026
f9df664
Change files
JunielKatarn Jun 3, 2026
c241cc5
Fix change file
JunielKatarn Jun 3, 2026
ff1c07e
Add temp npm install yarn in templates
JunielKatarn Jun 4, 2026
2940fc9
Merge branch 'main' of github.com:microsoft/react-native-windows into…
JunielKatarn Jun 4, 2026
c31dbb2
Test yarn location
JunielKatarn Jun 4, 2026
805a2ca
update
JunielKatarn Jun 4, 2026
a776a07
update
JunielKatarn Jun 4, 2026
7c175e1
TEMPORARILY revert agent image
JunielKatarn Jun 4, 2026
57119d0
Print yarn version in setup
JunielKatarn Jun 4, 2026
b8b6289
Revert "TEMPORARILY revert agent image"
JunielKatarn Jun 4, 2026
aa56ecf
update
JunielKatarn Jun 4, 2026
5d7882e
update
JunielKatarn Jun 4, 2026
d615320
update
JunielKatarn Jun 4, 2026
ce0776b
Upgrade to msbuildVersion: 18.0
JunielKatarn Jun 4, 2026
f9580d2
Update Google test adapter location
JunielKatarn Jun 4, 2026
1558c43
Remove unused statement
JunielKatarn Jun 4, 2026
5cbd864
Remove probing tasks
JunielKatarn Jun 4, 2026
91fc172
Upgrade to VSTest@3
JunielKatarn Jun 4, 2026
558ec2c
Upgrade more projects and scripts to VS 2026
JunielKatarn Jun 4, 2026
685dd3d
Explicitly set vstest.console location
JunielKatarn Jun 4, 2026
9214b70
Install midgard-yarn and verdaccio in-place
JunielKatarn Jun 4, 2026
7e7a383
Fix yarn version
JunielKatarn Jun 4, 2026
e97656d
Update node-tests version
JunielKatarn Jun 4, 2026
f7cd257
Use pwsh in Add-AppDevPackage
JunielKatarn Jun 4, 2026
3b3e965
Make WindowsStoreAppUtils use PowerShell 7
JunielKatarn Jun 5, 2026
1355c59
Update snapshot values
JunielKatarn Jun 5, 2026
d8affae
Merge branch 'ci-win2025' of github.com:jurocha-ms/react-native-windo…
JunielKatarn Jun 5, 2026
8949b25
Update snapshot from failing x86 run
JunielKatarn Jun 5, 2026
f27d7e5
Use the --tag argument for verdaccio under Node 24
JunielKatarn Jun 5, 2026
8cc74c1
Ignore/warn on unstable click test
JunielKatarn Jun 5, 2026
a0cee40
Enable WMIC for RN Doctor
JunielKatarn Jun 5, 2026
811d7a5
Disable RN doctor until it drops WMIC
JunielKatarn Jun 5, 2026
ff50b10
Merge branch 'main' of github.com:microsoft/react-native-windows into…
JunielKatarn Jun 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions .ado/build-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ parameters:
default:
Medium:
name: rnw-pool-4-microsoft
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24
Large:
name: rnw-pool-8-microsoft
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24

- name: desktopBuildMatrix
type: object
Expand Down Expand Up @@ -161,6 +161,13 @@ extends:
version: '24.x'
displayName: Use Node.js 24.x

# TODO: REMOVE. Should be included in image.
- task: CmdLine@2
inputs:
script: |
npm install --global yarn@1.22.22 midgard-yarn@1.23.34 verdaccio@5.2.0
displayName: Install Node base packages

- template: .ado/templates/compute-beachball-branch-name.yml@self

# 4. Beachball tooling (developer builds only)
Expand Down
20 changes: 7 additions & 13 deletions .ado/jobs/desktop-single.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,12 @@ steps:
$DownloadScript = "$(Build.SourcesDirectory)\vnext\Scripts\Tfs\Invoke-WebRequestWithRetry.ps1"

& $DownloadScript `
-Uri 'https://download.visualstudio.microsoft.com/download/pr/20598243-c38f-4538-b2aa-af33bc232f80/ea9b2ca232f59a6fdc84b7a31da88464/dotnet-hosting-8.0.3-win.exe' `
-OutFile dotnet-hosting-8.0.3-win.exe
-Uri 'https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/10.0.8/dotnet-hosting-10.0.8-win.exe' `
-OutFile dotnet-hosting-10.0.8-win.exe

Write-Host 'Installing .NET hosting bundle'
Start-Process -Wait -FilePath .\dotnet-hosting-8.0.3-win.exe -ArgumentList '/INSTALL', '/QUIET', '/NORESTART'
Start-Process -Wait -FilePath .\dotnet-hosting-10.0.8-win.exe -ArgumentList '/INSTALL', '/QUIET', '/NORESTART'
Write-Host 'Installed .NET hosting bundle'

& $DownloadScript `
-Uri 'https://download.visualstudio.microsoft.com/download/pr/f2ec926e-0d98-4a8b-8c70-722ccc2ca0e5/b59941b0c60f16421679baafdb7e9338/dotnet-sdk-7.0.407-win-x64.exe' `
-OutFile dotnet-sdk-7.0.407-win-x64.exe

Write-Host 'Installing .NET 7 SDK'
Start-Process -Wait -FilePath .\dotnet-sdk-7.0.407-win-x64.exe -ArgumentList '/INSTALL', '/QUIET', '/NORESTART'
Write-Host 'Installed .NET 7 SDK'
displayName: Install the .NET Core Hosting Bundle

- pwsh: |
Expand Down Expand Up @@ -97,7 +89,7 @@ steps:
- template: ../templates/discover-google-test-adapter.yml

- ${{ if ne(parameters.buildPlatform, 'ARM64EC') }}:
- task: VSTest@2
- task: VSTest@3
displayName: Run Desktop Unit Tests
timeoutInMinutes: 5 # Set smaller timeout, due to hangs
inputs:
Expand All @@ -115,6 +107,7 @@ steps:
publishRunAttachments: true
collectDumpOn: onAbortOnly
vsTestVersion: latest
vstestLocation: C:\Program Files\Microsoft Visual Studio\18\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe
failOnMinTestsNotRun: true

# Suspected debug assert in TestRunner hanging tests randomly. Run only on Release for now.
Expand Down Expand Up @@ -211,7 +204,7 @@ steps:
Invoke-WebRequest -UseBasicParsing -Uri "http://localhost:8081/IntegrationTests/IntegrationTestsApp.bundle?platform=windows&dev=true"
continueOnError: true

- task: VSTest@2
- task: VSTest@3
displayName: Run Desktop Integration Tests
inputs:
testSelector: testAssemblies
Expand All @@ -224,6 +217,7 @@ steps:
publishRunAttachments: true
collectDumpOn: onAbortOnly
vsTestVersion: latest
vstestLocation: C:\Program Files\Microsoft Visual Studio\18\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe
Comment thread
JunielKatarn marked this conversation as resolved.
failOnMinTestsNotRun: true
otherConsoleOptions: '/blame -- RunConfiguration.TestSessionTimeout=300000'

Expand Down
2 changes: 1 addition & 1 deletion .ado/jobs/node-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ parameters:

- name: versions
type: object
default: [22]
default: [24]

jobs:
- ${{ each nodeVersion in parameters.versions }}:
Expand Down
3 changes: 2 additions & 1 deletion .ado/jobs/universal-single.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ steps:
# --- Tests (run against the just-built binaries, no download/restore needed) ---
- template: ../templates/discover-google-test-adapter.yml

- task: VSTest@2
- task: VSTest@3
displayName: Run Universal Unit Tests (Native)
timeoutInMinutes: 5 # Set smaller timeout, due to hangs
inputs:
Expand All @@ -67,5 +67,6 @@ steps:
publishRunAttachments: true
collectDumpOn: onAbortOnly
vsTestVersion: latest
vstestLocation: C:\Program Files\Microsoft Visual Studio\18\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe
failOnMinTestsNotRun: true
condition: and(succeeded(), not(eq('${{ parameters.buildPlatform }}', 'ARM64')))
4 changes: 2 additions & 2 deletions .ado/pr-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ extends:
AgentPool:
Medium:
name: rnw-pool-4
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24
Large:
name: rnw-pool-8
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24
12 changes: 7 additions & 5 deletions .ado/templates/discover-google-test-adapter.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
steps:

- pwsh: |
$vsExtensionPath="${env:ProgramFiles}\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\Extensions\";
$GoogleTestAdapterPath=(Get-ChildItem $vsExtensionPath -Directory | Where-Object -FilterScript {Test-Path (Join-Path -Path $_.FullName -ChildPath "GoogleTestAdapter.Core.dll")}).FullName
$extensionsPath = "${env:ProgramFiles}\Microsoft Visual Studio\18\Enterprise\Common7\IDE\Extensions"
$adapterPath = Get-ChildItem $extensionsPath -Directory |`
Where-Object -FilterScript { Test-Path (Join-Path -Path $_.FullName -ChildPath "GoogleTestAdapter.Core.dll") } |`
Select-Object -ExpandProperty FullName

# Test the path to the google test adapter
Test-Path -Path $GoogleTestAdapterPath
Test-Path -Path $adapterPath

Write-Debug "Setting Google Test Adapter Path to '$GoogleTestAdapterPath' found in '$vsExtensionPath'"
Write-Host "##vso[task.setvariable variable=GoogleTestAdapterPath]$GoogleTestAdapterPath"
Write-Debug "Setting Google Test Adapter Path to '$adapterPath' found in '$extensionsPath'"
Write-Host "##vso[task.setvariable variable=GoogleTestAdapterPath]$adapterPath"
displayName: Set GoogleTestAdapterPath
4 changes: 2 additions & 2 deletions .ado/templates/msbuild-sln.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ parameters:
# NuGet & MSBuild
solutionDir:
solutionName:
msbuildVersion: 17.0
msbuildVersion: 18.0
msBuildArchitecture: x64
preferredToolArchitecture: x64
platformToolset: v143
platformToolset: v145
buildPlatform: x64
buildConfiguration: Debug
msbuildArguments: ''
Expand Down
2 changes: 1 addition & 1 deletion .ado/templates/react-native-debug-info.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ parameters:
type: string
- name: doctor
type: boolean
default: true
default: false
- name: config
type: boolean
default: true
Expand Down
12 changes: 12 additions & 0 deletions .ado/templates/strict-yarn-install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,18 @@ steps:
$packageJson | ConvertTo-Json | Out-File ./package.json
displayName: Remove postinstall

- task: UseNode@1
inputs:
version: '24.x'
displayName: Use Node.js 24.x

# TODO: REMOVE. Should be included in image.
- task: CmdLine@2
inputs:
script: |
npm install --global yarn@1.22.22 midgard-yarn@1.23.34 verdaccio@5.2.0
displayName: Install Node base packages

- script: yarn install --immutable
displayName: Strict yarn install ${{ parameters.workspace }}
retryCountOnTaskFailure: 2
2 changes: 1 addition & 1 deletion .ado/templates/verdaccio-start.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ steps:
- script: |
for %%f in (npm-pkgs\*.tgz) do (
echo Publishing %%f to verdaccio...
npm publish "%%f" --registry http://localhost:4873 --access public
npm publish "%%f" --registry http://localhost:4873 --access public --tag canary
Comment thread
JunielKatarn marked this conversation as resolved.
)
displayName: Publish packages to verdaccio

Expand Down
12 changes: 12 additions & 0 deletions .ado/templates/yarn-install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,18 @@ parameters:
default: .

steps:
- task: UseNode@1
inputs:
version: '24.x'
displayName: Use Node.js 24.x

# TODO: REMOVE. Should be included in image.
- task: CmdLine@2
inputs:
script: |
npm install --global yarn@1.22.22 midgard-yarn@1.23.34 verdaccio@5.2.0
displayName: Install Node base packages

- script: yarn --cwd ${{ parameters.workingDirectory }} install --immutable
displayName: yarn install (immutable)
retryCountOnTaskFailure: 2
4 changes: 2 additions & 2 deletions .ado/windows-vs-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ extends:
AgentPool:
Medium:
name: rnw-pool-4
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24
Large:
name: rnw-pool-8
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node24
14 changes: 7 additions & 7 deletions .github/ISSUE_TEMPLATE/bug-report.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ body:
attributes:
value: |
This form is for reporting bugs found in React Native for Windows.

If the issue is that an existing React Native API is simply missing in React Native for Windows, please use the [this form](https://github.com/microsoft/react-native-windows/issues/new?template=missing-api.yaml) instead.

If you just have a question, please post on [Discussions](https://github.com/microsoft/react-native-windows/discussions) instead.
Expand All @@ -21,7 +21,7 @@ body:
label: Problem Description
description: |
Please enter a description of the issue and any output and/or error logging.

If you're seeing a failure when using a RNW CLI command (i.e. `run-windows`, `autolink-windows`, `codegen-windows`) please try again with `--logging` and provide that output.
id: description
- type: textarea
Expand Down Expand Up @@ -63,17 +63,17 @@ body:
label: Community Modules
description: |
Describe what you community modules you have added to your project.

Not sure? Look at your app's `package.json` and share what's in the "dependencies" section.
id: modules
- type: dropdown
attributes:
label: Target React Native Architecture
description: |
For which React Native architecture(s) did this issue repro for you?

Not sure? Which template did you use when creating your project? For RNW <= 0.79.0, the default for new app projects is "Old Architecture".

See [New vs. Old Architecture](https://microsoft.github.io/react-native-windows/docs/new-architecture) for more details.
options:
- "Both Architectures"
Expand All @@ -98,8 +98,8 @@ body:
label: Visual Studio Version
description: Which version of Visual Studio are you using?
options:
- "Visual Studio 2022"
- "Visual Studio 2022 Preview"
- "Visual Studio 2026"
- "Visual Studio 2026 Preview"
id: vs
- type: dropdown
attributes:
Expand Down
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@
"**/lib/**/*.js": true,
"**/node_modules": false
},
"editor.formatOnSave": true,
"editor.formatOnSave": false,
"eslint.format.enable": true,
"eslint.enable": true,
"eslint.codeActionsOnSave.mode": "problems",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "Upgrade build agents to Windows Server 2025, Visual Studio 2026",
"packageName": "@react-native-windows/automation",
"email": "julio.rocha@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "Upgrade build agents to Windows Server 2025, Visual Studio 2026",
"packageName": "@react-native-windows/cli",
"email": "julio.rocha@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "Upgrade build agents to Windows Server 2025, Visual Studio 2026",
"packageName": "react-native-windows",
"email": "julio.rocha@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ function resolveAppName(appName: string): string {
try {
const useAppxCompatibility = !!process.env.TF_BUILD;
const packageFamilyNameCommand = useAppxCompatibility
? `& { Import-Module Appx -UseWindowsPowerShell -WarningAction SilentlyContinue; (Get-AppxPackage -Name '${appName}').PackageFamilyName }`
? `& { Import-Module Appx -WarningAction SilentlyContinue; (Get-AppxPackage -Name '${appName}').PackageFamilyName }`
: `(Get-AppxPackage -Name '${appName}').PackageFamilyName`;
const packageFamilyName = spawnSync(findPowerShell(), [
'-NoProfile',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ function PrintMessageAndExit($ErrorMessage, $ReturnCode)
{
Pause
}

exit $ReturnCode
}

Expand All @@ -137,11 +137,11 @@ function PrintMessageAndExit($ErrorMessage, $ReturnCode)
function ConfirmCertificateInstall
{
$Answer = $host.UI.PromptForChoice(
"",
$UiStrings.WarningInstallCert,
[System.Management.Automation.Host.ChoiceDescription[]]@($UiStrings.PromptYesString, $UiStrings.PromptNoString),
"",
$UiStrings.WarningInstallCert,
[System.Management.Automation.Host.ChoiceDescription[]]@($UiStrings.PromptYesString, $UiStrings.PromptNoString),
1)

return $Answer -eq 0
}

Expand All @@ -158,7 +158,7 @@ function ValidateCertificateFormat($FilePath)
{
PrintMessageAndExit ($UiStrings.ErrorBadCertificate -f $FilePath, $LastExitCode) $ErrorCodes.BadCertificate
}

# Check if certificate is expired
$cert = Get-PfxCertificate $FilePath
if (($cert.NotBefore -gt (Get-Date)) -or ($cert.NotAfter -lt (Get-Date)))
Expand Down Expand Up @@ -343,7 +343,7 @@ function LaunchElevated
# Launch the process and wait for it to finish
try
{
$AdminProcess = Start-Process "$PsHome\PowerShell.exe" -Verb RunAs -ArgumentList $RelaunchArgs -PassThru
$AdminProcess = Start-Process "$PsHome\pwsh.exe" -Verb RunAs -ArgumentList $RelaunchArgs -PassThru
}
catch
{
Expand Down Expand Up @@ -539,7 +539,7 @@ function DoStandardOperations
$DeveloperPackagePath = $EncryptedPackagePath
Write-Host ($UiStrings.EncryptedPackageFound -f $DeveloperPackagePath.FullName)
}

# The package must be signed
$PackageSignature = Get-AuthenticodeSignature $DeveloperPackagePath
$PackageCertificate = $PackageSignature.SignerCertificate
Expand Down
Loading
Loading