diff --git a/change/react-native-windows-2020-06-25-01-58-53-pgWin32WinUI3.json b/change/react-native-windows-2020-06-25-01-58-53-pgWin32WinUI3.json
new file mode 100644
index 00000000000..b342e7a869c
--- /dev/null
+++ b/change/react-native-windows-2020-06-25-01-58-53-pgWin32WinUI3.json
@@ -0,0 +1,8 @@
+{
+ "type": "prerelease",
+ "comment": "WinUI 3 islands support",
+ "packageName": "react-native-windows",
+ "email": "asklar@microsoft.com",
+ "dependentChangeType": "patch",
+ "date": "2020-06-25T08:58:53.669Z"
+}
diff --git a/packages/playground/windows/NuGet.Config b/packages/playground/windows/NuGet.Config
new file mode 100644
index 00000000000..8a7dab4d15f
--- /dev/null
+++ b/packages/playground/windows/NuGet.Config
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/playground/windows/Playground-win32 (Package)/Images/LockScreenLogo.scale-200.png b/packages/playground/windows/Playground-win32 (Package)/Images/LockScreenLogo.scale-200.png
new file mode 100644
index 00000000000..735f57adb5d
Binary files /dev/null and b/packages/playground/windows/Playground-win32 (Package)/Images/LockScreenLogo.scale-200.png differ
diff --git a/packages/playground/windows/Playground-win32 (Package)/Images/SplashScreen.scale-200.png b/packages/playground/windows/Playground-win32 (Package)/Images/SplashScreen.scale-200.png
new file mode 100644
index 00000000000..023e7f1feda
Binary files /dev/null and b/packages/playground/windows/Playground-win32 (Package)/Images/SplashScreen.scale-200.png differ
diff --git a/packages/playground/windows/Playground-win32 (Package)/Images/Square150x150Logo.scale-200.png b/packages/playground/windows/Playground-win32 (Package)/Images/Square150x150Logo.scale-200.png
new file mode 100644
index 00000000000..af49fec1a54
Binary files /dev/null and b/packages/playground/windows/Playground-win32 (Package)/Images/Square150x150Logo.scale-200.png differ
diff --git a/packages/playground/windows/Playground-win32 (Package)/Images/Square44x44Logo.scale-200.png b/packages/playground/windows/Playground-win32 (Package)/Images/Square44x44Logo.scale-200.png
new file mode 100644
index 00000000000..ce342a2ec8a
Binary files /dev/null and b/packages/playground/windows/Playground-win32 (Package)/Images/Square44x44Logo.scale-200.png differ
diff --git a/packages/playground/windows/Playground-win32 (Package)/Images/Square44x44Logo.targetsize-24_altform-unplated.png b/packages/playground/windows/Playground-win32 (Package)/Images/Square44x44Logo.targetsize-24_altform-unplated.png
new file mode 100644
index 00000000000..f6c02ce97e0
Binary files /dev/null and b/packages/playground/windows/Playground-win32 (Package)/Images/Square44x44Logo.targetsize-24_altform-unplated.png differ
diff --git a/packages/playground/windows/Playground-win32 (Package)/Images/StoreLogo.png b/packages/playground/windows/Playground-win32 (Package)/Images/StoreLogo.png
new file mode 100644
index 00000000000..7385b56c0e4
Binary files /dev/null and b/packages/playground/windows/Playground-win32 (Package)/Images/StoreLogo.png differ
diff --git a/packages/playground/windows/Playground-win32 (Package)/Images/Wide310x150Logo.scale-200.png b/packages/playground/windows/Playground-win32 (Package)/Images/Wide310x150Logo.scale-200.png
new file mode 100644
index 00000000000..288995b397f
Binary files /dev/null and b/packages/playground/windows/Playground-win32 (Package)/Images/Wide310x150Logo.scale-200.png differ
diff --git a/packages/playground/windows/Playground-win32 (Package)/Package.appxmanifest b/packages/playground/windows/Playground-win32 (Package)/Package.appxmanifest
new file mode 100644
index 00000000000..d0507079eb6
--- /dev/null
+++ b/packages/playground/windows/Playground-win32 (Package)/Package.appxmanifest
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+ Playground-win32 (Package)
+ asklar
+ Images\StoreLogo.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/playground/windows/Playground-win32 (Package)/Playground-win32 (Package).wapproj b/packages/playground/windows/Playground-win32 (Package)/Playground-win32 (Package).wapproj
new file mode 100644
index 00000000000..4491d2a8d72
--- /dev/null
+++ b/packages/playground/windows/Playground-win32 (Package)/Playground-win32 (Package).wapproj
@@ -0,0 +1,13 @@
+
+
+
+ eec4ef0f-3dd6-4d36-84d8-e5ec3f5ed5ff
+
+
+ ..\Playground-win32\Playground-win32.vcxproj
+
+
+
+
+
diff --git a/packages/playground/windows/Playground-win32 (Package)/Playground-win32-packaging.proj b/packages/playground/windows/Playground-win32 (Package)/Playground-win32-packaging.proj
new file mode 100644
index 00000000000..93bc1e2666d
--- /dev/null
+++ b/packages/playground/windows/Playground-win32 (Package)/Playground-win32-packaging.proj
@@ -0,0 +1,68 @@
+
+
+
+ 15.0
+
+
+
+ Debug
+ x86
+
+
+ Release
+ x86
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ $(MSBuildExtensionsPath)\Microsoft\DesktopBridge\
+ NativeOnly
+ NativeOnly
+
+
+
+ eec4ef0f-3dd6-4d36-84d8-e5ec3f5ed5ff
+ 10.0.18362.0
+ 10.0.17134.0
+ en-US
+ false
+ ..\Playground-win32\Playground-win32.vcxproj
+
+
+
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
diff --git a/packages/playground/windows/playground-win32-packaged.sln b/packages/playground/windows/playground-win32-packaged.sln
new file mode 100644
index 00000000000..dc4923da27f
--- /dev/null
+++ b/packages/playground/windows/playground-win32-packaged.sln
@@ -0,0 +1,139 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29102.190
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Playground-win32", "playground-win32\Playground-Win32.vcxproj", "{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Folly", "..\..\..\vnext\Folly\Folly.vcxproj", "{A990658C-CE31-4BCC-976F-0FC6B1AF693D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactCommon", "..\..\..\vnext\ReactCommon\ReactCommon.vcxproj", "{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}"
+ ProjectSection(ProjectDependencies) = postProject
+ {A990658C-CE31-4BCC-976F-0FC6B1AF693D} = {A990658C-CE31-4BCC-976F-0FC6B1AF693D}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Chakra", "..\..\..\vnext\Chakra\Chakra.vcxitems", "{C38970C0-5FBF-4D69-90D8-CBAC225AE895}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.ReactNative", "..\..\..\vnext\Microsoft.ReactNative\Microsoft.ReactNative.vcxproj", "{F7D32BD0-2749-483E-9A0D-1635EF7E3136}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSI.Shared", "..\..\..\vnext\JSI\Shared\JSI.Shared.vcxitems", "{0CC28589-39E4-4288-B162-97B959F8B843}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSI.Universal", "..\..\..\vnext\JSI\Universal\JSI.Universal.vcxproj", "{A62D504A-16B8-41D2-9F19-E2E86019E5E4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.ReactNative.Cxx", "..\..\..\vnext\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems", "{DA8B35B3-DA00-4B02-BDE6-6A397B3FD46B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "..\..\..\vnext\Common\Common.vcxproj", "{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ReactNative", "ReactNative", "{5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.ReactNative.Shared", "..\..\..\vnext\Shared\Shared.vcxitems", "{2049DBE9-8D13-42C9-AE4B-413AE38FFFD0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Mso", "..\..\..\vnext\Mso\Mso.vcxitems", "{84E05BFA-CBAF-4F0D-BFB6-4CE85742A57E}"
+EndProject
+Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Playground-win32 (Package)", "Playground-win32 (Package)\Playground-win32 (Package).wapproj", "{EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}"
+EndProject
+Global
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ ..\..\..\vnext\JSI\Shared\JSI.Shared.vcxitems*{0cc28589-39e4-4288-b162-97b959f8b843}*SharedItemsImports = 9
+ ..\..\..\vnext\Shared\Shared.vcxitems*{2049dbe9-8d13-42c9-ae4b-413ae38fffd0}*SharedItemsImports = 9
+ ..\..\..\vnext\Mso\Mso.vcxitems*{84e05bfa-cbaf-4f0d-bfb6-4ce85742a57e}*SharedItemsImports = 9
+ ..\..\..\vnext\JSI\Shared\JSI.Shared.vcxitems*{a62d504a-16b8-41d2-9f19-e2e86019e5e4}*SharedItemsImports = 4
+ ..\..\..\vnext\Chakra\Chakra.vcxitems*{c38970c0-5fbf-4d69-90d8-cbac225ae895}*SharedItemsImports = 9
+ ..\..\..\vnext\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems*{da8b35b3-da00-4b02-bde6-6a397b3fd46b}*SharedItemsImports = 9
+ ..\..\..\vnext\Chakra\Chakra.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
+ ..\..\..\vnext\JSI\Shared\JSI.Shared.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
+ ..\..\..\vnext\Microsoft.ReactNative.Cxx\Microsoft.ReactNative.Cxx.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
+ ..\..\..\vnext\Mso\Mso.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
+ ..\..\..\vnext\Shared\Shared.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
+ EndGlobalSection
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x64.ActiveCfg = Debug|x64
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x64.Build.0 = Debug|x64
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x64.Deploy.0 = Debug|x64
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x86.ActiveCfg = Debug|Win32
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x86.Build.0 = Debug|Win32
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x86.Deploy.0 = Debug|Win32
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x64.ActiveCfg = Release|x64
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x64.Build.0 = Release|x64
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x64.Deploy.0 = Release|x64
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x86.ActiveCfg = Release|Win32
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x86.Build.0 = Release|Win32
+ {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x86.Deploy.0 = Release|Win32
+ {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x64.ActiveCfg = Debug|x64
+ {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x64.Build.0 = Debug|x64
+ {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x86.ActiveCfg = Debug|Win32
+ {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x86.Build.0 = Debug|Win32
+ {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x64.ActiveCfg = Release|x64
+ {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x64.Build.0 = Release|x64
+ {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x86.ActiveCfg = Release|Win32
+ {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x86.Build.0 = Release|Win32
+ {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x64.ActiveCfg = Debug|x64
+ {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x64.Build.0 = Debug|x64
+ {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x86.ActiveCfg = Debug|Win32
+ {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x86.Build.0 = Debug|Win32
+ {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x64.ActiveCfg = Release|x64
+ {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x64.Build.0 = Release|x64
+ {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x86.ActiveCfg = Release|Win32
+ {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x86.Build.0 = Release|Win32
+ {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x64.ActiveCfg = Debug|x64
+ {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x64.Build.0 = Debug|x64
+ {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x86.ActiveCfg = Debug|Win32
+ {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x86.Build.0 = Debug|Win32
+ {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x64.ActiveCfg = Release|x64
+ {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x64.Build.0 = Release|x64
+ {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x86.ActiveCfg = Release|Win32
+ {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x86.Build.0 = Release|Win32
+ {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x64.ActiveCfg = Debug|x64
+ {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x64.Build.0 = Debug|x64
+ {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x86.ActiveCfg = Debug|Win32
+ {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x86.Build.0 = Debug|Win32
+ {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x64.ActiveCfg = Release|x64
+ {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x64.Build.0 = Release|x64
+ {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x86.ActiveCfg = Release|Win32
+ {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x86.Build.0 = Release|Win32
+ {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x64.ActiveCfg = Debug|x64
+ {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x64.Build.0 = Debug|x64
+ {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x86.ActiveCfg = Debug|Win32
+ {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x86.Build.0 = Debug|Win32
+ {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x64.ActiveCfg = Release|x64
+ {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x64.Build.0 = Release|x64
+ {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x86.ActiveCfg = Release|Win32
+ {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x86.Build.0 = Release|Win32
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Debug|x64.ActiveCfg = Debug|x64
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Debug|x64.Build.0 = Debug|x64
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Debug|x64.Deploy.0 = Debug|x64
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Debug|x86.ActiveCfg = Debug|x86
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Debug|x86.Build.0 = Debug|x86
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Debug|x86.Deploy.0 = Debug|x86
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Release|x64.ActiveCfg = Release|x64
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Release|x64.Build.0 = Release|x64
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Release|x64.Deploy.0 = Release|x64
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Release|x86.ActiveCfg = Release|x86
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Release|x86.Build.0 = Release|x86
+ {EEC4EF0F-3DD6-4D36-84D8-E5EC3F5ED5FF}.Release|x86.Deploy.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {A990658C-CE31-4BCC-976F-0FC6B1AF693D} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
+ {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
+ {C38970C0-5FBF-4D69-90D8-CBAC225AE895} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
+ {F7D32BD0-2749-483E-9A0D-1635EF7E3136} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
+ {0CC28589-39E4-4288-B162-97B959F8B843} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
+ {A62D504A-16B8-41D2-9F19-E2E86019E5E4} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
+ {DA8B35B3-DA00-4B02-BDE6-6A397B3FD46B} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
+ {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
+ {2049DBE9-8D13-42C9-AE4B-413AE38FFFD0} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
+ {84E05BFA-CBAF-4F0D-BFB6-4CE85742A57E} = {5EA20F54-880A-49F3-99FA-4B3FE54E8AB1}
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {F5EAF3BA-6B6F-4E81-B5C6-49B30EC0A32E}
+ EndGlobalSection
+EndGlobal
diff --git a/packages/playground/windows/playground-win32.sln b/packages/playground/windows/playground-win32.sln
index 17b51fe1d0b..cb5ea341f1b 100644
--- a/packages/playground/windows/playground-win32.sln
+++ b/packages/playground/windows/playground-win32.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29102.190
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Playground-Win32", "playground-win32\Playground-Win32.vcxproj", "{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Playground-win32", "playground-win32\Playground-Win32.vcxproj", "{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Folly", "..\..\..\vnext\Folly\Folly.vcxproj", "{A990658C-CE31-4BCC-976F-0FC6B1AF693D}"
EndProject
@@ -45,88 +45,60 @@ Global
..\..\..\vnext\Shared\Shared.vcxitems*{f7d32bd0-2749-483e-9a0d-1635ef7e3136}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|ARM = Debug|ARM
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
- Release|ARM = Release|ARM
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|ARM.ActiveCfg = Debug|ARM
- {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|ARM.Build.0 = Debug|ARM
- {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|ARM.Deploy.0 = Debug|ARM
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x64.ActiveCfg = Debug|x64
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x64.Build.0 = Debug|x64
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x64.Deploy.0 = Debug|x64
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x86.ActiveCfg = Debug|Win32
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x86.Build.0 = Debug|Win32
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Debug|x86.Deploy.0 = Debug|Win32
- {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|ARM.ActiveCfg = Release|ARM
- {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|ARM.Build.0 = Release|ARM
- {8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|ARM.Deploy.0 = Release|ARM
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x64.ActiveCfg = Release|x64
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x64.Build.0 = Release|x64
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x64.Deploy.0 = Release|x64
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x86.ActiveCfg = Release|Win32
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x86.Build.0 = Release|Win32
{8B88FFAE-4DBC-49A2-AFA5-D2477D4AD189}.Release|x86.Deploy.0 = Release|Win32
- {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM.ActiveCfg = Debug|ARM
- {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|ARM.Build.0 = Debug|ARM
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x64.ActiveCfg = Debug|x64
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x64.Build.0 = Debug|x64
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x86.ActiveCfg = Debug|Win32
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Debug|x86.Build.0 = Debug|Win32
- {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|ARM.ActiveCfg = Release|ARM
- {A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|ARM.Build.0 = Release|ARM
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x64.ActiveCfg = Release|x64
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x64.Build.0 = Release|x64
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x86.ActiveCfg = Release|Win32
{A990658C-CE31-4BCC-976F-0FC6B1AF693D}.Release|x86.Build.0 = Release|Win32
- {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM.ActiveCfg = Debug|ARM
- {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|ARM.Build.0 = Debug|ARM
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x64.ActiveCfg = Debug|x64
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x64.Build.0 = Debug|x64
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x86.ActiveCfg = Debug|Win32
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Debug|x86.Build.0 = Debug|Win32
- {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|ARM.ActiveCfg = Release|ARM
- {A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|ARM.Build.0 = Release|ARM
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x64.ActiveCfg = Release|x64
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x64.Build.0 = Release|x64
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x86.ActiveCfg = Release|Win32
{A9D95A91-4DB7-4F72-BEB6-FE8A5C89BFBD}.Release|x86.Build.0 = Release|Win32
- {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|ARM.ActiveCfg = Debug|ARM
- {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|ARM.Build.0 = Debug|ARM
{F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x64.ActiveCfg = Debug|x64
{F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x64.Build.0 = Debug|x64
{F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x86.ActiveCfg = Debug|Win32
{F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Debug|x86.Build.0 = Debug|Win32
- {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|ARM.ActiveCfg = Release|ARM
- {F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|ARM.Build.0 = Release|ARM
{F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x64.ActiveCfg = Release|x64
{F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x64.Build.0 = Release|x64
{F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x86.ActiveCfg = Release|Win32
{F7D32BD0-2749-483E-9A0D-1635EF7E3136}.Release|x86.Build.0 = Release|Win32
- {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|ARM.ActiveCfg = Debug|ARM
- {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|ARM.Build.0 = Debug|ARM
{A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x64.ActiveCfg = Debug|x64
{A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x64.Build.0 = Debug|x64
{A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x86.ActiveCfg = Debug|Win32
{A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Debug|x86.Build.0 = Debug|Win32
- {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|ARM.ActiveCfg = Release|ARM
- {A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|ARM.Build.0 = Release|ARM
{A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x64.ActiveCfg = Release|x64
{A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x64.Build.0 = Release|x64
{A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x86.ActiveCfg = Release|Win32
{A62D504A-16B8-41D2-9F19-E2E86019E5E4}.Release|x86.Build.0 = Release|Win32
- {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM.ActiveCfg = Debug|ARM
- {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM.Build.0 = Debug|ARM
{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x64.ActiveCfg = Debug|x64
{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x64.Build.0 = Debug|x64
{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x86.ActiveCfg = Debug|Win32
{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|x86.Build.0 = Debug|Win32
- {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|ARM.ActiveCfg = Release|ARM
- {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|ARM.Build.0 = Release|ARM
{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x64.ActiveCfg = Release|x64
{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x64.Build.0 = Release|x64
{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Release|x86.ActiveCfg = Release|Win32
diff --git a/packages/playground/windows/playground-win32/Playground-Win32.cpp b/packages/playground/windows/playground-win32/Playground-Win32.cpp
index 1aa0a0b9b9f..e3d8f7c127e 100644
--- a/packages/playground/windows/playground-win32/Playground-Win32.cpp
+++ b/packages/playground/windows/playground-win32/Playground-Win32.cpp
@@ -1,6 +1,8 @@
#include "pch.h"
#include "resource.h"
+#include
+
#include
#include
#include
@@ -14,17 +16,20 @@
#include
-#include
-
+#include
+#include
#include
-#include
-#include
#pragma pop_macro("GetCurrentTime")
-namespace WUX = winrt::Windows::UI::Xaml;
-namespace WUXC = WUX::Controls;
-namespace WUXH = WUX::Hosting;
+#ifndef USE_WINUI3
+namespace xaml = winrt::Windows::UI::Xaml;
+#else
+namespace xaml = winrt::Microsoft::UI::Xaml;
+#endif
+
+namespace controls = xaml::Controls;
+namespace hosting = xaml::Hosting;
int RunPlayground(int showCmd, bool useWebDebugger);
@@ -33,7 +38,7 @@ struct WindowData {
static constexpr uint16_t defaultDebuggerPort = 9229;
std::wstring m_bundleFile;
- WUXH::DesktopWindowXamlSource m_desktopWindowXamlSource;
+ hosting::DesktopWindowXamlSource m_desktopWindowXamlSource;
winrt::Microsoft::ReactNative::ReactRootView m_reactRootView;
winrt::Microsoft::ReactNative::ReactNativeHost m_host;
@@ -46,7 +51,7 @@ struct WindowData {
bool m_breakOnNextLine{false};
uint16_t m_debuggerPort{defaultDebuggerPort};
- WindowData(const WUXH::DesktopWindowXamlSource &desktopWindowXamlSource)
+ WindowData(const hosting::DesktopWindowXamlSource &desktopWindowXamlSource)
: m_desktopWindowXamlSource(desktopWindowXamlSource) {}
static WindowData *GetFromWindow(HWND hwnd) {
@@ -92,7 +97,7 @@ struct WindowData {
host.InstanceSettings().DebuggerPort(m_debuggerPort);
host.InstanceSettings().UseDeveloperSupport(true);
- auto rootElement = m_desktopWindowXamlSource.Content().as();
+ auto rootElement = m_desktopWindowXamlSource.Content().as();
winrt::Microsoft::ReactNative::XamlUIService::SetXamlRoot(
host.InstanceSettings().Properties(), rootElement.XamlRoot());
@@ -336,11 +341,11 @@ int RunPlayground(int showCmd, bool useWebDebugger) {
winrt::init_apartment(winrt::apartment_type::single_threaded);
- WUXH::DesktopWindowXamlSource desktopXamlSource;
+ hosting::DesktopWindowXamlSource desktopXamlSource;
auto windowData = std::make_unique(desktopXamlSource);
windowData->m_useWebDebugger = useWebDebugger;
- auto xamlContent = WUXC::Grid();
+ auto xamlContent = controls::Grid();
desktopXamlSource.Content(xamlContent);
HWND hwnd = CreateWindow(
diff --git a/packages/playground/windows/playground-win32/Playground-Win32.h b/packages/playground/windows/playground-win32/Playground-Win32.h
new file mode 100644
index 00000000000..e37271e3928
--- /dev/null
+++ b/packages/playground/windows/playground-win32/Playground-Win32.h
@@ -0,0 +1,3 @@
+#pragma once
+
+int __stdcall WinMain(HINSTANCE instance, HINSTANCE, PSTR, int showCmd);
diff --git a/packages/playground/windows/playground-win32/Playground-win32.vcxproj b/packages/playground/windows/playground-win32/Playground-win32.vcxproj
index e2b7040f426..afcac25a0ee 100644
--- a/packages/playground/windows/playground-win32/Playground-win32.vcxproj
+++ b/packages/playground/windows/playground-win32/Playground-win32.vcxproj
@@ -10,6 +10,18 @@
10.0.18362.0
10.0.18362.0
false
+ false
+
+
+ Playground-win32
+ en-US
+ 16.0
+ false
+ false
+ Windows Store
+ 10.0
+ 10.0
+ 10.0.17134.0
@@ -63,6 +75,7 @@
+
False
867D41FE5091AED426000143497EA4DFC29A8097
@@ -97,6 +110,7 @@
+
@@ -117,11 +131,11 @@
-
+
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\AppxPackage\Microsoft.AppXPackage.Targets
resources.pri
-
+
@@ -134,6 +148,7 @@
+
diff --git a/packages/playground/windows/playground-win32/pch.h b/packages/playground/windows/playground-win32/pch.h
index cdf4a1731bc..69d880ad9af 100644
--- a/packages/playground/windows/playground-win32/pch.h
+++ b/packages/playground/windows/playground-win32/pch.h
@@ -11,9 +11,7 @@
#include
+#include
#include
#include
-
-#include
-
#pragma pop_macro("GetCurrentTime")
diff --git a/packages/playground/windows/playground/packages.config b/packages/playground/windows/playground/packages.config
index a7fde84c020..f38160bf22c 100644
--- a/packages/playground/windows/playground/packages.config
+++ b/packages/playground/windows/playground/packages.config
@@ -2,5 +2,5 @@
-
+
diff --git a/vnext/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems b/vnext/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems
index b4cc94dd121..213aba27c6e 100644
--- a/vnext/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems
+++ b/vnext/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems
@@ -47,6 +47,8 @@
+
+
diff --git a/vnext/Microsoft.ReactNative.Cxx/UI.Text.h b/vnext/Microsoft.ReactNative.Cxx/UI.Text.h
index d0dbcc19f7a..4b375e44ffd 100644
--- a/vnext/Microsoft.ReactNative.Cxx/UI.Text.h
+++ b/vnext/Microsoft.ReactNative.Cxx/UI.Text.h
@@ -8,6 +8,9 @@
#ifdef USE_WINUI3
#include
namespace text = winrt::Microsoft::UI::Text;
+namespace winrt::Microsoft::UI::Text {
+using FontStyle = winrt::Windows::UI::Text::FontStyle;
+}
#else
namespace text = winrt::Windows::UI::Text;
#endif // USE_WINUI3
diff --git a/vnext/Microsoft.ReactNative.Cxx/UI.Xaml.Hosting.DesktopWindowXamlSource.h b/vnext/Microsoft.ReactNative.Cxx/UI.Xaml.Hosting.DesktopWindowXamlSource.h
new file mode 100644
index 00000000000..5f7c46064ee
--- /dev/null
+++ b/vnext/Microsoft.ReactNative.Cxx/UI.Xaml.Hosting.DesktopWindowXamlSource.h
@@ -0,0 +1,11 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+#pragma once
+
+#ifdef USE_WINUI3
+#include
+using IDesktopWindowXamlSourceNative2 = IDesktopWindowXamlSourceNative;
+#else
+#include
+#endif // USE_WINUI3
diff --git a/vnext/Microsoft.ReactNative.Cxx/UI.Xaml.Hosting.h b/vnext/Microsoft.ReactNative.Cxx/UI.Xaml.Hosting.h
new file mode 100644
index 00000000000..feebbc2d9aa
--- /dev/null
+++ b/vnext/Microsoft.ReactNative.Cxx/UI.Xaml.Hosting.h
@@ -0,0 +1,10 @@
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT License.
+
+#pragma once
+
+#ifdef USE_WINUI3
+#include
+#else
+#include
+#endif // USE_WINUI3
diff --git a/vnext/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp b/vnext/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp
index 397a569351c..fceeed86f61 100644
--- a/vnext/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp
+++ b/vnext/Microsoft.ReactNative/Modules/DeviceInfoModule.cpp
@@ -4,7 +4,9 @@
#include "pch.h"
#include "DeviceInfoModule.h"
#include
+#include
#include
+#include
#include
#include
@@ -30,14 +32,17 @@ void DeviceInfoHolder::InitDeviceInfoHolder(
propertyBag.Set(DeviceInfoHolderPropertyId(), std::move(deviceInfoHolder));
auto const &displayInfo = winrt::Windows::Graphics::Display::DisplayInformation::GetForCurrentView();
- auto const &window = xaml::Window::Current().CoreWindow();
-
- deviceInfoHolder->m_sizeChangedRevoker =
- window.SizeChanged(winrt::auto_revoke, [weakHolder = std::weak_ptr(deviceInfoHolder)](auto &&, auto &&) {
- if (auto strongHolder = weakHolder.lock()) {
- strongHolder->updateDeviceInfo();
- }
- });
+ /// TODO: WinUI 3 islands support
+ if (xaml::Window::Current()) {
+ auto const &window = xaml::Window::Current().CoreWindow();
+
+ deviceInfoHolder->m_sizeChangedRevoker =
+ window.SizeChanged(winrt::auto_revoke, [weakHolder = std::weak_ptr(deviceInfoHolder)](auto &&, auto &&) {
+ if (auto strongHolder = weakHolder.lock()) {
+ strongHolder->updateDeviceInfo();
+ }
+ });
+ }
deviceInfoHolder->m_dpiChangedRevoker = displayInfo.DpiChanged(
winrt::auto_revoke, [weakHolder = std::weak_ptr(deviceInfoHolder)](const auto &, const auto &) {
@@ -86,14 +91,28 @@ void DeviceInfoHolder::SetCallback(
}
void DeviceInfoHolder::updateDeviceInfo() noexcept {
- auto const displayInfo = winrt::Windows::Graphics::Display::DisplayInformation::GetForCurrentView();
- auto const window = xaml::Window::Current().CoreWindow();
+ if (xaml::Window::Current()) {
+ auto const window = xaml::Window::Current().CoreWindow();
+
+ m_windowWidth = window.Bounds().Width;
+ m_windowHeight = window.Bounds().Height;
+ } else {
+ /// TODO: WinUI 3 Island - mock for now
+ m_windowWidth = 600;
+ m_windowHeight = 800;
+
+ /*
+ auto interop = m_desktopWindowXamlSource.as();
+
+ // Get the new child window's hwnd
+ HWND hWndXamlIsland = nullptr;
+ winrt::check_hresult(interop->get_WindowHandle(&hWndXamlIsland));
+ */
+ }
winrt::Windows::UI::ViewManagement::UISettings uiSettings;
-
- m_windowWidth = window.Bounds().Width;
- m_windowHeight = window.Bounds().Height;
- m_scale = static_cast(displayInfo.ResolutionScale()) / 100;
m_textScaleFactor = uiSettings.TextScaleFactor();
+ auto const displayInfo = winrt::Windows::Graphics::Display::DisplayInformation::GetForCurrentView();
+ m_scale = static_cast(displayInfo.ResolutionScale()) / 100;
m_dpi = displayInfo.LogicalDpi();
m_screenWidth = displayInfo.ScreenWidthInRawPixels();
m_screenHeight = displayInfo.ScreenHeightInRawPixels();
diff --git a/vnext/Microsoft.ReactNative/Modules/I18nManagerModule.cpp b/vnext/Microsoft.ReactNative/Modules/I18nManagerModule.cpp
index df073057552..c3273869b08 100644
--- a/vnext/Microsoft.ReactNative/Modules/I18nManagerModule.cpp
+++ b/vnext/Microsoft.ReactNative/Modules/I18nManagerModule.cpp
@@ -5,9 +5,11 @@
#include "I18nManagerModule.h"
#include
#include
+#include
#include
#include
#include "Unicode.h"
+#include
namespace Microsoft::ReactNative {
@@ -27,7 +29,8 @@ static const React::ReactPropertyId &ForceRTLPropertyId() noexcept {
}
void I18nManager::InitI18nInfo(const winrt::Microsoft::ReactNative::ReactPropertyBag &propertyBag) noexcept {
- if (xaml::TryGetCurrentApplication()) {
+ if (xaml::TryGetCurrentApplication() && !react::uwp::IsXamlIsland()) {
+ // TODO: Figure out packaged win32 app story for WinUI 3
auto layoutDirection = winrt::Windows::ApplicationModel::Resources::Core::ResourceContext()
.GetForCurrentView()
.QualifierValues()
diff --git a/vnext/Microsoft.ReactNative/Utils/PropertyUtils.h b/vnext/Microsoft.ReactNative/Utils/PropertyUtils.h
index ac495d3b81c..6c3e1f0e19b 100644
--- a/vnext/Microsoft.ReactNative/Utils/PropertyUtils.h
+++ b/vnext/Microsoft.ReactNative/Utils/PropertyUtils.h
@@ -310,12 +310,9 @@ bool TryUpdateFontProperties(const T &element, const std::string &propertyName,
} else if (propertyValue.isNull()) {
element.ClearValue(T::FontWeightProperty());
}
-
} else if (propertyName == "fontStyle") {
if (propertyValue.isString()) {
- element.FontStyle(
- (propertyValue.getString() == "italic") ? winrt::Windows::UI::Text::FontStyle::Italic
- : winrt::Windows::UI::Text::FontStyle::Normal);
+ element.FontStyle((propertyValue.getString() == "italic") ? text::FontStyle::Italic : text::FontStyle::Normal);
} else if (propertyValue.isNull()) {
element.ClearValue(T::FontStyleProperty());
}
diff --git a/vnext/Microsoft.ReactNative/Views/TouchEventHandler.cpp b/vnext/Microsoft.ReactNative/Views/TouchEventHandler.cpp
index 8c5abe36a49..39df8712920 100644
--- a/vnext/Microsoft.ReactNative/Views/TouchEventHandler.cpp
+++ b/vnext/Microsoft.ReactNative/Views/TouchEventHandler.cpp
@@ -18,7 +18,9 @@
#include
#include
#include
-
+#ifdef USE_WINUI3
+#include
+#endif
namespace react {
namespace uwp {
@@ -202,12 +204,18 @@ TouchEventHandler::ReactPointer TouchEventHandler::CreateReactPointer(
pointer.target = tag;
pointer.identifier = m_touchId++;
pointer.pointerId = point.PointerId();
+#ifndef USE_WINUI3
pointer.deviceType = point.PointerDevice().PointerDeviceType();
+#else
+ pointer.deviceType = point.PointerDeviceType();
+#endif
pointer.isLeftButton = props.IsLeftButtonPressed();
pointer.isRightButton = props.IsRightButtonPressed();
pointer.isMiddleButton = props.IsMiddleButtonPressed();
pointer.isHorizontalScrollWheel = props.IsHorizontalMouseWheel();
+#ifndef USE_WINUI3
pointer.isEraser = props.IsEraser();
+#endif
UpdateReactPointer(pointer, args, sourceElement);
@@ -226,7 +234,9 @@ void TouchEventHandler::UpdateReactPointer(
pointer.positionRoot = rootPoint.Position();
pointer.positionView = point.Position();
pointer.timestamp = point.Timestamp() / 1000; // us -> ms
+#ifndef USE_WINUI3
pointer.pressure = props.Pressure();
+#endif
pointer.isBarrelButton = props.IsBarrelButtonPressed();
pointer.shiftKey = 0 != (keyModifiers & static_cast(winrt::Windows::System::VirtualKeyModifiers::Shift));
pointer.ctrlKey = 0 != (keyModifiers & static_cast(winrt::Windows::System::VirtualKeyModifiers::Control));
diff --git a/vnext/Microsoft.ReactNative/packages.config b/vnext/Microsoft.ReactNative/packages.config
index 2864726f934..d64357df546 100644
--- a/vnext/Microsoft.ReactNative/packages.config
+++ b/vnext/Microsoft.ReactNative/packages.config
@@ -1,4 +1,4 @@
-
+
@@ -6,5 +6,5 @@
-
+
\ No newline at end of file
diff --git a/vnext/NuGet.Config b/vnext/NuGet.Config
index a6d079d69b4..8a7dab4d15f 100644
--- a/vnext/NuGet.Config
+++ b/vnext/NuGet.Config
@@ -5,6 +5,7 @@
+
diff --git a/vnext/PropertySheets/WinUI.props b/vnext/PropertySheets/WinUI.props
index 7c099ca9dda..f57ae1f5c47 100644
--- a/vnext/PropertySheets/WinUI.props
+++ b/vnext/PropertySheets/WinUI.props
@@ -6,7 +6,7 @@
- 3.0.0-preview2.200713.0
+ 3.0.0-development.200706.1-CI
Microsoft.WinUI
@@ -31,10 +31,14 @@
USE_WINUI3;%(PreprocessorDefinitions)
+
+ ENABLE_WINRT_EXPERIMENTAL_TYPES=1;%(PreprocessorDefinitions)
USE_WINUI3;%(PreprocessorDefinitions)
+
+ ENABLE_WINRT_EXPERIMENTAL_TYPES=1;DISABLE_MIDL_VERSION_CHECKS=1;%(PreprocessorDefinitions)
diff --git a/vnext/Shared/Modules/UIManagerModule.cpp b/vnext/Shared/Modules/UIManagerModule.cpp
index 48eda8d068a..2c041985795 100644
--- a/vnext/Shared/Modules/UIManagerModule.cpp
+++ b/vnext/Shared/Modules/UIManagerModule.cpp
@@ -9,6 +9,7 @@ using namespace std;
#include
#include
+#include
#include "ShadowNode.h"
#include "ShadowNodeRegistry.h"
#include "UIManagerModule.h"
@@ -248,20 +249,24 @@ void UIManager::createView(
std::string &&className,
int64_t /*rootViewTag*/,
folly::dynamic && /*ReadableMap*/ props) {
- m_nativeUIManager->ensureInBatch();
- auto viewManager = GetViewManager(className);
- auto node = viewManager->createShadow();
- node->m_className = std::move(className);
- node->m_tag = tag;
- node->m_viewManager = viewManager;
-
- node->createView();
- m_nativeUIManager->CreateView(*node, props);
-
- m_nodeRegistry.addNode(shadow_ptr(node), tag);
-
- if (!props.isNull())
- node->updateProperties(std::move(props));
+ try {
+ m_nativeUIManager->ensureInBatch();
+ auto viewManager = GetViewManager(className);
+ auto node = viewManager->createShadow();
+ node->m_className = std::move(className);
+ node->m_tag = tag;
+ node->m_viewManager = viewManager;
+
+ node->createView();
+ m_nativeUIManager->CreateView(*node, props);
+
+ m_nodeRegistry.addNode(shadow_ptr(node), tag);
+
+ if (!props.isNull())
+ node->updateProperties(std::move(props));
+ } catch (winrt::hresult_error &hr) {
+ throw Microsoft::Common::Unicode::Utf16ToUtf8(hr.message());
+ }
}
void UIManager::setChildren(int64_t viewTag, folly::dynamic &&childrenTags) {