React Native Windows: react-native-windows_v0.64.0-preview.1 Release

Release date:
August 26, 2021
Previous version:
react-native-windows_v0.63.37 (released August 26, 2021)
Magnitude:
7,185 Diff Delta
Contributors:
26 total committers
Data confidence:
Commits:

170 Commits in this Release

Ordered by the degree to which they evolved the repo in this version.

Authored August 17, 2020
Authored March 26, 2021
Authored November 10, 2020
Authored December 21, 2020
Authored November 16, 2020
Authored June 4, 2021
Authored August 10, 2020
Authored November 18, 2020
Authored January 18, 2021
Authored December 8, 2020
Authored November 2, 2020
Authored December 11, 2020
Authored September 7, 2020

Top Contributors in react-native-windows_v0.64.0-preview.1

JunielKatarn
acoates-ms
rnbot
NickGerleman
asklar
PPatBoyd
dannyvv
tudorms
jonthysell
samuelfreiberg

Directory Browser for react-native-windows_v0.64.0-preview.1

We haven't yet finished calculating and confirming the files and directories changed in this release. Please check back soon.

Release Notes Published

We're excited to release our first preview build of react-native-windows 0.64! This build targets react-native 0.64.0-rc.1 and above. 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.

What's new

  • Easy opt-in to Hermes: It's easier than ever to try Hermes! We expect projects trying Hermes to see performance increases in most cases. While there are teams using Hermes in production, its support is still experimental, and we do not yet support Hermes debugger or Hermes in C# applications. We would still love to know if you try Hermes and run into any issues.

  • Improved API parity: More component properties supported by other platforms now work on Windows, such as Text backgroundColor, border, and textTransform. An initial version of AccessibilityInfo is now available. Platform.version is now implemented.

  • React 17 and faster startup by default: React Native 0.64 brings the latest version of React, and changes the default metro configuration to enable "inline requires", allowing for faster startup by default.

  • Access to the JSI runtime: C++ applications can now directly interface with the JSI runtime using the winrt::Microsoft::ReactNative::ExecuteJSI API. This will work anywhere a ReactContext is available and web-debugging is not in use.

  • Community module templates: A new workflow makes it easier to create community modules for Windows by using a built-in template.

  • Instance lifecycle events: Native code can now respond to the react native instance being created, loaded, or destroyed.

  • A brand new WebSocket stack: The existing WebSocket stack has been replaced with an all new, more-correct, production-hardened implementation.

  • Bug-fixes and improvements: The above just scratches the surface on the work that has been happening! We've been continually making bug fixes and improvements across the project.

Breaking Changes

  • Native module thread affinity: A bug was discovered which led to custom native modules often being invoked on the UI thread. This was unintentional and has been changed. We recognize that this may break existing modules in cases where affinity was relied upon without explicitly queuing to the UI thread. Please let us know if you are effected by this change, or are using a community module which is affected.

  • acceptsKeyboardFocus is removed: In 0.63 we started warning on usage of acceptsKeyboardFocus that the property would be replaced by the built-in and type-safe focusable. In 0.64 we removed support from the property, redboxing if it is passed to a view and ignoring the property on touchables.

  • AppTheme API reconciliation with Appearance: React Native 0.62 introduced Appearance and useColorScheme hooks to respond to changes in light/dark mode. This functionality supersedes several APIs in the react-native-windows specific AppTheme library. AppTheme functions that warned about removal in 0.63 are removed in 0.64. See more here on how to write components that adapt to theme.

  • EmitJSEvent parameter passing: Calls to EmitJSEvent on the ReactContext previously wrapped the event object in a JavaScript array instead of passing it 1:1. This was fixed in 0.64, but any existing consumption of events fired by EmitJSEvent must be updated.

  • ref.focus() focus visuals: Calling focus() on a component ref will now show native focus visuals by default. If you don't want focus visuals around your component, you can set the property enableFocusRing={false}.

  • Synchronous native module returns: Native module methods marked as synchronous would previously have their results wrapped in an array. This is no longer the case.

Upgrading

The most surefire way to upgrade from 0.62 or 0.63 is to generate a new project targeting 0.64 using react-native-windows-init and copy over your project content. In the future we would like to provide diffs to help make this easier in the style of react-native-upgrade-helper.