Releases: facebook/react-native
0.22
Thanks to the 99 contributors who put 316 commits into React Native 0.22.0!
React Native 0.22 ships with Hot Reloading! 🎉
Special thanks to Mateusz Zatorski (@knowbody) for writing these release notes.
New features
- Support custom ScrollView implementations in ListView - b516976
- Adopt NavigationExperimental in UIExplorer - 876ecb2
- Introduce disabling for Touchable* elements - 9951e1a
- Introducing NavigationCardStack - 6bcb2a0
- Implement modulo operator method for Animated - ae0ad1f
- Add message channel to packager for sending commands to bridge (2/N) - c377f2a
- Add new worker for code transform, optimization, and dependency extraction in packager - d94a567
- Add gesture handling for the Navigation card stack - caac520
- Add data structure to manage the stack for the legacy navigator - 1caebf1
Bug fixes
- Fix an issue (Sticky header index was outside the range) when renderSeparator is defined but returns null - c449d9e
- Fix resources build variable name - 7eb7b94
- Fix crash when passing null to clearImmediate - 44fcf22
- Fix Exponential WebSocket Growth from DevTools - d0a26a7
Android
New features
- Add the ability to create triangles using style tricks - a6a4389
- Enable scalesPageToFit on Android - 4b97137
- Add position to Picker onValueChange's call - b454d31
- Added a
root
option to therun-android
command - b9ed72a - Use nanoTime instead of currentTimeMillis for events - b5d2667
- Add drawerLockMode prop to DrawerLayoutAndroid - ec173b1
- WebWorkers: Add ExecutorToken to route native module calls to/from workers - bd95b22
- Enable blurOnSubmit for text input in android - ab12189
- Add generic memory pressure listener interface - c027f05
- Ability to supply product flavor for
react-native run-android
command - 46422dd - Add ReactCompoundViewGroup interface that allows having both virtual and non-virtual (View) children - aae521f
Bug fixes
- Fix app crashes on Android after fetching the js bundle - 3640080
- Fix broken drawer layout - 8e809e9
- Deprecate PullToRefreshViewAndroid and remove it from the website - 91788d2
- Fix hidden StatusBar reappearing after exiting app on Android - cf3bd9f
- Fix android's image tintColor prop when used with alpha - 8b88cae
- Fix attributes checking for Image.android.js - 7e3266d
- Fix deadlock in bridge - e64987d
- Fix IllegalStateException crash in WebSocketModule.java - a6a89fe
iOS
New features
- Adds category and alertAction properties to local notification details object - 183d6a0
- Add position to Picker onValueChange's call - b454d31
- Add support for sharing images or other media via iOS share sheet - e6c6510
- Added support for taking snapshots of the screen, window or individual views - ac12f98
- Add UIManager.measureInWindow to get window coordinates - f67fa82
- Add Universal Links support to Linking.getInitialURL(). Fixes #6099 - f0689cf
Bug fixes
- Fix a bug with ListView with sticky headers + RefreshControl - 671b975
- Fix RCTPerfMonitor display unit error - 50141f9
- Fix WebView example on iOS - 7032a64
- Fix issue with opaque thumbnails being given an alpha channel - 7383378
- Fix RefreshControl layout on screen rotation and consecutive pull to refresh not working properly - 102a31c
- Fix Geolocation Accuracy and Cached Location Bug - 49b2805
v0.21.0
Thanks to the 62 contributors who put 145 commits into React Native 0.21!
Important: Read if upgrading your Android project to this version
We've simplified how your Android apps are built. The Android binaries are now distributed via npm along with the rest of the framework (rather than Maven). This means you'll need to run react-native upgrade
to upgrade you Android build (.gradle
) files. This is a one-time change.
New features
- Added
NavigationExperimental
a308546 - Added ability to switch React Native version in documentation website 6c7991c 6c7991c
- Replace String.prototype.contains with String.prototype.includes polyfill 2f73ad0 577206f
- Make Chrome debugger faster 64d56f3
- Added accessibility props for Touchables 33d8db5
- Better warnings when running packager on Node < 4 e1f04bf
- Expose option for distance filtering on location updates 109036b
- Don't automatically render more rows when dataSource updates d2ab6ca
- Allows RefreshControl to be mounted with refreshing = true 3e1f1ea
- Add support for number as colors 1c11276
- Re-render the whole navigation bar while calling immediatelyResetRouteStack 7b57b5c
- Support for back button in NavigationExperimental 7b2b0c3
- Stop warning about using
onWillFocus
andonDidFocus
5ca9245 - Let the module cache depend on transform options 727a2a9
- Added
deprecatedCallback
helper 8eddead - Don't show underlay if no press handlers e93afad
- Return remover function when adding NetInfo listener 1c507e6
- Added guide for getting started on Linux 2260d90
- Use ES6 import instead of require in docs 3ae99d0
- Packager: Remove unused support for asynchronous dependencies 7c03b16
- Added two new apps to showcase (Choke and MyPED) 0f850b4 272096c
Bug fixes
- Remove React dev tools upsell until it's supported 184c708
- Fix inspector for displaying styles' value 97b8a57
- Fix bug when multiGet requests with overlapping key sets get issued 52755fd
- Add missing
Children.toArray
7cbad9f - Improve copyright year in docs de3b942
- Fix StyleInspector warning about unique
key
prop 97741af
Android
New features
- Expose
Dimension.get('screen')
228a1fe - Return object with remove method from BackAndroid.addEventListener 8f6e074
- Added .setItems() integration for Android AlertDialog 4fd115f
- Cache image resource ids fef4196
- Use new DisplayMetrics object in
getDisplayMetrics
6ac007b - Add better error messages on js bundle downloads 81dc884
- WebWorkers: Pass bridge to JS executors cf7a97c
- Allow use external typeface in native code 17fcc94
- Support corner radius 4937a4c
- Document working with Android Studio abdca04
- Document DatePicker and TimerPicker 05e4236
- Consume artifacts from npm 702f999
- Add Object.getPropertyNames() and Object.toJSONMap APIs bab4818
- Format exceptions correctly when crashing 0b89b18
- Strip devsupport from prod builds 8720d4b
- Add 'file://' prefix to sourceURL when loading a script from a file f2a60a2
Bug fixes
- Fix proguard template for ReactProp and ReactPropGroup 10c0758
- Fix issue that breaks scroll views w/ RefreshControl on Android 9879717
- Fix race in Catalyst tests 294185a
- Snapshot BackAndroid event listeners while an event is dispatched 9040315
- Fix icon handling 142f8c9
- Fix "POST has no body" a7521a2
iOS
New features
- More helpful description for native-js prop mismatch 375abc3
- Add support for
textAlign
on iOS multiline text input 7b22606 - Expose flow events to JS + add JS -> Native flows c00049c
- Add ability to listen and dismiss local notifications 758d9e8
- Restricted image decoding to 2 simultaneous threads 915e582
- Make JS async always the top thread in systrace 84f51da
Bug fixes
0.20
Thanks to the 84 contributors who put 253 commits into this release!
Special thanks to @knowbody for preparing these release notes.
New features
- Added an optional options parameter for WebSockets - 9b87e6c
- Generalized image decoding and resizing logic - 21fcbbc
- Make CameraRoll work with Promises - 9baff8f
- Change the js signature to be Promise based and dynamically detect it used as a callback - 747be0b
- Use numeric identifiers when building a bundle - cb4fca3
- Adding ETag handling to packager improves local development - 528e309
- Added support for auto-resizing text fields - 481f560
- Open source Android date and time pickers - 9a0539d
- Add cross-platform Linking module - e33e6ab
- Reimplement color processing - c8a0a3e
- Cross platform status bar API - b979128
- Use "babel-preset-react-native" - e6cb02d
- Support non-image assets in packager - 81fb985
- Added accessibility props for Touchables - c715302
- Added accessibility props for Touchables #5346 33d8db5
- Versioned documentation deployment 6f1417c, 7d7508e
Bug fixes
- TextInput should call blur and focus methods of selectionState - 5ea4d39
- Fix default logger's loglevel, improve default error handler - 1dffd05
- RN: Teach YellowBox to Count - ab87033
- Fix TouchNativeFeedback so that the ripple starts from where a person touches - 48117ce
- Make the packager work with babel strict mode transform - d33b554
- RCTUtils Obj-C nullability annotations - 34d5fa2
- adjust getSize so that its doc can be shown on the page - edb523c
- Correctly bind Touchable.js setTimeout - f644af3
- Ensure perspective value is non-zero - dad4622
- Improve style prop display - 193df8a
- breaking test and fix for browser field mapping from package to file - 191b692
- Fix warnings generated by Elements Inspector - c1aed7b
- Disable navigation bar right button when it's transparent - 1edcf4c
- Fix problems with graceful-fs bug - f04882f
- ColorPropTypes support for isRequired and more precise description - 1491668
- Fix shallow dependency resolution - 361f3f3
- Replace
ScrollView.scrollTo()
API with something less ambiguous - 6941c4e
Android
New features
- Expose setGlobalVariable in CatalystInstance interface - a9a7c78
- Android AppState - c2d75d7
- added support for overlayColor property for image - f68281a
- Open sourced ImageEditor, ImageStore for Android - 1d819e9
- Add onPageScrollStateChanged for ViewPagerAndroid - 8de86a0
- Add support for custom scale types - 53100ec
- Update Android's ScrollView.scrollTo API to match JS/iOS - ee30433
- Add headers prop to Android WebViews - 80a2f5d
- Add support for selectionColor on Android TextInput - 0c91931
- Add scrollEnabled prop to Android ScrollView - 82b0df9
Bug fixes
- When using split builds, don't generate universal APK - 342a763
- Fix StyleSheet 'textAlign' for AndroidTextInput - f453e14
- Don't NPE in reactTagForTouch - 2a70c53
- Fix a crash in Image when passed an invalid uri - 798acac
- Fix per connection timeouts for XHR - f7c48ee
- Fix timing initialization bug - 7e5247c
- Fix bug with calculating Y offset in RecyclerViewBackedScrollView - 041fb59
- Use
getRealMetrics
for display metrics - 8e60394 - Fix Keyboard handling to allow all characters on Soft Input Panel and hardware keyboard - fa4a5af
- Allow customized refreshControl in ScrollView for Android - 6d65a90
- Fix bug related to removeClippedSubviews and view collapsing - 5f4390b
- Fix scrollTo when using RefreshControl on Android - db74e71
- Multiple fixes to DisplayMetrics KeyboardListener 33d8db5, 4254e8a, 5a109ae, 228a1fe
- Fix issue that breaks scroll views w/ RefreshControl on Android 9879717
iOS
New features
- API for cancelling RCTTouchHandler - c14cc12
- Added support for width & height for text images - 2cbc912
- Add 3dTouch props to touch events - fff5dc3
- Added iOS indicatorStyle prop to ScrollView - b84f5fb
- add flag to enable momentum scrolling on iOS - 0f7477f
- Add MapView annotation callback when it gets / lost the focus - cb874a5
- iOS websocket: include cookies with request - debcac5
- Add iOS tintColor prop to TextInput - c2233ef
Bug fixes
0.19
Thanks to the 87 contributors who put 232 commits into this release!
New features
- Added scrollTo method to ListView – 33e05a1
- Add followUserLocation prop to focus on user's location – 3d0ff69
- Add option to throw/not throw when module can't resolve – 6579b70
- Add support for promise rejection tracking – b064094
- Get response url from XMLHttpRequest – b659d7f
- Add ScrollResponder#scrollResponderZoomTo animated second argument – 963f26c
- Add Navigator#configureScene, routeStack as second argument – 1abd12b
- Add StyleSheet.hairlineWidth, useful for drawing thin lines in a layout – cd89016
- Add onLoading* props for WebView – 274a3e0
- Add XHR timeout for Android and IOS – 1303e6d
Bug fixes
- Fix lint warnings in the resolver – 0cb63bb
- Return non-zero exit code from wrong-react-native – ec76271
- Pipe transforms errors through transformation pipelines – 5a4ee0b
- Fix packager cache errors – f421d2b
- Fix
background
warning in TouchableNativeFeedback – 28c0240 - Docs for manual linking in PushNotificationsIOS – 385fa00
- Navigator iOS doesn't update any scenes when 0th scene is replaced – 61025a9
- Don't call npm before node is available – 7ecb693
- Fix corner case bug in ListView – b75c939
- Bail internal transforms if there're no transforms to run – 7bb6044
- Fix 'Error: spawn npm ENOENT' on Windows – 749f32b
- Fixes error when navigationBar is set back to null – 4f9086f
- Fix FormData to support non-string, non-object values – de392b5
- FormData can append only string or object with uri – 5061fde
- Fix launching text editor from a Redbox stacktrace on Windows – e08a7f3
- Fix content offset calculations when scrolling up – f8f5cb1
- Fix CLI "sourcemap-output" option – 0065986
- Bind
this
in XHR#onReadyStateChange – b8ff621
Android
New features
- Android AppState: c2d75d7
- Android Picker with the same API as iOS, 1dd5ba7
- Enable WebView debugging – 2462c8f
- WebWorkers: New c++ interface for NativeRunnable – cf350a6
- WebWorkers: Add JSLoader API for loading script from assets with AssetLoader reference – 1bfd267
- Add annotation processor for @ReactProp – 57f6cbb
- Add onSelectionChange for Android TextInput – 6dc6794
- Allow canceling DevServer reload requests – cb94d99
- Add support for split build per architecture – abb81eb
- Add support for global alert() on Android – 1dc56a6
- Add support for Build Variants to react.gradle – bd7d10e
- Open sourced Spinner (aka Picker, "drop down") – 1843709
- Add removeClippedSubviews for ReactHorizontalScrollView – a10a510
Bug fixes
- Java exception snprintf off by one – 0b15418
- Fix build error and runtime error after proguard enabled – 5f3d08d
- ProgressBarAndroid: default value for styleAttr – a452199
- Don't create DevSupportManager when not in Dev mode – 6483645
- Fix the 'end' value in the onTextInput callback for onscreen keyboard – 8ecd352
- Fix WebView double loading – 393adac
- Fix incorrect size issue with inline image text – 2a02621
- Support setting elevation on any type of View – 5ac848c
- Build React Native with Buck – 9fea485
- Fix a crash in ViewPagerAndroid when passing a null child – bd4bf8c
- Increase worker-farm timeout – 0d4cfa0
- Remove fixed size of Android Switch. Fixes #3785 – a3d9fad
- Fix for Android split builds: 342a763
- Fix StyleSheet 'textAlign' for AndroidTextInput, f453e14
- Fix Image crash on invalid source Uri 798acac
Breaking changes
- Load assets from same folder as JSbundle – e730a9f
- Stop using platform-specific names for WebView props – 6edcebe
- Change the signature of onDropViewInstance. issue #5053 – daa93a6
iOS
New features
- Wait for JSExecutor to tear down in RCTBridgeTests – 8772a6a
- Added
react-native run-ios
– 9490c2c - Add soundName config for UILocalNotification – ac72611
- Fixed border smearing issue – b115277
- Add phone-pad keyboard – 25c3dd1
- Running from XCode is more robust regarding to different node version – 3e4414
- Added stickyHeaderIndices to ListView – 4bc425c
Bug fixes
- Fixed iOS 7 support for URL query functions – 180fc06
- Re-enable testUnderlyingBridgeIsDeallocated – 435efad
- Fix a potential deadlock in RCTModuleData – 23cd9fe
- Improved null url handling – 571e646
- Fix extra native modules missing bridge after reload – 0fa1f8d
- Update createView C function on profiler – 473f9bc
- Multiline TextInput not wrapping in multiline – 09250aa
- Plist key NSLocationAlwaysUsageDescription was ignored – 6623e48
- ActionSheetIOS support for presentation from modal view controller – 43dcdaf
- Improved shadow performance – e4c53c2
- Invalidate JS executor when loading fails, #5090 – 8ea9a1b
Breaking changes
0.18
These release notes were written by Satyajit Sahoo. Thank you so much! Also, thanks to the 89 contributors who put 368 commits into this release!
New features
- Use
React
from NPM - 5bf1f4c - Support
onLayout
andonContentSizeChange
attributes onListView
- 3cfcd40 Animated.multiply
andAnimated.add
to combine animated values - 3eb32cb- Cross platform
PullToRefreshView
component - 44f7a00 - Add
<Text>
shadow support - 4972cab
Bug fixes
- Fix
ImmediatelyResetRouteStack
does not update Navigator's title - 67c6afd - Fix pop method to properly refresh the navigatorBar - e62471b
- Fix app crash caused by
TextInput
- 53d18c8 - Fix error when navigationBar is set back to null - 0b63571
- Pipe transform errors through transformation pipelines - 3ef6f9f
Android
New features
- Add support for custom Android views - 1fabd86
- Add support for
onScrollBeginDrag/End
andonMomentumScrolBegin/End
events - fcf0431 - Add a base activity named
ReactActivity
- Add deep linking support to
IntentAndroid
withgetInitialURL
- eb188c8 - Add
contentInsetStart
andcontentInsetEnd
properties toToolbarAndroid
- 7164c75 - Allow turning on/off DOM storage on
WebView
- 6793128 - Open source ART for Android - 27ac047
- Add support for split build per architecture - 10a17c6
- Add support for
alert()
on Android - 9bf7c71
Bug fixes
- Fix crash where measure is called with a view that is now off screen and removed from clipping - bafbe5e
- Fix when navigating to a URL loading finished is reported with the old URL in
WebView
- b436943 - Update dev menu to keep track of element inspector - c74d640
- Fix crash in
NetInfo
in case the network permission is missing - f168fc3 - Fix
WebView
failed to show UTF-8 characters - e4272b4
iOS
New features
- Add ability to use a custom view for
MapView
annotations - f9dfb90 - Implement draggable annotations on
MapView
- b8aac8b - Add option for both min/max track image to
SliderIOS
- 4cb7752 - Support dashed and dotted border styles - 15aa146
- Add support for binary type data (ArrayBuffer) to
WebSocket
- afbff9b - Adds
getSize()
method toImage
to retrieve the width and height of an image prior to displaying it - 718cd79 - Add a method to get current status bar height - 52220a9
Bug fixes
- Fix
getCurrentPosition
faling on first try - f48dbbe - Fix
<Image source={{ uri: null }} />
crashing - f940e7c - Fix iOS 7 support for URL query functions - ccd8f99
Breaking changes
- To enable JavaScript in Android
WebView
, usejavaScriptEnabled
instead ofjavaScriptEnabledAndroid
.
0.17
These release notes were written by Joshua Sierles, thank you so much! And thank you to the 87 contributors who put 299 commits into this release!
High-level changes
- Added Android WebView 8cd7730
- New Alert API that works both on iOS and Android 3a3af8a
- Exposed
navigator.product
for detecting the React Native in javascript. - Wrapped the UIManager native module in javascript for better abstraction 60db876
- Fixed
react-native bundle
failure on Windows 10 710b443 - Fixed getting a Navigator
navigationBar
by reference df70005 - Fixed packager
assetRoots
argument being ignored 802aef9 - Fixed that inspecting a stateless component would cause a crash c489660
- Added new Clipboard component on iOS and Android. Previously named RCTPasteboard on iOS 90c7ad1
- Fixed using
require("./image")
sources in development on Windows fe3686e
Android
- Allow specifying a custom file path for JSC profiler output aaffb23
- Added Image onLoadX support ae09a10
- Open-sourced Android unit tests c0f60d2
- Added support for passing
ImagePipelineConfig
toFrescoModule
, for improved Fresco configurability 4890424 - Experimental support for
LayoutAnimation
, needs to be manually enabled usingUIManager.setLayoutAnimationEnabledExperimental
593a45e - Added support for NetInfo cf892a9
- Added RTL (right-to-left) support to ToolbarAndroid c8eed6a
- Added
loadingIndicatorSrc
property to Image, similar to iOSdefaultSource
, for displaying something while loading a38cd5c - Added support for
double
type in ReactPropGroup c0c8e7c - Added support for
rotateX
androtateY
transforms to views 96553cf
iOS
- Fixed flaky rich-text TextInput scrolling b5be05d
- Allow a custom SliderIOS thumb image 9fc3991
- Allow custom colors and images on MapView annotations 5b5b550
- Added polyline support to MapView: draw lines between two points with a custom color and width 8911b72
- Added new
didSetProps
callback for configuring views or shadow views after setting props f86691a - Fixed onFocus/onBlur events for multiline TextInput 01a0fac
- Fixed a MapView crash on iOS 8 by adding a forked implementation c63de5e
- Added
excludedActivityTypes
to ActionSheetIOS 0f0b578 - Added
secure-text
andlogin-password
input types to AlertIOS. Also fixed cancel button highlighting and localization support for OK/Cancel labels f025049 - Added
blurOnSubmit
support to multiline TextInput. This mimics behavior of hitting return in a single line input. 3704257 - Fixed TextInput regression on iOS 8 and below 6d29f71
- Fixed interrupted scrolling in nested ScrollViews 67bf0f1
- Allow specifying a string for the
systemIcon
TabBarIOS property dd9c1e1 - Added LinkingIOS support for Universal Links f4c286f
- Added a
style
property to PickerIOS, allowing custom font sizes, colors and alignment e2c35dd - Added
tintColor
for ActionSheetIOS buttons 86bb656
Breaking Changes
- Deprecated RCTRootView
initialProperties
property was removed bf0934a - Scrollview support was removed from UIManager 38db6fa
- iOS native module
bridge.modules
was deprecated in favor ofbridge.moduleClasses
or-[bridge moduleForName/Class:
. This allows for efficiently lazy-loading native modules 060664f
0.16
These release notes were written by Joshua Sierles, thank you so much! And thank you to the 80 contributors who put 260 commits into this release! (Compare view)
0.16.0
JS
- Added Babel helpers for es2015 imports (gist). ffea779
- For-of support: 5dc40af
- Support for ES6 modules in Babel plugins dff8f53
Android
- Added
PullToRefreshViewAndroid
: 37f8134, cad4686 - Android view shadows: b65f1f2
- Proper touch handling for transformed Views on Android: c929e15
0.16.0-rc
High-level changes
- Hex RGBA colors, i.e.
#f007
and#FF996633
are supported. 3c04bfc - React Native was upgraded to Babel 6.
Array.from
is available as a polyfill. c473974 https://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from
Android
- Android supports custom fonts; only TTF and OTF for now. bfeaa6a
- The Android ViewPager gets
setPageWithoutAnimation
. 50b8b00 - Images within a TextView, i.e. emojis, are now supported. a0268a7
- The Android performance profiler, Systrace, gets thorough documentation. d2c5045
iOS
- The
keyboardAppearance
prop was added to iOS TextInput. Useful for displaying a dark keyboard. f407211 - AsyncLocalStorage gets an in-memory cache. 397791f
- TextInput supports the
onSelectionChange
event. 5a34a09 - iOS
RCTPasteboard
was released. Useful for copy-to-clipboard behavior. 26cb6be
Breaking Changes
- React Native now uses Babel 6, props to Tadeu Zagallo for upgrading and thanks David Aurelio and Sebastian McKenzie for all the help! We've been using React Native with Babel 6 at Facebook for quite a while now. Nevertheless, please report any errors related to Babel, such as transforms for some JS features not working as expected and we'll fix them.
- Touch events on Android now have coordinates consistent with iOS: 0c2ee5d
- YellowBox enabled by default on iOS: 8ab5182
- JS decorators won't work until T2645 lands in Babel. It's being worked on. The proposal for decorators is not final and therefore Babel 6 left decorator support out for now.
- Exporting default class that extends a base class won't work due to Babel's T2694.
RCTSparseArray
was replaced byNSDictionary
. Modules usingRCTSparseArray
should update. fa0b45cRCTWebViewExecutor
was removed. 0764e4e- We've migrated all internal RN components to declare their propTypes inheritance explicitly in dd09c88. This allows for better control on which props can be used. In order to make third-party native components work you will need to add
...View.propTypes
to the map of propTypes in the component definition (see dd09c88 for an example).
v0.15.0
Breaking Change
Upgrade to Xcode 7: React Native uses Objective-C generics
Changes since 0.15.0-rc
- Geolocation now works on Android (494930a)
- Open sourced
IntentAndroid
. This lets you open the system browser, Maps and other apps (ab7b3b2) - Cookies are now persisted across network requests on Android (Product pains post, 274c5c7)