React Native January 2019 (v0.58.x) released

v0.58.0 on GitHub (npm)


Changelog


Welcome to the January 2019 release of React Native. There are a number of significant changes in this version, and we'd like to especially call your attention to:

  • Modernizing and stengthening flow types for core components
  • Break changes to ScrollView, CameraRollView, and SwipeableRow that make it no longer bound to the component instance in certain methods
  • Support for mutual TLS in WebKit
  • Asset serving from directories besides /assets
  • Numerous crash fixes and resolutions for unexpected behavior

Thanks to those who gave feedback on our release candidates. If you're interested in helping evaluate our next release, check you our tracking issue here.

Added

  • Add support for publicPath to enable serving static assets from different locations (0b31496 by @gdborton)

Android specific

  • Bundler server host can now be set using Android System Properties, making for easier debugging across multiple apps or app installs adb shell setprop metro.host (e02a154 by @stepanhruda)
  • Native Modules can now reject a promise with an additional WritableMap arg for extra properties (userInfo). See the interface defined in Promise.java for available methods. This is accessible in JavaScript as Error.userInfo. This is to match iOS's existing Error.userInfo behaviour. See PR for examples. (#20940 by @Salakar)
  • Native Modules now expose a nativeStackAndroid property to promises rejected with an Exception/Throwable - making native error stacks available inside Javascript: Error.nativeStackAndroid. This is to match iOS's existing Error.nativeStackIOS support. See PR for examples. (#20940 by @Salakar)

iOS specific

Changed

Breaking Changes

  • Public methods of components converted to ES6 classes are no longer bound to their component instance. For ScrollView, the affected methods are setNativeProps, getScrollResponder, getScrollableNode, getInnerViewNode, scrollTo, scrollToEnd, scrollWithoutAnimationTo, and flashScrollIndicators. For CameraRollView, the affected methods are: rendererChanged. For SwipeableRow, the affected methods are: close. Therefore, it is no longer safe to pass these method by reference as callbacks to functions. Auto-binding methods to component instances was a behaviour of createReactClass that we decided to not preserve when switching over to ES6 classes.

Android specific

iOS specific

  • Suppress yellow box about missing export for native modules (5431607 by @fkgozali)

Removed

Fixed

Android specific

  • Fix crash when removing root nodes (b649fa9 by @ayc1)
  • Fix various ReactInstanceManager deadlocks and race conditions (df7e8c6, 309f85a, and be282b5 by @ayc1)
  • Fix IllegalArgumentException when dismissing ReactModalHostView and DialogManager (e57ad4e and 38e01a2by @mdvacca)
  • Fix incorrect merged asset path with flavor for Android Gradle Plugin 3.2 (e90319e by @yatatsu)
  • Fix HTTP connection ontimeout callback (a508134)
  • Fix websocket properly closing when remote server initiates close (2e465bc by @syaau)
  • Fix compatibility issue for Android 16 device (5939d07, f22473e, and d4d457b by @gengjiawen)
  • Fix issue where Image.resizeMode isn't respected while source is loading, resulting in unexpected padding (673ef39 by @dulmandakh)
  • Fix Android 28's inverted ScrollView so that momentum is in the proper direction (b971c5b by @mandrigin)

iOS specific

  • Fix case where content of inline views didn't get relaid out (798517a by @rigdern)
  • Fix issue with ImagePickerIOS's inconsistent image when using the front-facing camera (4aeea4d)
  • Fix race condition and crash around shutdown of the JSC for iOS 11 and earlier (bf2500e by @mhorowitz)
  • Fix crash in NetInfo's _firstTimeReachability (eebc8e2 by @mmmulani)
  • Fix case where inline view is visible even though it should have been truncated (70826db by @rigdern)
  • Fix crash with ScrollView related to content offsets (f6566c7 by @shergin)