React Native v0.10.0-rc and v0.9.0 released

v0.10.0-rc on GitHub (npm, CocoaPods) Release note:

0.10.0-rc has been published to npm and CocoaPods.

Breaking Changes

  • NSNumber parameters must be marked nonnull: Native bridge methods that take NSNumber values must annotate them using the Objective-C nonnull keyword
  • AnimationExperimental has been removed: Use the JS Animated API or react-motion instead

Known Issues

  • flexWrap: 'wrap' and flexDirection: 'row' can consume 100% CPU: you may see very high CPU usage and a blank screen with the combination of these styles (#1378)
  • Packager does not support symlinks: Symlinks under node_modules, for example, are ignored (#637)
  • ScrollView sometimes errs with "Cannot find view with tag #XXX": #1941

New Features

JavaScript

  • Modal: A new Modal component that renders its children above the UIViewController that contains your React view. See the UIExplorer for an example.
  • ImageEditingManager: A new module for manipulating images saved to disk. You can crop, translate, and scale images. See the UIExplorer for an example.
  • rebound has been removed: The rebound module, which was internally used by Animated, has been removed to save bytes
  • ES2016 async/await: The async and await keywords have been enabled by default in the packager
  • Configurable JS context name: When using the regular JS runtime (not the Chrome debugger or web view), you can set its name with NativeModules.ContextExecutor.setContextName (iOS 8+ only). This name will show up in Safari's debug menu.
  • process.env.NODE_ENV: This value is defined to be "production" or "development" based on your current environment. Now you can use npm packages that rely on NODE_ENV!

iOS

  • Configurable bundleURL: Setting the bundleURL property on the bridge and reloading the bridge will use the new bundle URL
  • Development status bar: In development mode, a status bar at the top tells you where the JS bundle is being loaded from:
  • RCTBridgeDelegate: The bridge has a delegate for configuring the bundle URL
  • Remove rendered RCTText contents from clipped views: Clipped ListView rows, for example, use less memory when they are off-screen
  • RCTBridge startup is parallelized: Native modules are initialized while the bundle source is loaded from your packager or the disk
  • Faster conversion of JS strings to NSURL objects: Replaced some regex checks in +[RCTConvert NSURL:] with a simpler substring check

Packager

  • Upgrade Babel and regenerator, and fix spurious log messages about "es6.parameters"

Other

  • Flow 0.14.0: Support for Flow 0.14.0 has been added
  • jest 0.5.0: Jest 0.5.0 with io.js 2+ support has been upgraded to the final release

Bug Fixes

  • Support bridged methods that have unnamed parameters, like - (void)method:(int)a :(int)b (b812b0e)
  • Fixed ResponderEventPlugin (e0ea046)
  • Guard against popping past the first route in a Navigator (809a2dc)
  • Fix issue with border width precedence (f2b3057)
  • Maintain the height of inactive Navigator scenes so that the scroll state is unmodified (41dd6fe)
  • Fixed null argument errors for timers and layout animations (95d1fd1)
  • Fixed retain cycle that caused RCTModuleMethods to leak (6a4b83c)
  • Sticky headers in ListViews now receive touches. This was a long-standing bug and a fellow community member stepped up and contributed a fix. Thank you @MattFoley! (#2224)
  • Delay sending touches to JS until dependent (native) gesture recognizers fail (2d66e10)
  • Fixed defaultSource for Image components (#2269)
  • Fixed waring about "invalid context 0x0" when rendering an image of with dimensions of zero area (#2278)
  • Fix crash when using alert() polyfill due to null callback (4d81724)

v0.9.0 on GitHub (npm, CocoaPods)