Releases: facebook/react-native
v0.15.0-rc
High level changes
v0.14.1
0.14.0
react-native 0.14.0 is now available on npm.
See the docs on how to upgrade.
Highlights
- The new asset system is fully available to use and integrated into the build systems of both Android and iOS.
- You can use
react-native upgrade
to get the latest project templates for the latest features.
Changes since 0.13.0
See the 0.14.0-rc changelog: https://github.com/facebook/react-native/releases/tag/v0.14.0-rc
v0.14.0-rc
Breaking Changes
- D2533877:
react-native bundle
API changes:- API is now
entry-file <path>
based instead of url based. - Need to specify which platform you're bundling for
--platform <ios|android>
. - Option
--out
has been renamed for--bundle-output
. - Source maps are no longer automatically generated. Need to specify
--sourcemap-output <path>
option to indicate where to put the source maps.
- API is now
- D2538070:
- The
--minify
option is now inferred based on the--dev
value. To get a production minified bundle use--dev false
as--dev
defaults to true.
- The
- 28f6eb:
removeClippedSubviews
now defaults totrue
onListView
. This is generally the behavior people expect fromListView
so we're making it default totrue
. If you see any issues please report them. - 82fad3: Remove redundant script to start packager, it can still be started using
react-native start
ornpm start
v0.13.0
react-native 0.13.0 is now available on npm.
Note to CocoaPods users:
We are no longer publishing React Native to CocoaPods but are maintaining the Podspec file. What this means is that you still can use CocoaPods to add React Native to your project but will have to make a small change to your Podfile.
Change this:
pod 'React', '~> 0.12'
to this:
pod 'React', :path => 'node_modules/react-native'
# or wherever your copy of react-native is
One reason for this change is that in practice many projects would end up getting two copies of React Native: one from CocoaPods under the Pods
directory and one from npm under node_modules
. The packager would find two copies of the same JavaScript files and report there was a conflict. So, having just one canonical copy of React Native (under node_modules
, with the copy under Pods
being a symlink that the packager ignores) resolves this issue.
Centralizing the distribution of React Native through npm also makes it easier for us to release updates since there's only one package repository to work with.
Changes since 0.13.0-rc
- Merged #3347 to fix a bug with Web Sockets on Android
Changes since 0.12
See the 0.13.0-rc changelog: https://github.com/facebook/react-native/releases/tag/v0.13.0-rc
v0.13.0-rc
0.13.0-rc has been published to npm, JCenter, and CocoaPods.
The 0.13 release includes preliminary support for installing react-native
with npm 3 and running the packager on Windows. Please understand they might not work as well as they do with npm 2 on Mac yet, since this is the first release that supports them.
A note about Windows as a dev environment: As RN iOS requires a Mac and most of the programmers at Facebook and the RN developers use Macs, support for OS X is a top priority. However, we would like to support developers using Linux and Windows too. We believe we'll get the best Windows support from people using Windows on a daily basis. So to begin with, Windows support for the development environment is an ongoing community responsibility. This can mean filing issues and submitting PRs, and we'll help review and merge them. We are looking forward to your contributions and appreciate your patience.
Breaking Changes
- setImmediate batching: React updates (e.g.
setState
) scheduled withsetImmediate
are now batched. Most apps will notice only a performance improvement, but it may reveal bugs in code that was relying on the precise timing semantics of React duringsetImmediate
processing. 4c74f01 - Node 4.0: This is not a new requirement but we have made it more visible: #2547 #3296
- ScrollView's
keyboardShouldPersistTaps
defaults to false: 166a96b - Warn when style props are not under
style
: make sure properties likewidth
orbackgroundColor
are specified in thestyle
prop. 2ea3b93 - Flow 0.17: Flow has been upgraded. 49a0ae7
- Removed RCTCache on iOS: 63a37be
- Remove
header_mappings_dir
from Podspec so that all header files are flattened when installing with CocoaPods. This improves compatibility with react-native-fbsdk, for example: #3248
Known Issues
- React Dev Tools do not work: facebook/react-devtools#229
- Packager does not support symlinks: Symlinks under node_modules, for example, are ignored (#637)
- 3D touch breaks the gesture system due to an iOS 9.0 bug: #3082
- WebSockets on Android can fatal when closing: #3347
- Other known issues
New Features
JavaScript
const
is enabled by default: #2955import
is enabled by default: #3175Number.EPSILON/MIN_SAFE_INTEGER/MAX_SAFE_INTEGER
are polyfilled: de717a8- Animate to hex and named colors: instead of
rgba
syntax you now can use hex or names like "black" in Animated output ranges. #3177 processColor
is faster: babdeb3- New
Switch
component that wraps iOS and Android's switch components: 36cbe74 - Preserve original globals before polyfilling them: If the JS environment supports a global property like
fetch
, it will still be polyfilled but the original implementation will be saved asoriginalFetch
. This lets you do things like assignglobal.fetch = originalFetch
if you want to use Chrome's built-infetch
when debugging in Chrome. #3293 - Export the different Navigator navigation styling for iOS and Android and a new
navigationStyles
prop: #3028
iOS
- Pause JS runloop: Pause the CADisplayLink when there are no JS tasks to process to conserve energy. e727fc8
- Use
bundleForClass
instead ofmainBundle
when looking up resources: 9076b71 - Disable RCTAssert completely in production builds: 6ca8f48
- Inline Images: Image components can be children of Text components. Note that all properties of the image except its source are ignored. 91e6c98
- Optimize loading local JS bundles from the filesystem: 7fe7a2a
Android
- Autoplay GIFs: Fixed #2997
- Enable background initialization of ReactApplicationContext: dcae4ba
- Remote images in ToolbarAndroid: 5ca5ec7
borderWidth
andborderColor
on Images: 2cc8acf- New
ViewPagerAndroid
component that provides paginated scrolling. Check out the example in the UIExplorer to see how it works and how to use it. 0a41965 - New WebSocket support on Android with an API similar to the iOS version: #2839
- Add a ProGuard config: a7b23df
Packager
- Reject module collisions: If you are using the Facebook-proprietary
@providesModule
pragma, the packager will now explicitly reject collisions: 9293e54 502d277
Other
- Refactored React Native attribute reconcilation: 6c5024e 8e3ce0f ac5b754
- Use platform-independent dir separator in Android build file: #2961
- CLI has
--verbose
flag to debug slow project initialization. You will need to update your global npm package forreact-native-cli
to get this feature. #3193 - Packager server is more modular and split into several middleware. This doesn't affect users of RN but should make it a little nicer for contributors. 35f9ac8 f37ad56 f980c33 22e88f2 0a835b7 42d7563
- Lots of documentation updates. A thank you to the contributors!
Bug Fixes
- End iOS Slider interaction when touches are cancelled: 8f13560
- Clear images only if they have been removed from the view hierarchy: previously images were removed even if they were moved within the view hierarchy. a4ef7ab
- Multiline JS
import
statements are now parsed: #1939 - JS WebSockets implement EventTarget: #2599
- Preserve Android React instance when handling exceptions: 3dcc234
- Set
scrollsToTop = NO
for RCTTextInput placeholders: #3129 - Cancel pending timeouts when Touchable components are unmounted: #1152
- Support npm packages that require package.json: #2949
- Better error message when loading non-existent image URIs on iOS: #3127
- Check if Android React instance is destroyed when adding profiling option to dev menu: 787895e
- Make sure ListView call
onEndReached
even when there are very few rows: b0bdd4e - Protect against Android SQLLiteFullExceptions for AsyncStorage: ea8d0b6
- Fix touches when the Android keyboard is visible: c805157
- Fix crash due to thread-unsafe race condition on iOS when reloading: cb8b656...
v0.12.0
List of 418 commits by 79 contributors: 0.11-stable...0.12-stable
v0.11.0
This release includes the initial version of React Native for Android. The official site and docs have been updated with information about the Android version.
Contributors: Moving forward, please include iOS and Android changes in PRs that affect both platforms.
0.11 also includes support for Node 4.0, which was recently released after the Node.js and io.js projects converged. We recommend using nvm to install the latest version of Node. Older versions of Node are not supported.
See the 0.11.0-rc notes for a more detailed change log: https://github.com/facebook/react-native/releases/tag/v0.11.0-rc.
v0.11.0-rc
0.11.0-rc has been published to npm and CocoaPods.
Breaking Changes
- Rename RCTReachability to RCTNetInfo: for consistency with Android. The device event that is triggered has also been renamed from
reachabilityDidChange
tonetworkDidChange
. - Internal functions on Animated marked as protected: if you use attach, detach, getAnimatedValue, addChild, removeChild, or getChildren on your Animated components, you will need to update the code to be compatible. This change is in preparation for future optimizations. 059e605
- RCTRootView's initializer changed: Call the new initializer method, which takes a new
initialProperties
argument. Usenil
if you have no initial properties to pass to the root React component.
Known Issues
- 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
- Numbers in bridged method names crash at launch: #2469
New Features
- Add support for transparent modal backgrounds: toggle this by using the new
transparent
prop of Modal. - Add support for HSL/HSLA colors
- Built-in support for handling Keyboard events: you can now add listeners to DeviceEventEmitter for keyboardWillShow, keyboardDidShow, keyboardWillHide, keyboardDidHide, keyboardWillChangeFrame and keyboardDidChangeFrame. (9aefd6b)
- Built-in support for handling status bar change events: you can now add listeners to DeviceEventEmitter for statusBarFrameDidChange and statusBarFrameWillChange events (eg: if you receive a phonecall, the status bar becomes taller - this allows you to respond accordingly).
- Touchable handlers now receive event objects:
onPressIn
etc - these event objects were already initialized so it was just a matter of threading them through.
JavaScript
- Use GLOBAL.process instead of overwriting: respect any existing
process
value hanging off of the global object, and only set theenv
property of it. a4e6419
iOS
- Pass props when creating a view with RCTViewManager: native module authors will understand that previously it was awkward to set initial properties on a view because props were not available in
init
and there was no guaranteed order that they would be set in. RCTViewManager classes can now implementviewWithProps:props
to better control this. - CameraRoll Image Orientation fix: use ALAssetOrientationUp for consistent, predictable orientation.
- Implemented lazy parsing of method signatures to improve TTI (Time
to Interact): a5e9f83 - Post to NSNotificationCenter when root views are added or removed: notifications are named
RCTUIManagerDidRegisterRootViewNotification
andRCTUIManagerDidRemoveRootViewNotification
- Modernized Objective C syntax: 88e0bbc
Packager
- Started adding support for System.import (in progress): this is the first step to add support for being able to split JS into multiple bundles. More details: cfcf604
- Transformer now shows progress bar: The transform step in currently the longest one in the bundling process. This adds a progress bar to track the transform progress. eb248e0
- More detail on fs log messages: ever wonder why there were two fs event steps in the packager log? f3a165d
Other
- RCTProfile API now compatible with systrace: 81fdf3e
Bug Fixes
- Fix TabBarItemIOS image scale: TabBarItemIOS supports setting the scale for base64-encoded images using an optional scale parameter, however this was broken due to the JS code only passing the uri, not the whole source object, to the native side.
- RedBox now rotates properly: 4382c0e
v0.10.0
react-native 0.10.0 has been published to npm and CocoaPods. Fixes from 0.10-rc include:
- A bug in css-layout that would cause 100% CPU usage with a specific combination of flex properties has been fixed
- Removing native event listeners during reconcilation has been fixed
- The podspec has been fixed to allow you to use both the RCTImage and RCTNetwork subspecs
- Multiline TextInput components keep their text and cursor within their bounds
- ReactART has been fixed
- The
shouldRasterizeIOS
prop has been fixed to use the screen scale for crisper rendering