Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions .ado/compliance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ parameters:
default:
Medium:
name: rnw-pool-4-microsoft
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22
Large:
name: rnw-pool-8-microsoft
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22
- name: forceCodeQL
displayName: Force CodeQL to rebuild databases
type: boolean
Expand Down
6 changes: 3 additions & 3 deletions .ado/continuous.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ parameters:
default:
Small:
name: rnw-pool-2
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22
Medium:
name: rnw-pool-4
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22
Large:
name: rnw-pool-8
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22

stages:
- template: stages.yml
Expand Down
66 changes: 66 additions & 0 deletions .ado/image/rnw-img-vs2026-node22.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"imageType": "Managed",
"baseImage": "/MicrosoftWindowsServer/WindowsServer/2022-datacenter/latest",
"artifacts": [
{
"name": "windows-EnableDeveloperMode"
},
{
"name": "windows-enable-long-paths"
},
{
"name": "windows-gitinstall"
},
{
"name": "windows-AzPipeline-ImageHelpers"
},
{
"name": "windows-AzPipeline-InitializeVM"
},
{
"name": "windows-AzPipeline-powershellCore"
},
{
"name": "windows-AzPipeline-7zip"
},
{
"name": "windows-visualstudio-bootstrapper",
"parameters": {
"Workloads": "--add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Workload.Universal --add Microsoft.Component.MSBuild --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.ComponentGroup.UWP.Support --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core --add Microsoft.VisualStudio.Component.Windows10SDK.19041 Microsoft.VisualStudio.Component.Windows11SDK.22621 --add Microsoft.VisualStudio.ComponentGroup.UWP.VC --includeRecommended --includeOptional",
"SKU": "Enterprise",
"VSBootstrapperURL": "https://aka.ms/vs/18/release/vs_Enterprise.exe"
}
},
{
"name": "Windows-NodeJS",
"parameters": {
"Version": "22.14.0"
}
},
{
"name": "windows-npm-global",
"parameters": {
"packages": "[email protected], [email protected], [email protected]",
"addToPath": true
}
},
{
"name": "windows-chrome"
},
{
"name": "windows-AzPipeline-WinAppDriver"
},
{
"name": "windows-dotnetcore-sdk",
"parameters": {
"DotNetCoreVersion": "3.1.425"
}
},
{
"name": "windows-dotnetcore-sdk",
"parameters": {
"DotNetCoreVersion": "8.0.413"
}
}
]
}
2 changes: 1 addition & 1 deletion .ado/integrate-rn.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ variables:
- group: RNW Secrets

pool:
vmImage: windows-2022
vmImage: windows-2025

jobs:
- job: IntegrateRN
Expand Down
4 changes: 2 additions & 2 deletions .ado/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ parameters:
default:
Medium:
name: rnw-pool-4-microsoft
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22
Large:
name: rnw-pool-8-microsoft
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22

- name: desktopBuildMatrix
type: object
Expand Down
2 changes: 1 addition & 1 deletion .ado/templates/discover-google-test-adapter.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
steps:

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

# Test the path to the google test adapter
Expand Down
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
6 changes: 3 additions & 3 deletions .ado/windows-vs-pr-secure.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ parameters:
default:
Small:
name: rnw-pool-2
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22
Medium:
name: rnw-pool-4
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22
Large:
name: rnw-pool-8
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22

stages:
- template: stages.yml
Expand Down
6 changes: 3 additions & 3 deletions .ado/windows-vs-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ parameters:
default:
Small:
name: rnw-pool-2
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22
Medium:
name: rnw-pool-4
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22
Large:
name: rnw-pool-8
demands: ImageOverride -equals rnw-img-vs2022-node22
demands: ImageOverride -equals rnw-img-vs2026-node22

