We're excited to release our first preview build of react-native-windows
0.66! There have been many changes to both react-native-windows
and react-native
itself and we would love your feedback on anything that doesn't work as expected.
How to upgrade
You can view the differences between different versions of C++ applications using a special version of React Native Upgrade Helper.
Upgrade helper does not yet support C# projects or projects using experimental features. It is recommended to generate a new project using react-native-windows-init
for projects not supported by Upgrade Helper.
What's New
-
Fast Hermes in debug builds: We previously used debug builds of Hermes when you built your application in a debug configuration. We've heard feedback that this impacted usability, and now use an optimized JS engine regardless of whether your application is running in release or debug.
-
Lower power consumption when using timers: Long running timers, such as those set by
setInterval()
, previously required RNW to do work every frame. We've fixed this, to let your application sleep until wake-up time. -
Better error UI: Your bundle failing to load previously showed a blank screen, requiring debugging your application to get actionable feedback. We now show a native redbox UI with the JavaScript exception.
-
Windows 10 SDK version 10.0.19041.0: We now use the latest Windows SDK, included with Visual Studio. Note that you may still need to install previous SDKs to use community modules that have not yet updated.
-
Hermes sampling profiler: In addition to heap space, you can now profile Hermes CPU usage via a sampling profiler.
-
Improved responsiveness with expensive callbacks: We now coalesce events for layout and pointer movement to ensure your application stays responsive if JavaScript callbacks are expensive.
-
More accessibility roles: We've added support for the
togglebutton
andheader
accessibility roles. -
Autolinking support for more community modules: React Native Windows has long-supported autolinking, but not all community modules for Windows were built to be compatible. Autolinking now has a heuristic to link any NPM dependencies that are likely Windows community modules.
-
Native console redirection: You can now redirect the output of the JavaScript
console
object using theReactInstanceSettings::NativeLogger
property. -
JSValue XAML conversion helpers: We've added additional helpers to
JSValueXaml.h
to make it easier to write ViewManagers that serialize XAML types. -
Greater BackHandler control: You can now control whether to handle back events via the React Native BackHandler, or in native code, using
QuirkSettings::SetBackHandlerKind
. -
Bug-fixes and improvements: We've made many more fixes across the platform. Expect less crashes, more correct behavior, and more quality of life improvements for developers.
Breaking Changes
-
Removal of Picker, DatePicker, PickerWindows: The various versions of Picker were previously deprecated as part of lean-core efforts. These components are removed in 0.66. The
@react-native-community/datetimepicker
and@react-native-picker/picker
community modules can be used for the same functionality. -
UseExperimentalNuget configuration: Projects using the
Microsoft.ReactNative
NuGet package should now declareUseExperimentalNuget
in theirExperimentalFeatures.props
file instead of theirvcxproj
orcsproj
file.