stages:
- template: stages.yml
Expand Down
7 changes: 7 additions & 0 deletions change/@react-native-windows-automation-channel-vs2026.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "none",
"comment": "Update MinimumVisualStudioVersion to 18.0 for VS2026 support",
"packageName": "@react-native-windows/automation-channel",
"email": "[email protected]",
"dependentChangeType": "none"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "Add Visual Studio 2026 detection support alongside VS2022",
"packageName": "@react-native-windows/cli",
"email": "[email protected]",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "Update MinimumVisualStudioVersion to 18.0 for VS2026 support",
"packageName": "@react-native-windows/telemetry",
"email": "[email protected]",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "Update CI pipelines and dependency scripts to support Visual Studio 2026",
"packageName": "react-native-windows",
"email": "[email protected]",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32929.385
# Visual Studio Version 18
VisualStudioVersion = 18.0.0.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AutomationChannel", "AutomationChannel\AutomationChannel.vcxproj", "{C0A69310-6119-46DC-A6D6-0BAB7826DC92}"
ProjectSection(ProjectDependencies) = postProject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<ProjectName>AutomationChannel</ProjectName>
<RootNamespace>AutomationChannel</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
<MinimumVisualStudioVersion>18.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export const HealthCheckList = [
[true, 'WindowsVersion', 'Windows version >= 10.0.17763.0'],
[true, 'DeveloperMode', 'Developer mode is on'],
[true, 'LongPath', 'Long path support is enabled'],
[true, 'VSUWP', 'Visual Studio 2022 (>= 17.11.0) & req. components'],
[true, 'VSUWP', 'Visual Studio 2022/2026 (>= 17.11.0) & req. components'],
[true, 'Node', 'Node.js (LTS, >= 22.0)'],
[true, 'Yarn', 'Yarn'],
[true, 'DotNetCore', '.NET SDK (LTS, = 8.0)'],
Expand Down
17 changes: 15 additions & 2 deletions packages/@react-native-windows/cli/src/utils/vsInstalls.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ export function enumerateVsInstalls(opts: {
if (opts.minVersion) {
// VS 2019 ex: minVersion == 16.7 => [16.7,17.0)
// VS 2022 ex: minVersion == 17.0 => [17.0,18.0)
// VS 2026 ex: minVersion == 18.0 => [18.0,19.0)
// To support both VS2022 and VS2026 with minVersion == 17.11.0 => [17.11.0,19.0)

// Try to parse minVersion as both a Number and SemVer
const minVersionNum = Number(opts.minVersion);
Expand All @@ -82,12 +84,23 @@ export function enumerateVsInstalls(opts: {

if (minVersionSemVer) {
minVersion = minVersionSemVer.toString();
maxVersion = `${minVersionSemVer.major + 1}.0`;
// Support VS2022 (17.x) and VS2026 (18.x) by extending max version range
// If minVersion is 17.x, allow up to 19.0 to include both VS2022 and VS2026
if (minVersionSemVer.major === 17) {
maxVersion = '19.0';
} else {
maxVersion = `${minVersionSemVer.major + 1}.0`;
}
} else if (!Number.isNaN(minVersionNum)) {
minVersion = Number.isInteger(minVersionNum)
? `${minVersionNum}.0`
: minVersionNum.toString();
maxVersion = `${Math.floor(minVersionNum) + 1}.0`;
// Support VS2022 (17.x) and VS2026 (18.x) by extending max version range
if (Math.floor(minVersionNum) === 17) {
maxVersion = '19.0';
} else {
maxVersion = `${Math.floor(minVersionNum) + 1}.0`;
}
} else {
// Unable to parse minVersion and determine maxVersion,
// caller will throw error that version couldn't be found.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.22621.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
<MinimumVisualStudioVersion>18.0</MinimumVisualStudioVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WindowsXamlEnableOverview>true</WindowsXamlEnableOverview>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<ProjectName>UsesPackagesConfig</ProjectName>
<RootNamespace>UsesPackagesConfig</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
<MinimumVisualStudioVersion>18.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<RootNamespace>RNTesterApp</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
<MinimumVisualStudioVersion>18.0</MinimumVisualStudioVersion>
<AppxPackage>false</AppxPackage>
</PropertyGroup>
<PropertyGroup Label="ReactNativeWindowsProps">
Expand Down Expand Up @@ -47,7 +47,7 @@
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<ProjectName>Playground-composition</ProjectName>
<Keyword>Win32Proj</Keyword>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
<MinimumVisualStudioVersion>18.0</MinimumVisualStudioVersion>
<AppxPackage>false</AppxPackage>
</PropertyGroup>
<!-- This isn't necessary in the current cpp-app template, but looks like maybe it's needed for XAML hosting support to work properly. -->
Expand Down Expand Up @@ -54,7 +54,7 @@
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<RootNamespace>SampleAppFabric</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
<MinimumVisualStudioVersion>18.0</MinimumVisualStudioVersion>
<AppxPackage>false</AppxPackage>
</PropertyGroup>
<PropertyGroup Label="ReactNativeWindowsProps">
Expand Down Expand Up @@ -48,7 +48,7 @@
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<RootNamespace>SampleCustomComponent</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
<MinimumVisualStudioVersion>18.0</MinimumVisualStudioVersion>
<AppxPackage>false</AppxPackage>
</PropertyGroup>
<PropertyGroup Label="ReactNativeWindowsProps">
Expand Down Expand Up @@ -48,7 +48,7 @@
<PropertyGroup Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset>v145</PlatformToolset>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
Expand Down
2 changes: 1 addition & 1 deletion vnext/Desktop/React.Windows.Desktop.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
<ProjectName>React.Windows.Desktop</ProjectName>
<RootNamespace>facebook.react</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
<MinimumVisualStudioVersion>18.0</MinimumVisualStudioVersion>
<CppWinRTProjectLanguage>C++/WinRT</CppWinRTProjectLanguage>
<CppWinRTNamespaceMergeDepth>2</CppWinRTNamespaceMergeDepth>
<CppWinRTUsePrefixes>true</CppWinRTUsePrefixes>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<ProjectName>Microsoft.ReactNative</ProjectName>
<RootNamespace>Microsoft.ReactNative</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
<MinimumVisualStudioVersion>18.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
Expand Down
2 changes: 1 addition & 1 deletion vnext/PropertySheets/React.Cpp.props
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@

<PropertyGroup Label="ExternalDependencies">
<!-- Google Test Adapter -->
<!-- Property sheets in the adapter's NuGet doesn't consider PlatformToolset=v143 -->
<!-- Property sheets in the adapter's NuGet doesn't consider PlatformToolset=v145 -->
<Force-Enable-Microsoft-googletest-v140-windesktop-msvcstl-static-rt-dyn>false</Force-Enable-Microsoft-googletest-v140-windesktop-msvcstl-static-rt-dyn>
</PropertyGroup>

Expand Down
Loading