Summary: Well, looks like we've hit a GH limit 🤣 <img width="1272" alt="Screenshot 2023-06-22 at 10 32 19" src="https://github.com/facebook/react-native/assets/16104054/d1901d7c-a06b-4dae-9ec4-1846dc458eb1"> This PR splits the changelog into (for lack of better term) decades: * lower than 0.60 (turns out we only started having proper changelogs in the mid 0.50-ish) * 60->69 * 70+ This also works well because anything lower than 0.70 is now in the unsupported range. ## Changelog: <!-- Help reviewers and the release process by writing your own changelog entry. Pick one each for the category and type tags: [ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message For more details, see: https://reactnative.dev/contributing/changelogs-in-pull-requests --> [Internal] [Changed] - split the changelog into decades Pull Request resolved: https://github.com/facebook/react-native/pull/38017 Test Plan: N/A Reviewed By: GijsWeterings Differential Revision: D46932308 Pulled By: cipolleschi fbshipit-source-id: f384d24cdf73c932b0b560919ac732bd993e93da
270 KiB
Changelog (pre 0.60)
This file contains all changelogs for releases in the pre-0.60 range. Please check out the other CHANGELOG-*.md
files for newer versions.
v0.59.10
This is likely the last patch release for version 59 of React Native for the foreseeable future: it contains an important Android side update for the JavaScript Core, to prevent a great number of crashes mostly related to Samsung devices - thanks to @Kudo for his work on fixing this via 557989a86f!
Thanks everyone who participated in the discussion.
v0.59.9
This is a patch fix release addressing a couple ScrollView regressions, and "future-proof" RN 59 from crashes caused by upgrading Gradle (now can support up to 5.4.1 & 3.4.0 for the plugin) and Xcode 11 Beta 1. You can upgrade to this version without upgrading your tooling.
Thanks everyone who contributed code or participated in the discussion for cherry-picking commits. You can participate to the conversation for the next patch release in the dedicated issue.
Changed
-
If
isInteraction
is not specified in the config, it would always default totrue
which would block interactions like VirtualizedList updates. This is generally not what you want with useNativeDriver since the animation won't be interrupted by JS. If something does end up interfering with an animation and causes frame drops,isInteraction
can be set manually. (8f186b84ae by @sahrens) -
Update detox to match master (c6a5c09e2b by @kelset)
Android specific
- Bump Gradle to 5.4.1 & Android Gradle plugin to 3.4.0 (b4017a9923, d9f5a9dc16, 30348f7899, 6976a93126 by @dulmandakh)
Fixed
- Fixes wrong time unit of scroll event throttle (1148c03f6f by @zhongwuzw)
Android specific
- Fix indexed RAM bundle (d8fa1206c3 by @dratwas)
iOS specific
- Fix Xcode 11 Beta 1 builds (46c7ada535 by @ericlewis)
v0.59.8
This is a patch fix release addressing regressions, crashes, and a few developer-experience pain points (in particular, check the KeyboardAvoidingView
change). Thanks everyone who contributed code or participated in the discussion for cherry-picking commits.
Fixed
- Fix regexp on
hasteImpl
(bcd1e2 by @CaptainNic) - Fix sparse array handling in
EventEmitter#listeners()
(f68dc8 by @ide) - Fix VirtualizedList to call
_updateViewableItems
immediately (08141e by @sahrens) - Fix prop overrides of TouchableWithoutFeedback (0c4206 by @aleclarson)
- Fix resolve relative size rendering error in inspector (4884ab by @gandreadis)
- Fix VirtualizedSectionList by making sure to check array bounds (54f91d by @vonovak)
- Update
_scrollAnimatedValue
offset of ScrollView (e0d1b3 by @miyabi) - Fix infinite
setState
in VirtualizedList (c40a93 by @sahrens)
iOS specific
- Fix incorrect opacity behavior for Text component (f71357 by @shergin)
- Fix Text shadow displays when
text Offset
is{0,0}
(17a81b by @Woodpav) - Add convert compatible of NSString for bridge message data (c37e9c by @zhongwuzw)
- Fix nullability warnings in RCTExceptionsManager (2b7d79 by @jtreanor)
- Fix app to reconnect with metro after the bundler is closed and reopened (c28676 by @rickhanlonii)
- Fix throttle below 16ms on ScrollView (39776a by @sahrens)
Android specific
- Fix JS errors during bundle load were reported as
UnknownCppException
(84e263) - Add logic to catch
MissingWebViewPackageException
(379874 by @thorbenprimke) - Revert "improve RTL" (f3801d by @thorbenprimke)
Added
- Add listener for non-value animated node (4a82dc by @osdnk)
- Set ScrollView throttle by default (74d740 by @sahrens)
Changed
- Make KeyboardAvoidingView with
behavior="height"
resize on keyboard close (7140a7 by @WaldoJeffers) - Update network inspector to have smarter scroll stickiness (57dc37 by @AlanFoster)
v0.59.7
This patch release was unpublished.
v0.59.6
This patch release was unpublished.
v0.59.5
This is a patch fix release addressing regressions, crashes, and a few developer-experience pain points. Thanks everyone who contributed code or participated in the discussion for cherry-picking commits.
Fixed
- Remove wrapper around ListEmptyComponent (54af5b by @AntoineDoubovetzky)
Android specific
- Enforced thread safety on UIImplementation methods that mutate the shadowNodeRegistry (f5a318 by @SudoPlz)
- Fixed a
NoSuchKeyException
when parsing JS stack frames without line numbers (d7bd6c by @Salakar) - Fixed
mostRecentEventCount
is not updated (b8aac0 by @jainkuniya)
iOS specific
- Pass back correct dimensions for application window in Dimensions module (72b4cc by @rdonnelly)
- Fixed warning: "RCTImagePickerManager requires main queue setup" (effb02 by @scarlac)
v0.59.4
This is a patch fix release addressing regressions, crashes, and a few developer-experience pain points. Thanks everyone who contributed code or participated in the discussion for cherry-picking commits.
Changed
- Make Jest transform @react-native-community packages by default (7e23c7c565 by @thymikee)
iOS specific
- Add
scrollToOverflowEnabled
prop to ScrollView (6f4239b37c by @mysport12)
Fixed
- Fix Touchable long-press (59e50237bf by @Kida007)
Android specific
- Fix a crash when setting
underlineColorAndroid
in TextInput (556aa93ed7 by @sunnylqm)
iOS specific
- Fix universal links not working in iOS 12 / Xcode 10 (56679ed359 by @IljaDaderko)
- Fix triangle views (7a6fe0cda0 by @zhongwuzw)
v0.59.3
This is a patch fix release addressing regressions, crashes, and a few developer-experience pain points. Thanks everyone who contributed code or participated in the discussion for cherry-picking commits.
Changed
Android specific
- Improve RTL support (b3c74967ca by @dulmandakh)
Fixed
- Fix VirtualizedList, SectionList and FlatList behavior on rendering list headers with inverted prop and zero items (c13f5d48cf by @michalchudziak)
- Fix VirtualizedList debug mode crash (02e8e531dd)
- Fix running Metro on Windows (43d3313788 and 9db347fabc by @aliazizi and @nazreinkaram)
Android specific
- Fix IllegalStateException when invalid URL or headers are passed (aad4dbbbfe by @dryganets)
- Fix IllegalStateException when tapping next on Android Keyboard (b943db418f by @mdvacca)
iOS specific
- Show Perf Monitor after reloading JS (15619c22e5 by @usrbowe)
- Fix TextInput's
maxLength
when inserting characters at begin (17415938c7 by @zhongwuzw) - Fix runtime crash in Xcode 10.2 when using
RCT_EXTERN_MODULE
for swift classes (ff66600224)
v0.59.2
This is a patch fix release addressing regressions, crashes, and a few developer-experience pain points. Thanks everyone who contributed code or participated in the discussion for cherry-picking commits.
Fixed
Android specific
- Crash on pre-26 Android devices when setting TextInput content type (d4aa1e7a52 by @hramos)
- Crash when scroll to index 0 in a SectionList (8fa116cc0e by @danilobuerger)
- Switch's
trackColor
being reset when toggled (7652e31d8c and d6ee448e15 by @dulmandakh and @ejanzer)
iOS specific
- ScrollView offset out of content size (9c1c5a7455 by @zhongwuzw)
- RefreshControl state's race condition (95d399bc82 by @rostislav-simonik)
- Start Metro packager from project root (fe3aebf87b by @MatthieuLemoine)
- TextInputs that are single-line reverting to default text (e38be82dfa by @PeteTheHeat)
Changed
Android specific
- Add TLS 1.3 support to all Android versions using Conscrypt; to use this, you must add
implementation('org.conscrypt:conscrypt-android:2.0.0')
tobuild.gradle
(75af15ede4 by @dulmandakh) - Turn off Metro JS Deltas by default for Android (845189c17d by @PeteTheHeat)
v0.59.1
This is a small patch release that addresses two critical issues from the 0.59.0 release.
Fixed
Android specific
- Template build gradle error on x86_64 (4b996da470 by @grabbou)
iOS specific
- Build error warning of Text module (d834197746 by @zhongwuzw)
v0.59.0
Welcome to release 0.59 of React Native! For highlights of this release, please view the dedicated blog post. Thanks to those who gave feedback during the release candidate phase. If you're interested in helping evaluate our next release (0.60), subscribe to the dedicated issue here.
Added
- Add a Metro configuration to the template with inline require/import options; read more about it in the blog post (ae11993d0f by @cpojer)
Android specific
- Text and TextInput now has prop maxFontSizeMultiplier (4936d284df by @rigdern)
- TextInput now has prop autoComplete prop (f15145639d)
- CameraRoll's
getPhotos
now supportsassetType: "All"
to let users pick from video and photos simultaneously (54534e79d7 by @kesha-antonov) - Text and TextInput now support
textAlign:justify
for android O+ (api level >=26) (d2153fc58d by sunnylqm)
iOS specific
- TextInput now has prop
rejectResponderTermination
to enable TextInputs inside Swipeables to function properly (11df0eae5f by @cmcewen) - ActionSheetIOS has a new prop
destructiveButtonIndexes
for anArray<number>
of destructive indexes (67e7f16944 by @sdg9) - Add
isEventFromThisApp
toKeyboardEvent
notifications to disambiguate keyboard events when apps are running side-by-side (05f35c296d by @nossbigg) - Allow changing the project path in
react-native-xcode.sh
using env varPROJECT_ROOT
(9ccde378b6 by @janicduplessis)
Changed
React
is now atv16.8.3
(ccefc700d0 and (2af13b4477 by @cpojer and @hramos)Flow
dependency is now atv0.92.0
(5ee738659b by @pakoito)@react-native-community/cli
dependency is atv1.2.1
(a252aee2ea and 5e1504b0fc by @grabbou)- Enhance Flow types definitions for ViewPropTypes (7ff9456f2e by @danibonilha)
Android specific
- Clarify error message to direct people to
react-native start
rather thanreact-native bundle
(46aaa02274 by @sunnylqm) - BREAKING - removed
OkHttpClientProvider.replaceOkHttpClient
method; please useOkHttpClientProvider.setOkHttpClientFactory
from 0.54+ (7cbdd7b6ac by @cdlewis) - BREAKING - remove
ViewHelper
, useViewCompat
instead; this may also require changing theandroid:theme
to be fromTheme.AppCompat
; read more about it in the blog post (c493cfe708 by @dulmandakh) - Add nullable annotations to
ReadableMap
,WritableMap
,ReadableArray
,Writable
,ReactPackage
, and native module interfaces; this may impact Kotlin usage (b640b6faf7, c93cbdf1b2, 7b33d6b0b9, and 84f40da990 by @dulmandakh) Soloader
is now atv0.6.0
(07d1075f37 by @dulmandakh)- Android Support Library is now at
v28.0.0
(5bbed43854 by @dulmandakh) targetSdkVersion
is now atv28
(57f444bd8a by @dulmandakh)- Android Plugin is now at
v3.3.1
(da5b5d2fa1 by @dulmandakh) - Enable Java 8 support (38eb2a70af by @dulmandakh)
- Suppress misleading missing permission warnings (d53dbb0dfb by @dulmandakh)
- Add back
buildToolsVersion
to build.gradle (cf52ab561d by @dulmandakh) - TimePickerAndroid has better Flow types definitions (2ed1bb2e01 by @yushimatenjin)
ReactActivity
,ReactSlider
,ReactTextView
, andReactPicker
extendsAppCompatActivity
; updates toTimePickerDialogModule
andDatePickerDialogModule
as well (dda2b82a0a, 3b9604feda, ba0c3ffd5b, 833429dd63, adc1410572, c6c5a173bc, and be361d0fc1 by @dulmandakh)- Fix lint error/warnings that cause older Android crashes (d2fc19f4aa by @dulmandakh)
- The error message on getting Android drawable folder suffix now gives more information (a159a33c02 by @BrunoVillanova)
SYSTEM_ALERT_WINDOW
permissions available only in debug builds (84a2fb0a4a by @dulmandakh)- Add talkback navigation support for links and header (b9d3743cda by @yangweigbh)
- FlatList has
removeClippedSubviews
default totrue
on Android (1a499f43b2 by @fred2028)
iOS specific
- Moved iOS build cache directory from
~/.rncache
to~/Library/Caches/com.facebook.ReactNativeBuild
(1024dc251e by @sryze) - Keyboard API Event flow types have been improved (7ee13cc84c by @nossbigg)
- Expose AsyncLocalStorage get/set methods to native code (7b8235a95a by @ejmartin504)
- Clear RCTBridge launchOptions when bridge is reloaded (19d04a312b by @venik)
Deprecated
The following deprecations are part of our Lean Core initiative; read more about it in the blog post.
- Deprecated MaskedViewIOS as it has now been moved to react-native-community/masked-view (4ac65f5413 by @FonDorn)
- Deprecated ViewPagerAndroid as it has now been moved to react-native-community/viewpager (77300ca91c by @ferrannp)
- Deprecated AsyncStorage as it has now been moved to react-native-community/asyncstorage (ffe37487b2 by @Krizzu)
- Deprecated Slider as it has now been moved to react-native-community/slider (bf888a7582 by @michalchudziak)
- Deprecated NetInfo as it has now been moved to react-native-community/netinfo (d9c0dfe353 by @matt-oakes)
- Deprecated ImageStore and directed users to
expo-file-system
andreact-native-fs
(62599fa8ff by @EvanBacon)
iOS specific
- Replace deprecated
stringByReplacingPercentEscapesUsingEncoding:
withstringByAddingPercentEncodingWithAllowedCharacters:
(61ca119650 by @pvinis)
Removed
react-native-git-upgrade
is now officially dead; usereact-native upgrade
instead (which uses rn-diff-purge under the covers) (a6bdacb257 by @cpojer)
iOS specific
- Remove the previously deprecated TabBarIOS (02697291ff by @axe-fb)
- AlertIOS is now replaced with Alert (e2bd7db732 by @wellmonge)
Fixed
- KeyboardAvoidingView now shows the correct height after the keyboard is toggled (745484c892 by @shauns)
- Adds fixes for react-native-windows UWP (dfcbf9729f by @rozele)
- The
Map
andSet
polyfills no longer reject non-extensible object keys; also fix hash collision scenario (90850cace9 by @benjamn) - Corrected StyleSheet's transformation perspective to match iOS's behavior, regardless of screen density (4c10f9321c by @syaau)
- Fix
yarn test
in new projects (5218932b13 by @Esemesek) - Fix issue with
getInspectorDataForViewTag
that caused red screen when toggling inspector (46f3285a3f by @TranLuongTuanAnh) - Fix
displayName
forImage
; this will make tests no longer mistake it asComponent
(4989123f8c by @linnett) - Fix regression of VirtualizedList jumpy header (e4fd9babe0 by @danilobuerger)
- Set
wait_for_recheck=true
to work around crash in Flow (ffc9908bef by @gabelevi) - Fix flow typing of Text (10c8352141 by @sahrens)
- Fix
jest
andjest-junit
to be only development dependencies (c7b57f1986 by @vovkasm) - Fix layout issue with SwipeableQuickActionButton (ad52f52624 by @varungupta85)
Android specific
- Fix textTransform when used with other text styles on Android (#22670) (3a33e75183 by @janicduplessis)
- Fix warnings related to updating to gradle 4.10.1 or higher (5be50d4820 by @misaku)
- Fix issue with use of Android API 28 by adding security config for metro access (5747094532, 19492b730b, 3b0b7ce8c3, and 84572c4051 by @Salakar and @dulmandakh)
- Fix Inverted Horizontal ScrollView (32cb9ec49c by @dmainas)
- Fix crash on CheckBox on older Android versions (58437cd10a by @vonovak)
- Fix undefined error description in Image
onError
callback (7795a672d3 by @Jyrno42) - Fix Android crash on animating with
useNativeDriver
(e405e84fc3 by @scisci) - Fix dev settings menu not appearing for certain codebases due to namespace conflicts (9968d0c203 by @khaled-cliqz)
- Fix exception occurring while fading a TextView (f83281e2ce by @mdvacca)
- Fix StatusBar overwriting previously set
SystemUiVisibility
flags (8afa0378cd by @rogerkerse) - Prevent
fetch()
POST requests from appendingcharset=utf-8
toContent-Type
header (4a807761a4 and 0d5aebbd9a by @nhunzaker) - Fix issue with Location that led to exceptions in two cases (f32dc63546 by @mikelambert)
iOS specific
- Fix TextInput mistakenly capitalizing I's after emojiis (f307ac7c5e by @dchersey)
- Fix TextView's
setAttributedText
for CJK languages on single-line text fields (e38be82dfa by @mandrigin) - Fix RCTImageLoader multi thread crash (5ed31ce524)
- Fix removing keys of large values from AsyncStorage (27b4d21564 by @esprehn)
- Fix overscroll behavior on virtualized lists; behavior is now consistent (4d5f85ed42)
- Fix Alert to not block input focus and blur (e4364faa3c by @zhongwuzw)
- Fix broken JSIexecutor search path (2aa2401766 by @amccarri)
- Fix potential linker issues when using Xcode project (9f72e6a5d0 by @tyrone-sudeium)
- Fix crash when
scrollEnabled
used in singleline textinput (9ff43abe65 by @zhongwuzw) - Fix crash in gif image usage (d0cd3cae13 by @zhongwuzw)
- Fix geolocation to not constantly reset accuracy to default of 100 meters (bbcb97a29a by @omnikron)
- Fix iOS build issue related to missing
DoubleConversion
andglog
tocxxreact
,jsi
andjsiexecutor
subspecs inReact.podspec
file (00392ac46b by @alexruperez) - Fix "'folly/folly-config.h' file not found" build error when using React via CocoaPods (5560a47c1d by @Salakar)
- Fix image cache to follow MDN strategy (fb8ba3fe95 and fb8ba3fe95 by @zhongwuzw)
- Fix crash due to IllegalArgumentException when creating CookieManage (cda8171af3 by @mdvacca)
- Fix cursor placement after toggling
secureTextEntry
cursor spacing (8ce3c1b43e by @ericlewis)
v0.58.6
This release is fairly small, as we approach stable status for 0.59.
Thanks everyone who contributed code or participated in the discussion for cherry-picking commits - you can participate in the decision process for the next patch release here.
Fixed
Android specific
- Fix Inverted Horizontal ScrollView on Android (#23233) (32cb9ec49c by @dmainas)
iOS specific
- Map TextInput textContentType strings to Objective-C constants (#22611) (a89fe4165c by @levibuzolic)
- Don't reconnect inspector if connection refused (#22625) (d9489c4e9c by @msand)
v0.58.5
This release resolves a few bugs and includes a few improvements, listed below.
Thanks everyone who contributed code or participated in the discussion for cherry-picking commits - you can participate in the decision process for the next patch release here.
Removed
- Remove fallback cache (9d60c20cb3 by @grabbou)
Fixed
- Fixes capitalized I's when emojis are present after the text being edited. (#21951) (f307ac7c5e by @dchersey)
- Fix broken jsiexecutor search path. (#23274) (2aa2401766 by @amccarri)
- Fix duplicate symbols linker error in xcodeproj (#23284) (9f72e6a5d0 by @tyrone-sudeium)
- apply Network Security Config file (fixes #22375) (part 2 of #23105) (#23135) (84572c4051 by @Salakar)
- Fix crash for web socket in some race conditions (#22439) (dd209bb789 by @zhongwuzw)
iOS specific
- Don't attempt to load RCTDevLoadingView lazily (a9dd828c68 by @fkgozali)
Security
Android specific
- improve Android Network Security config (#23429) (5747094532 by @dulmandakh)
v0.58.4
This release resolves a few bugs and includes a few improvements, listed below.
Thanks everyone who contributed code or participated in the discussion for cherry-picking commits - you can participate in the decision process for the next patch release here.
Added
Android specific
- Add error description to Image onError callback (7795a672d3 by @Jyrno42)
Changed
Android specific
- bump soloader to
0.6.0
(07d1075f37 by @dulmandakh)
Removed
- Remove jest and jest-junit from runtime dependencies (#23276) (c7b57f1986 by @vovkasm)
Fixed
Android specific
- Fixes Android crash on animated style with string rotation (e405e84fc3 by @scisci)
iOS specific
- fix incorrect type which makes animated gifs not loop forever on device (#22987) (728a35fcf2 by @chrisnojima)
- Fixes for running the simulator (9a8c9596eb by @osunnarvik), (98bcfe00fb by @cpojer) and (8bddcb6cb0 by @cpojer)
v0.58.3
This release resolves a regression in StatusBar using these fixes.
Thanks everyone who contributed code or participated in the discussion for cherry-picking commits - you can participate in the decision process for the next patch release here.
v0.58.2
This release fixes an issue caused by a wrongly reverted merge commit, that caused a short timeframe of commits to not actually be in the original 0.58.0. Those commits have been added to the 0.58 changelog below, as many are intertwined with the original work.
Thanks everyone who contributed code or participated in the discussion for cherry-picking commits - you can participate in the decision process for the next patch release here.
v0.58.1
There were some regressions with developer tools that prevented react-native run-ios
from working properly in 0.58.0; this patch fix addresses that.
Thanks everyone who contributed code or participated in the discussion for cherry-picking commits - you can participate to the decision process for the next patch release here.
v0.58.0
Welcome to first stable release of React Native of 2019! There are a number of significant changes in this version, and we'd like to especially draw your attention to them:
- Modernizing and strengthening flow types for core components
- Breaking changes to
ScrollView
,CameraRollView
, andSwipeableRow
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
Aside from those:
-
if you are an iOS developer, you'll need to manually link
JavaScriptCore.framework
when upgrading; this can be done via Xcode, and following the steps shown here. -
Android developers, please note that Android's target SDK 27 is supported. Work is still underway to land target SDK 28 support, and it will come soon.
Thanks to those who gave feedback during the release candidate phase. If you're interested in helping evaluate our next release (0.59), subscribe to the dedicated issue here.
Added
- Add support for
publicPath
to enable serving static assets from different locations (0b314960aa by @gdborton) - Add TouchableBounce now has a simple
bounce()
function that can be used to trigger a bounce without callbacks (7fe3f90156)
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
(e02a154787 by @stepanhruda) - Native Modules can now reject a promise with an additional
WritableMap
arg for extra properties (userInfo
). See the interface defined inPromise.java
for available methods. This is accessible in JavaScript asError.userInfo
. This is to match iOS's existingError.userInfo
behavior. 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 existingError.nativeStackIOS
support. See PR for examples. (#20940 by @Salakar)
iOS specific
- Add
moduleForName: lazilyLoadIfNecessary
to RCTBridge.h to lookup modules by name and force load them, plus various improvements to LazyLoading (d7a0c44590, 6534718a18, d7865ebde8, 04ea9762e2, 1f394fa673, 80f92adf1f, and 81b74ec1ed by @dshahidehpour, @fkgozali, and @mmmulani) - Add ability for WebView to
setClientAuthenticationCredential
whenuseWebKit={true}
for mutual TLS authentication (8911353c47 and 8911353c47 by @mjhu)
Changed
- Major improvements to Flow types for Core Components (499c195eba, fbc5a4f5e6, f9050e0908, 6476151717, c03fc4087f, 69213eea95, 136dfc8312, 3c0211b61a, c127000a7d, 636e146c4a, c3dea894bd, 35a65cd704, 79274979b7, 45c51835d6, a97d104b44, fb4825a2c6, 84c5416617, 3649a503cf by @mottox2, @saitoxu, @RSNara, @watanabeyu, @Tnarita0000, @exced, @nd-02110114, @flowkraD)
- Many public components were converted to ES6 classes (ScrollView by @thymikee, CameraRollView, SwipeableRow and ProgressBarAndroid by @exceed, ProgressViewIOS by @empyrical, SegmentedControlIOS, ToolbarAndroid by @nd-02110114
- Flow dependency is now at
v0.85.0
(adc8a33fcf by @samwgoldman) - metro dependency is now at
v0.49.1
(f867db366a, 88882951e1, 31bb551e75, de60e8643a, and de60e8643a by @alexkirsz and @rafeca) - jest dependency is now at
v24.0.0-alpha.6
(1b4fd64325, 66aba09251, and 06c13b3e06 by @rafeca and @rubennorte) - fbjs-scripts dependency is now at
v1.0.0
(#21880) (cdbf719307 by @jmheik) - folly dependency is now at
v2018.10.22.00
(a316dc6ec3, 287934dba9, and a70625abd7 by @Kudo and @radko93) - React is set to
16.6.3
now via sync for revisions 4773fdf...6bf5e85 (0cb59b5c23 and 073ad6a036 by @yungsters) - Clearer error messages when hot reloading (c787866d64 by @alexkirsz)
- Allow CxxModules to implement functions which take two callbacks (8826d8b233 by @acoates-ms)
Breaking Changes 💥
-
Public methods of components converted to ES6 classes are no longer bound to their component instance. For
ScrollView
, the affected methods aresetNativeProps
,getScrollResponder
,getScrollableNode
,getInnerViewNode
,scrollTo
,scrollToEnd
,scrollWithoutAnimationTo
, andflashScrollIndicators
. ForCameraRollView
, the affected methods are:rendererChanged
. ForSwipeableRow
, 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 ofcreateReactClass
that we decided to not preserve when switching over to ES6 classes. (you can refer to this example) -
Native Modules in Android now require
@ReactModule
annotations to access.getNativeModule
method on theReactContext
. This is how your updated Native Module should look like:// CustomModule.java // ... + import com.facebook.react.module.annotations.ReactModule; + @ReactModule(name="CustomBridge") public class CustomModule extends ReactContextBaseJavaModule { // ... @Override public String getName() { return "CustomBridge"; } // ... }
Android specific
- Optimize
PlatformConstants.ServerHost
,PlatformConstants.isTesting
, andPlatformConstants.androidID
for performance (2bf0d54f15, 339d9d3afb, and 9f9390ddfc by @stepanhruda, @fkgozali, and @axe-fb)
iOS specific
- Suppress yellow box about missing export for native modules (5431607c6d by @fkgozali)
Removed
- Remove
UIManager.measureViewsInRect()
(d6236796b2 by @shergin)
Fixed
- Fix potential UI thread stalling scenario from Yoga JNI bindings (2a8f6c3028 by @davidaurelio)
- Fix crash happening due to race condition around bridge cxx module registry (188cbb04ad, 188cbb04ad, and 188cbb04ad by @PeteTheHeat)
- Fix View and Text's displayName; show the specific name rather than generic "Component" (7a914fcef4 by @rajivshah3)
- Fix
react-native init --help
so that it doesn't returnundefined
(58732a88b6 by @ignacioola) - Fix
react-native --sourceExts
(ce860803a4 by @elyalvarado) - Fix accidental showing of Modal when
visible
prop is undefined or null (cc13a7367b by @MateusAndrade) - Fix crash during VirtualizedList pagination (5803772017)
- Fix scenario where removing a module with remote debugging and Delta bundles may cause incorrect stack traces (bea57d871f by @alexkirsz)
- Fix regression in StyleSheet
setStyleAttributePreprocessor
(04085337bc by @brentvatne) - Fix React Native AsyncMode and DevTools (aacb06c594 by @bvaughn)
Android specific
- Fix crash when removing root nodes (b649fa96a0 by @ayc1)
- Fix various ReactInstanceManager deadlocks and race conditions (df7e8c64ff, df7e8c64ff, and be282b5287 by @ayc1)
- Fix IllegalArgumentException when dismissing ReactModalHostView and DialogManager (e57ad4ee37 and 38e01a20c3 by @mdvacca)
- Fix incorrect merged asset path with flavor for Android Gradle Plugin 3.2 (e90319e9fa by @yatatsu)
- Fix HTTP connection ontimeout callback (a508134724)
- Fix websocket properly closing when remote server initiates close (2e465bca15 by @syaau)
- Fix compatibility issue for Android 16 device (5939d078a0, f22473e9e9, and f22473e9e9 by @gengjiawen)
- Fix issue where
Image.resizeMode
isn't respected while source is loading, resulting in unexpected padding (673ef39561 by @dulmandakh) - Fix Android 28's inverted ScrollView so that momentum is in the proper direction (b971c5beb8 by @mandrigin)
- Fix HTTP connection timeout callback to be appropriately called (a508134724)
- Fix compatibility issue with Android 16 device (5939d078a0 by @gengjiawen)
- Fix crash when releasing RN views and removing root nodes(83405ff316 and b649fa96a0 by @ayc1)
- Close websocket properly when remote server initiates close (2e465bca15 by @syaau)
- Workaround a wrong fling direction for inverted ScrollViews on Android P (b971c5beb8 by @mandrigin)
- Fix Image to respect
resizeMode
fordefaultSource
images rather than showing padding while loading (673ef39561 by @dulmandakh)
iOS specific
- Fix case where content of inline views didn't get relaid out (798517a267 by @rigdern)
- Fix issue with ImagePickerIOS's inconsistent image when using the front-facing camera (4aeea4d2dc)
- Fix race condition and crash around shutdown of the JSC for iOS 11 and earlier (bf2500e38e by @mhorowitz)
- Fix crash in NetInfo's _firstTimeReachability (eebc8e230a by @mmmulani)
- Fix case where inline view is visible even though it should have been truncated (70826dbafc by @rigdern)
- Fix crash with ScrollView related to content offsets (585f7b916d by @shergin)
- Fix an issue where CameraRoll wasn't showing the front-facing camera consistently during capture and preview (4aeea4d2dc)
- Fix case where inline view is visible even though it should have been truncated (70826dbafc by @rigdern)
Known issues
It is possible that you'll face an AAPT error regarding missing resources, here is an example of this error, in this case, you should try to update the build tools versions to buildToolsVersion = "28.0.2"
in your android/build.gradle file. If you maintain a react-native library which uses native code you should avoid using hardcoded versions of the build tools and use the packaged version numbers, here is an example you can follow
v0.57.8
NOTE WELL: when you upgrade to this version you NEED to upgrade react
and react-test-renderer
to version "16.6.3"
.
Thanks everyone who contributed code or participated in the discussion for cherry-picking commits - you can participate to the decision process for the next release here.
Added
- Fix: Add displayName to ActivityIndicator (#22417) (53da585832)
Changed
- Switch: Improve Accessibility (0c8db08f51 by @yungsters)
- React sync for revisions 3ff2c7c...6bf5e85 (073ad6a036 by @yungsters)
iOS specific
- Extend reason message for
RCTFatalException
(#22532) (2831d9ef61 by @zackzachariah)
Removed
- Remove trailing slash from origin header if no port is specified (#22290) (cbe7d41f3f)
Fixed
- Fix text alpha bug (fd78eee11b by @necolas)
- fix possible NPE in StatusBarModule (0f3be77b7d by @mdvacca)
- Fixes animated gifs incorrectly looping/not stopping on last frame (#21999) (de759b949e by @staufman)
- Fix ListEmptyComponent is rendered upside down when using inverted flag. (#21496) (198eb02697 by @hyochans)
- Fix bug in comparison logic of object property (#22348) (c3b3eb7f73 by @vreality64)
- Fix dispatch of OnLayout event for first render (844e11967d by @mdvacca)
- KeyboardAvoidingView: Duration cannot be less then 10ms (#21858) (87b6533937)
- default hitSlop values to 0 (#22281) (f6d3a61677 by @Taylor123)
iOS specific
- Fixed for supporting mediaPlaybackRequiresUserAction under iOS 10. (#22208) (c45d290b07 by @ifsnow)
- Use main.jsbundle in iOS template for production build (#22531) (a2ef5b85d8 by @radeno)
- Use relative path for SCRIPTDIR (#22598) (0314fca63a by @sunnylqm)
- Fix UIScrollView crash (585f7b916d by @shergin)
- Avoid using
-[UITextView setAttributedString:]
while user is typing (#19809) (f77aa4eb45)
Security
- Bump ws package to 1.1.5 due to vulnerability issues (#21769) (96ce6f9538 by @prog1dev)
v0.57.7
NOTE WELL: when you upgrade to this version you NEED to upgrade react
and react-test-renderer
to version "16.6.1"
.
This patch release fixes version 0.57.6 about losing focus in TextInput
because of ada7089066.
Thanks everyone who contributed code or participated in the discussion for cherry-picking commits.
v0.57.6
INFO NOTE: It's highly recommended that you skip this version and upgrade to 0.57.7.
NOTE WELL: when you upgrade to this version you NEED to upgrade react
and react-test-renderer
to version "16.6.1"
.
This patch release fixes a number of crashes, resolves build issues (both for iOS and Android). Thanks everyone who contributed code or participated in the discussion for cherry-picking commits.
Added
iOS specific
- Add iOS 12 textContentType options (#21079) (644fc57fad by @ultramiraculous)
Removed
- Remove useless additional blur call (#22156) (ada7089066)
Fixed
- Improving Modal
visible
prop check to handle undefined and null (#22072) (cc13a7367b by @MateusAndrade) - Fix crash in nativeInjectHMRUpdate (#22412) (0b4fd621e3 by @vovkasm)
- Fix IllegalArgumentException when dismissing ReactModalHostView (e57ad4ee37 by @mdvacca)
- Fix regression in StyleSheet.setStyleAttributePreprocessor (#22262) (04085337bc by @brentvatne)
- Fix React Native AsyncMode and DevTools (f41383fb6d by @bvaughn)
- CxxReact: Silence 'unused lambda capture' warnings in open-source (#22240) (0c0540965a by @empyrical)
Android specific
- Fixed HTTP connection timeout on Android (#22164) (a508134724)
- resizeMode applies to Image.defaultSource (#22216) (673ef39561 by @dulmandakh)
- Android: Close websocket properly when remote server initiates close (#22248) (2e465bca15 by @syaau)
- Workaround a wrong fling direction for inverted ScrollViews on Android P (#21117) (b971c5beb8 by @mandrigin)
- Fix crash when releasing RN views (83405ff316 by @ayc1)
iOS specific
- iOS: Support inline view truncation (#21456) (70826dbafc by @rigdern)
- NetInfo: try to solve crash with releasing _firstTimeReachability (eebc8e230a by @mmmulani)
- Generate ip.txt before SKIP_BUNDLING check (#20554) (9c1ea45d38 by @keatongreve)
- Revert [Performance improvement for loading cached images on iOS ] (7eeb305933 by @kelset)
- Fix inability to remove 'Disabled' state from AccessibilityStates (5eaa2d29c0)
v0.57.5
NOTE WELL: when you upgrade to this version you NEED to upgrade react
and react-test-renderer
to version "16.6.1"
.
This patch release fixes a number of crashes, resolves build issues (both for iOS and Android), and brings React to v16.6.1. Thanks everyone who contributed code or participated in the discussion for cherry-picking commits.
Changed
- React is now at v16.6.1 (8325e09e5c and 76c99f20e3 by @yungsters)
iOS specific
- Performance improvement for loading cached images (54f7eb3424 and 3a98318c91 by @esamelson and others)
Fixed
- Fix crash in VirtualizedList during pagination (5803772017)
- Fix polyfilling of regeneratorRuntime to avoid setting it to undefined in some situations (2a7e02edf6 by @rafeca)
- Fix View, Text, and ActivityIndicator's
displayName
(7a914fcef4 and 53da585832 by @rajivshah3 and others) - Fix crash that happens when a component throws an exception that contains a null message (6debfdf6d6 by @mdvacca)
Android specific
- Fix incorrect merged asset path with flavor for Android Gradle Plugin 3.2 (e90319e9fa by @yatatsu)
- Fix crash in ReadableNativeArray.getType when size of ReadableNativeArray's length > 512 (09c78fe968 by @dryganets)
iOS specific
- Fix crash in rapid use of NetInfo.getCurrentConnectivity (67afaefa78 by @mmmulani)
- Fix Xcode 10 errors relating to third-party (277c19c93e by @mmccartney)
- Fix build errors when path to
$NODE_BINARY
contains spaces (7d4e94edcc by @sundbry) - Fix case where content of inline views didn't get relaid out (798517a267 by @rigdern)
- Fix InputAccessoryView's safe area when not attached to a TextInput (2191eecf54 by @janicduplessis)
v0.57.4
NOTE WELL: when you upgrade to this version you NEED to upgrade react
and react-test-renderer
to version "16.6.0-alpha.8af6728"
(next version, 0.57.5, will update to 16.6.0
, and it will come soon). Also, please check the Known issues section below, especially if you are using Xcode 10.
Thanks to everyone that contributed to the discussion for cherry-picking the commits that landed in this release, and the developers who submitted those commits!
Added: new features
Android specific additions
- Android textTransform style support (22cf5dc566 by Stephen Cook)
Changes: existing functionality that is now different
- Add deprecation notice to SwipeableListView (99471f87b9 by @TheSavior)
Android specific changes
- Consolidate native dependencies versions (ba608a2db7 by @dulmandakh)
- bump okhttp3 to 3.11 (10fc548809 by @dulmandakh)
- Android: Send
<Text>
metrics in onTextLayout events (737f93705c by @mmmulani) - Use TextLegend example in Android as well (335927db44 by @mmmulani)
iOS specific changes
- Bump xcode@1.0.0 (b9514995a2 by @peat-psuwit)
- Text: send metrics after rendering (iOS) (737f93705c by @mmmulani)
- Allow specifying iOS version for run-ios with simulator option (0fab27cbac by @elyalvarado)
- Relax the requirement that lazy module cannot be initialized on the main thread (dbc864c9cd by @spredolac)
Fixed: bugs that have been resolved
- Fix crashes on invalid regex (298f14da12 by @RSNara)
- Fix pull to refresh refresh component clipping on Android (8a3a0ad2d0 by Andy Huang)
- ListView requestAnimationFrame leak (70b5eb3aa2 by @exced)
Android specific fixes
- reverted Update bad method
- Fix accessibility role crash (1f96ff62cf by Haseeb Saeed)
- Fix accessibilityRole value lookup (1f96ff62cf by @ayc1)
- Fix DynamicFromMap object pool synchronization (b0d68c0bb9 by @haitaoli)
- Back out "[react-native][pr] Rounded corner rendering fixed on Android N." (bb407fa1ec by Jonathan Lee)
- Fix onTextLayout metrics on Android when using alignText (1c240ae898 by @mmmulani)
- Cleaning up imports in ViewGroupManager (082a869dae by @mdvacca)
iOS specific fixes
- Fix issue when inserting text at 0 when maxLength is set (17415938c7 by @ejanzer)
Known issues
There are a few issues that don't have a finalized solution (as it happens for 0.x projects). In particular:
-
when using Xcode 10 and
react-native init
, your build may fail due to third-party build steps (#20774). There is a commit we are planning to cherry pick in a future release that should help - in the meantime, you should be able to run these commands from the project folder to fix the issue (you should need to do it only once per project):cd node_modules/react-native scripts/ios-install-third-party.sh cd third-party/glog-0.3.5/ ../../scripts/ios-configure-glog.sh
-
React
16.6.0
works for the most part, aside from the Context API (check this issue) - and if you are eager to test the new React Hooks you will have to be patient, as they are not production ready and16.7.alpha
is not yet supported by React Native.
v0.57.3
NOTE WELL: when you upgrade to this version you NEED to upgrade react
and react-test-renderer
to version "16.6.0-alpha.8af6728"
. Also, please check the Known issues section below, especially if you are using Xcode 10.
Thanks to everyone that contributed to the discussion for cherry-picking the commits that landed in this release, and the developers who submitted those commits!
Added: new features
- Expose enableBabelRuntime config param externally (89a358f347 by @rafeca)
Android specific additions
- Add test for InterpolatorType (b7526b2095 by @ejanzer)
Changes: existing functionality that is now different
- React sync for revisions ade5e69...d836010 (fa6035bda6 by @yungsters)
- React: Bump Canary Version (8258b6a280 by @yungsters)
- FBJS: Upgrade to ^1.0.0 (ee034596fe by @yungsters)
- Bump metro@0.48.1 (bf47589b8b by @rafeca)
- Update to Detox 9 (15c05988e9 by @kelset)
- Add Deprecation Warning to ListView (e90f5fa263 by @TheSavior)
- Deprecate legacyImplementation of FlatList (3aa8f09b44 by @TheSavior)
Android specific changes
- bump Android NDK to r17c (436cf154bb by @dulmandakh)
- Resolve protocol http, https when not in lowercase (d00bdb9bb8 by @hyunjongL)
- Normalize scheme for URL on Android (4b6f02ea75 by @radeno)
iOS specific changes
- Bump up the buffer size and show a warning if the trace might be truncated (1fc8a46570 by @alexeylang)
Fixed: bugs that have been resolved
- Fix deprecation warning message in Switch (997f382adc by @radko93)
Android specific fixes
- Fix default accessibility delegate (fa6035bda6 by @ayc1)
- Fix accessibility role/label (fa6035bda6 by @ayc1)
- When converting arguments JS->Java, handle integers correctly (bb9b9a8b9d by @mhorowitz)
- Fix CameraRoll.getPhotos() crash on Android if device has a problematic video asset (4768bea0cf by @naxel)
- Android ScrollView fix for snapToInterval not snapping to end (6eeff75849 by @olegbl)
- Fix for InterpolatorType crash (01a1004808 by @ejanzer)
- Update bad method (1592a8d424 by @grabbou)
iOS specific fixes
- Dealloc first time RCTNetInfo reachability callback (e7e63fd409 by @mmmulani)
- iOS: fix the baseline issue when displaying a mixture of different-language characters (c1561ab441 by @BingBingL)
- Fix artifacting on RN-drawn borders with asymmetric radii (9e6522374b by @jamesreggio)
- check isAvailable key on simulator object (1031872784 by @antonychan)
- ios-simulator: change default iphone version (6d09df5b72 by Vitor Capretz)
Known issues
There are a few issues that don't have a finalized solution. In particular, when using Xcode 10 and react-native init
, your build may fail due to third-party build steps (#20774). There is an open pull request which we are testing and hope to land soon (#21458). In the meantime, you can find a workaround here: https://github.com/facebook/react-native/issues/20774.
v0.57.2
Thanks to everyone that contributed to the discussion for cherry-picking the commits that landed in this release, and the developers who submitted those commits!
Added: new features
Android specific additions
- Android subpixel text (65e4e674fc by @kevinresol)
Changes: existing functionality that is now different
- ReactScrollView should account for
overflow: scroll
(201f2f189f by @mcolotto) - bump metro 0.47.0 (4750f52b34 by @rafeca)
- Use babel runtime instead of relying on global babelHelpers and regenerator (36033bd0ed by @janicduplessis)
- React: Upgrade to react-devtools@^3.4.0 (25119f95c8 by @yungsters)
- Change new Date() to Date.now() to save on date allocations (bbb2d9a5b3 by @dulinriley)
- Make config object read-only (2c1057062e by @rafeca)
- Cleanup the transformer flow types (28dedfb6d6 by @rafeca)
- bump metro 0.47.1 (12ab08a5aa by @rafeca)
Android specific changes
- Android ScrollView support for
overflow: visible
(4af4da9089 by @olegbl) - Expose a getter for overflow setting in ReactViewGroup (02ad56f541 by @kmagiera)
- Add workaround for Android Gradle Plugin 3.2 change to asset dir (ff084a4e80 by @edilaic)
Fixed: bugs that have been resolved
- Fix HEAD request failing with
Invalid response for blob
(7e9c3f77cc by @anthonyhumphreys) - Check if child view != null before dropping (af181fb192 by @chrusart)
Android specific fixes
- Fix event handlers for DPad arrows on Android TV (4d71b1525d by @krzysztofciombor)
- Rounded corner rendering fixed on Android N (748cf82c97 by @dryganets)
- Android: fix cookies lost on Android 5.0 and above (ea53727e16 by chenwenyu)
- allow zero offset when shadow radius is nonzero (97f0e43710 by Timothy Kukulski)
- Android ScrollView fix for pagingEnabled (e0170a9445 by @olegbl)
Removed: features that have been removed; these are breaking
- Remove global babelHelpers and regenerator (458d56c0a1 by @janicduplessis)
- Remove overflow hidden killswitch (59aada873e by @ayc1)
- Remove absolute path parameter from transformers (2e0d5c87e9 by @rafeca)
v0.57.1
We are trying, for 0.57, to approach it as a version with a longer "support", while waiting for some features to land that will allow for 0.58 to be cut.
Thanks to everyone that contributed to the discussion for cherry-picking the commits that landed in this release, and the developers who submitted those commits!
Added: new features
- Expose AllowFileAccess property in WebView (0c576ef84a by @mdvacca)
iOS specific additions
- Expose scrollEnabled as iOS prop for TextInput (b9c28c236b by Chun Chen)
Changes: existing functionality that is now different
- Give RNPM the ability to look for plugins in
@Scoped
modules (4b106be477 by empyrical) - Upgrade babel-eslint to 9.0.0 (44dc283bcd by @rafeca)
- bump metro 0.45.6 (7bac0565e8 by @rafeca)
iOS specific changes
- Making RCTIsIPhoneX() return true for the R and Max models (5e7c3ca005 by @shergin)
- Way to register RCT_MODULE in Plugin2.0 instead of +load (5c160e5ded by Jeff Thomas)
- Update RCTLinkingManager.h to explicitly state the 'nullability' of parameters (2271d1f912 by Warren Knox)
Fixed: bugs that have been resolved
- Pass the maxWorkers config param correctly to Metro (7a69f1aa27 by @rafeca)
- Fix ignored --projectRoot/watchFolders arguments ((9fca769e76 by @oblador)
- Debug only code were leaking into release builds on iOS. ((d1ff0b0cc5 by @dryganets)
iOS specific fixes
- Fix RCTNetInfo first time connection status (e7e63fd409 by @karanjthakkar)
Removed: features that have been removed; these are breaking
iOS specific removals
- Removing development team from Xcode project (8103c431c8 by @hramos)
v0.57.0
Welcome to the 0.57 release of React Native! This release addresses a number of issues and has some exciting improvements. We again skipped a monthly release, focused on quality by extending the release candidate phase, and let some upstream packages reach stable for inclusion.
This release includes 599 commits by 73 different contributors! In response to feedback, we've prepared a changelog that contains only user-impacting changes. Please share your input and let us know how we can make this even more useful, and as always let us know if you have any feedback on this process.
Highlights
New features
- Accessibility APIs now support accessibility hints, inverted colors, and easier usage of defining the element's role and states; read more at @ziqichen6's excellent blog post
- On iOS,
WKWebView
can now be used within theWebView
component; read more at @rsnara's awesome blog post - Better support for out-of-tree platforms. For details, please refer to the discussion that the community used to get this up and running (there will be a new page in the docs dedicated to it too) - huge props to @empyrical for working on this!
Tooling updates
- Android tooling has been updated to match newer configuration requirements (SDK 27, gradle 4.4, and support library 27); building with Android plugin 3.2 doesn't work due to the gradle scripts, so please stay on Android Studio 3.1 for now
- Support Babel 7 stable landed! Be sure to read here about using TypeScript and check out the Babel 7 migration guide for help migrating.
- Metro has been upgraded (with Babel 7 and better transformer support), and in the next major release we plan on having two new features (ram bundles and inline requires) optional for you all to use - you can read how it will happen here; moreover, if you have a custom packager config, we recommend you read also the "updating to this version" section.
- Flow, React, and related packages have also been updated; this includes working support for the React Profiler.
The Slimmening is happening
As mentioned a few times in the past, the core team is reviewing the repository to trim it to the base React Native features in order to make the whole ecosystem more maintainable (by using a divide-et-impera approach, the community will move faster and enable pull requests to be reviewed and merged quicker). This change requires extracting some components into their own separate repos and removing old, unused code (details here).
0.57 is not directly affected by any changes, but we want you to know that:
WebView
will be moved to its own repo at react-native-community/react-native-webview. There is already a base implementation there. Help us out by giving that a try, and expect thatWebView
will be deprecated soonNavigatorIOS
will be fully removed from the main codebase starting 0.58.0 (via this commit); it is now deprecated
Updating to this version
-
Upgrade the version of React Native in the
package.json
from0.56.0
to0.57.0
, and the React version to16.5
-
Change the babel-preset dependency from
"babel-preset-react-native": "^5",
to"metro-react-native-babel-preset": "^0.45.0",
, then change the.babelrc
configuration to:{ "presets": ["module:metro-react-native-babel-preset"] }
-
Ensure that you have all the babel dependencies to version
^7.0.0
(you may also need to add"babel-core": "7.0.0-bridge.0"
as a yarn resolution to ensure retro-compatibility). The Babel team has released a tool, babel-upgrade, that should help you in this migration. -
Upgrading android gradle version to 4.4
- In your project's
android/gradle/wrapper/gradle-wrapper.properties
file, change thedistributionUrl
tohttps\://services.gradle.org/distributions/gradle-4.4-all.zip
- In
android/build.gradle
file addgoogle()
right abovejcenter()
in bothbuildscript
andallprojects
repositories. Then change Android build tools to version 3.1.4classpath 'com.android.tools.build:gradle:3.1.4'
- In
android/app/build.gradle
file update all yourcompile
statements to beimplementation
, e.g.implementation 'com.facebook.fresco:animated-gif:1.10.0'
- Do note that when running your app from within Android Studio, you may encounter
Missing Byte Code
errors. This is due to a known issue with version 3.1.x of the android tools plugin. You'll need to disable Instant Run to get past this error.
- In your project's
-
If you have a custom packager configuration via
rn-cli.config.js
, you probably need to update it to work with the updated Metro configuration structure (for full detail refer to Metro's documentation); here are some commonly encountered changes torn-cli.config.js
:-const blacklist = require('metro/src/blacklist') +const blacklist = require('metro-config/src/defaults/blacklist') // ... module.exports = { + watchFolders: alternateRoots, + resolver: { + blacklistRE: blacklist + }, + transformer: { + babelTransformerPath: require.resolve('./scripts/transformer.js'), + }, - getProjectRoots() { - return [ - path.resolve(__dirname), - ].concat(alternateRoots) - }, - getBlacklistRE() { - return blacklist; - }, - transformModulePath: require.resolve('./scripts/transformer.js'), }
-
Run
yarn
to ensure that all the new dependencies have been installed
Added: new features
- Add .nvmrc and ensure node version required is compatible with ESLint 5 (30b9d81087 by @slorber)
- Major improvements to accessibility features (48b3d1322b, b5b704dc19, c36e8b3307, 40f6998b67, c1d0ccde0f, 5eaa2d29c0, 10b603fdd3, d9eeae91a0, 3cfa7ae698, 5acb7211bb, 5741f77156, d0b86ecb4f, e739143809, c27b495a89, 5aa040dfb7, 03036f79f7, 3bedc78a35, ca01290d8e, 121e2e5ca6, 1bc52267f5, 48b3d1322b, ef3d8b23c3, ef3d8b23c3, 50e400128e, and f39d0923c7 by @ziqichen6)
- Add
YogaNodeProperties
implementation based onByteBuffer
(0c97e75dfe and 23657ccf5b by @davidaurelio) - Add
FlatList
andSectionList
to Animated exports (daa7c78055 by @yunyu) - Adding new styling props to
FlatList
/VirtualizedList
forListHeaderComponent
andListFooterComponent
(a2675ced4e) - Added more info to Module Registry systraces (c7fdd2701f by @axe-fb)
- Added support for out-of-tree platform plugins via a new
haste
field inpackage.json
; read more in the docs entry (03476a225e by @empyrical) - Added
snapToOffsets
toScrollView
and made a number of fixes tosnapToInterval
as well (fd744dd56c by @olegbl)
Android specific additions
- Allow registering custom packager command handlers (b3ef1c3a56 by @fkgozali)
- Implement
AccessibilityInfo.setAccessibilityFocus
for Android (be715ec705 by @draperunner) - Add Support for
overflow
style property (b81c8b51fc and bbdc12eda7by @yungsters)
iOS specific additions
WebView
can now useWKWebView
internally if you passuseWebKit={true}
(7062e5bdb5, 1442c265da, 3703927e7e, 7a6dd9807c, e5f95aba9b, 1741fe9571, 90e85a4adc, 0022354525, 03b57d9db6, 1584108805, a997c0ac16, 4ca949b46e, 721763020a, 1af17f1648, 215fa14efc, bacfd92976, 95801f1eda, b18fddadfe, 28b058c341, and 78fcf7c559 by @rsnara)- Add
accessibilityHint
for iOS (253b29dbd8 by @draperunner)
Changes: existing functionality that is now different
- [BREAKING] In the CLI,
unbundle
is nowram-bundle
(ebf5aeab28 by @jeanlauliac) - Bump minimum Node version to 8.3 (#20236) (e64e13fce3 by @hramos)
- Updated React (70913a4623, b7bb25fe4c, and 672528ffde by @acdlite, @hramos, and @yungsters)
- Upgrade Flow to v0.76.0 (eac34e3021 by @gabelevi)
- Upgrade jest to 23.4.1 (51cf9eb3e8 by @rafeca)
- Upgrade babel-eslint to v9.0.0-beta.2 with better support for Flow (abf1188de2 by @rubennorte)
- Upgrade ESLint to 5.1.0 (0f2f0cad41 by @rubennorte)
- Upgrade Babel to v7.0.0 (b9d1c832b0, 724c7498b6 by Peter van der Zee, and bf8e1b4ffa by @rubennorte and @rafeca)
- Metro is now at v0.45.0 (169d6839bb, bda84a32d0, 877212e18c, 169812f9ce, cfeb60c19b by @CompuIves and @rafeca)
- Hide pre-bundled notification when not on dev mode (edf71005b5 by @yancouto)
- Refined
StyleSheet.compose
Flow Type (50a481d23a by @yungsters) - Catch JS bundle load failure and prevent calls to JS after that (201ba8c69d by @fkgozali)
- Use new Metro configuration in react-native cli (a32620dc3b and aaf797ad67 by @CompuIves)
- Whitelist
react-native-dom
in haste/cli config defaults (c4bcca6685 by @vincentriemer) - In the CLI, don't override
metro.config.js
settings (c5297c75cb by @rozele)
Breaking Changes
- Public methods of Image (
blur
,focus
,measure
,measureInWindow
,measureLayout
,setNativeProps
) are no longer bound to the image component instance. Therefore, it is unsafe to pass these methods by reference (i.e: as callbacks) to functions. So, things likesetTimeout(this._imgRef.focus, 1000)
will no longer work. Please instead do:setTimout(() => this._imgRef.focus(), 1000)
.
Android specific changes
Image
source without a uri now returns null (28c7ccf785 by @himabindugadupudi)targetSdkVersion
is 26 (bfb68c09ee by @dulmandakh)- Upgrade NDK to r17b (6117a6c720 by @dulmandakh)
- Upgrade NDK toolchain to 4.9 (ccdd450b12 by @dulmandakh)
- Upgrade Android Support Library to version 27.1.1 and set compileSdkVersion to 27; buildToolsVersion comes along for the ride, too (874cca1ac2 and 044b399e65 by @dulmandakh)
- Upgrade Android gradle plugin to 3.1.4, Gradle wrapper to 4.4 (6e356895e7 and 33d20da41b by @gengjiawen and @dulmandakh)
- Upgrade to soloader 0.5.1 (b6f2aad9c0 by @gengjiawen)
- Upgrade mockito to 2.19.1 (3ea803a814 by @dulmandakh)
- Upgrade glog to 0.3.5 (b5fca80605 by @dulmandakh)
Fixed: bugs that have been resolved
- Fixed builds on Windows machines (3ac86c366c by @rafeca)
- Fixed building tvOS (1f1ddd0261)
- Fixed
TextInputState
'scurrentlyFocusedField()
(b4b594cec1 by @janicduplessis) <VirtualizedList>
fix for jumpy content wheninitialScrollIndex
specified (e0c73633cf by @rbrosboel)- Fix local-cli assetRegistryPath and middlewares (f05943de0a by @janicduplessis)
- Fix issue with when all are
flexGrow
andflexShrink
set to 0 except for one (90a408ea6f by @priteshrnandgaonkar) - Fix react-native CLI's debugger UI path and metro host/port arg usage (5067540487 by @Kureev)
- Hotfix to include
react-native-windows
in hasteImpl accepted paths (54942746d4 by @rubennorte) - Fix some classes of incorrect Flow errors for
Animated
(db2159d0b3 by @yunyu) - Fixed a typo in DockerTests.md (c1831d50cf by @kant)
- Fix invalid use of destructuring in jest preprocessor (9d5bd50737 by @umairda)
- Fixed a CLI crash when using old versions of node (e61176d650 by @keksipurkki)
Android specific fixes
- Fix issue with AsyncStorage not behaving properly on Android 7+ (1b09bd7fba)
- Fixed extreme
<TextInput>
slowness (5017b86b52 by @gnprice) - Fixed
<TextInput>
placeholder not being completely visible (84022321c4 and 86f24ccf71 by @jainkuniya) - Fix Horizontal
<ScrollView>
's scroll position during layout changes with RTL content (de573277bf) - Fix Horizontal
<ScrollView>
overflow issue (d5465a9a0a) - Fixing crash on SDK 15 on ReactTextInputLocalData (1bb2bead8b)
- Fix Drawing Rect for ReactScrollView (6a16bec882 by @yungsters)
- Fixed NoSuchKeyException Thrown From ReadableNativeMap bysafely unwrapping ReadableMap by defaulting to 0 if key not present (1a6666a116 by @Bhavik-P)
- Fixed runAndroid to enable the use of a package on port <> 8081 for Windows (3cd0737fe2 by @ihenshaw)
- Don't crash on upload retry when trying to fetch on a varying quality network (79fe925f1d by @dryganets)
iOS specific fixes
- Fix
TextInput.clear()
andTextInput.setNativeProps({text: ''})
to work (2307ea60d0 by @magicien) - Correct fishhook import in RCTReconnectingWebSocket (75a0273de2)
- Change in RCTImagePickerManager to handle crashes if height/width is nil (82af7c989b by @abhi06276)
- Fix controlled
<TextInput>
on iOS when inputting in Chinese/Japanese (892212bad2 by @mmmulani) - Fixed
<ScrollView>
bug encountered with brownfield apps (fab5fffbb3 by @PeteTheHeat) - Fixed missing selection indicator lines on
<PickerIOS>
(e592d6f8c7 by @VSchlattinger) - Fix crash in RCTImagePicker on iOS (934c50fbe0 by @mmmulani)
- Fix
undefined_arch
error received when building in Xcode 10 beta (e131fffb37 by @futuun) - Add support for connecting to the Packager when running the iOS app on device when using custom Debug configuration (079bf3f206)
- Fixed RCTAnimation import for integrating with cocoapods (eef8d47a37 by @LukeDurrant)
Removed: features that have been removed; these are breaking
- [BREAKING] Removed
ScrollView.propTypes
; use flow or typescript for verifying correct prop usage instead (5b6ff01764 by @sahrens)
Android specific removals
ReactInstancePackage
is now deprecated; use@link ReactPackage
or@link LazyReactPackage
(b938cd524a by @axe-fb)
v0.56.0
Welcome to the June 2018 release of React Native! Over 60 contributors made 821 commits since March - and we are extremely grateful to every single one of you.
As you'll see in a second, this new version has some important breaking changes that required a lot of extra efforts to bring to a stable 0.56. This was the main reason behind skipping April and May from the monthly release cycle, but looking forward we are planning on going back to do a rollout every month.
Highlights
React Native now uses Babel 7
When upgrading to 0.56, make sure to bump your babel-preset-react-native
package.json
dependency to 5.0.2
or newer (but still as fixed value).
React Native library authors will need to update their libraries to make use of the updated Babel preset as Babel 7 is not backwards compatible.
If you have issues upgrading to Babel 7, please double check the related documentation, in particular the sections related to Package Renames and Scoped Packages.
The babel-bridge
library may be used if you need to use libraries that have not yet upgraded to Babel 7. You may also enforce the Babel 7 dependency via tools like yarn resolutions. Overall, you need to ensure all the @babel/*
deps are fixed at version 7.0.0-beta.47
.
Node 8 is now the minimum required version
Trailing commas are now allowed.
iOS 9 is now the minimum required version
Any device that can run iOS 8, can upgrade to iOS 9. Developers who support iOS 8 in their apps may continue doing so as this is a Xcode-level setting (IPHONEOS_DEPLOYMENT_TARGET
).
Xcode 9 is now the minimum required version
We recommend using Xcode 9.4 as that is what we use to run our tests.
Android projects are now compiled using the Android 26 SDK
The target API level is left unchanged in this release.
Starting August 2018, new apps submitted to the Play Store will need to target API 26 as a minimum. You can now opt your project in to use API 26 (or newer) as the target. Please let us know about any issues, as we'd like to finalize support for Android API 26 by the time 0.57.0
is released.
WebView
will only load http(s) URLs by default
Geolocation is disabled by default.
Consistently Throw for <Text><View /></Text>
Removes a pitfall that people may run into when releasing an app for Android if the bulk of the testing has been performed on iOS only. Nesting a <View>
within a <Text>
component (e.g. <Text><View /></Text>
) is unsupported on Android, but using this pattern on iOS has not thrown errors in the past. With this release, nesting a <View>
inside a <Text>
will now throw an error on iOS in order to reduce the parity gap between the platforms.
Flow improvements, migrating away from PropTypes
Added Flow types for several components.
We're migrating away from PropTypes and runtime checks and instead relying on Flow. You'll notice many improvements related to Flow in this release.
- Fix project settings warnings on newer Xcode versions, remove unnecessary console logging.
- Modernized
YellowBox
. Sort warnings by recency, group warnings by format string, present stack traces, show status of loading source maps, support inspecting each occurrence of a warning, and bug fixes. - Prettier files!
- Lots of bug fixes.
State of React Native
Heads-up: the Facebook internal team is currently working on a rewrite of some core architecture pieces. This is a work in progress and we do not expect it to be ready for use in open source quite yet, but we felt the need to let you know what those commits mentioning Fabric are about.
Added: new features
- Update
babelHelpers
with Babel 7 support (fbd1beaf66) FlatList
is now Strict Mode compliant (a90d0e3614)- Enable
?.
optional chaining operator plugins (aa6f394c42) - Support
flexWrap: 'wrap-reverse'
(d69e55060f) - Add prop type
accessibilityTraits
toText
(654435d1ed) - Add devDependencies support for templates (c4ab03a18e)
- Add support for springDamping in
SpringInterpolator
(1dde989919)
Android specific additions
- Add support for build.gradle with CRLF for use with
react-native link
(843cfc3b20) - add decimal pad to android (75e49a0637)
- Add a way to dismiss PopupMenu elements (353c070be9)
- Implement
Image.defaultSource
(b0fa3228a7) - Support Image resizeMode=repeat (0459e4ffaa)
- Yoga: Add back deprecated
getParent
methods for non-breaking API change (c3c5c3cbce)
iOS specific additions
- Run tests using Xcode 9.4 and iOS 11.4 (c55bcd6ea7)
- Add support for Homebrew-installed Node (0964135a17)
- Add textTransform style support (8621d4b797)
- Add docs for Swift usage to
RCTBridgeModule.h
(ca898f4367)
Changes: existing functionality that is now different
- Upgrade React Native to Babel 7 (f8d6b97140)
- New projects created using
react-native init
will use Babel 7 (e315ec9891) - Restrict
WebView
to only http(s) URLs: (634e7e11e3, 23f8f7aecb) - Node 8 is now the minimum required version (c1e6f27823)
- Upgrade React to v16.4.1, sync React Renderer to revision ae14317 (c749d951ad)
- Update new project template's Flow config to fix
Cannot resolve module X
isse due to removal of@providesModule
(843a433e87) - Upgrade Flow to v0.75 (3bed272a62, bc2f12c68c, 6264b6932a)
- Upgrade Flow definitions (f8b4850425)
- Upgrade Prettier to v1.13.6 (29fb2a8e90, bc2f12c68c)
- Upgrade Jest to v23.2.0 (536c937269, bc2f12c68c)
- Upgrade Metro to v0.38 (d081f83a04)
- Modernized
YellowBox
(d0219a0301) - Disallow requiring from invariant/warning (521fb6d041)
- Remove native prop type validation (8dc3ba0444)
- Add
$FlowFixMe
to invalid prop accesses where Flow wasn't complaining before (f19ee28e7d) - Create Flow props for
Image
(8bac869f5d) - Flow type for
SegmentedControlIOS
(113f009698) - Flow type for
ProgressViewIOS
(c87701ba05) - Flow type for
PickerIOS
(1c66cdc7e8) - Flow type for
Switch
(06052a2330) - Flow type for
Slider
(cbe045a95f) - Flow type for
RefreshControl
(891dfc3da4) - Flow type for
ListView
(4b1ecb6204) - Flow type for
TextInput
(c8bcda8150) - Flow type for
TouchableBounce
(8454a36b0b) - Flow type for
TouchableOpacity
(44743c07ad) - Flow type for
TouchableHighlight
(f0c18dc820) - Flow type for
TouchableWithoutFeedback
(0b79d1faa2) - Flow type for
ScrollView
(b127662279) - Flow type for
DatePickerIOS
(97e572ea6d) - Flow type for
KeyboardAvoidingView
(188b118b60) - Flow type for
ActivityIndicator
(0b71d1ddb0) - Remove
$FlowFixMe
inTouchableBounce
(ffda017850) - Remove
$FlowFixMe
inScrollView
(af6e2eb02d) - Remove
$FlowFixMe
inListView
(af6e2eb02d) - Remove
$FlowFixMe
inText
(6042592cf4) - Remove
$FlowFixMe
inRTLExample
(206ef54aa4) - Remove
$FlowFixMe
inAppContainer
(a956551af7) - Remove
$FlowFixMe
inSlider
(1615f9d161) StyleSheet
: Support animated values for border dimensions (3e3b10f404)- Update
react-devtools-core
andplist
to include security fixes reported bynpm audit
(3a1d949906) - Update
Switch
to ES6 Class (970caa4552) - Update
Slider
to ES6 Class (5259450c14) - Update
ActivityIndicator
to ES6 Class (edd7acbb1e) - Update
RefreshControl
to ES6 Class (a35a238317) - Update
KeyboardAvoidingView
to ES6 Class (c017dcb0f2) - Update
DatePickerIOS
to ES6 Class (f8c8231706) - Update
Text
to ES6 Class (ab92c00245) - Replace
context.isInAParentText
w/React.createContext
(e1339bc183) - Cleanup
Text
implementation (06c05e744d) - Switch
Text
toReact.forwardRef
(e708010d18) - Switch
View
toReact.forwardRef
(3e534b9aab) - Update uses of
genMockFunction
andgenMockFn
tofn
in tests (390ded871c) - Make
ViewProps
exact (65c336f38f) - Spread
TVViewProps
intoViewProps
instead of intersection (bc658d3c44) - Allow trailing commas (1e2de71290)
- Use
let
/const
(8f5ebe5952) - Refactor
MockNativeMethods
in Jest (5d4c542c58) - Use app name from
app.json
after ejecting (57774a4a98) - Suggest
git apply --reject
for failed upgrades (4fbd244b9a) - Moved
TouchHistoryMath
from React to React Native (06085d3836) - Refactor
RCTInputAccessoryView
(c136c54ff0) - Don't wrap
ListEmptyComponent
in an extra view (db061ea8c7) - Move
Text
PropTypes to its own file (cd8128b2ec) - Mock
ReactNative.NativeComponent
native methods in Jest (3e9a371ace) - Tightening types for
View
andVirtualizedList
(5035af80ec) - Make values optional in
ViewPropTypes
(f1316cab6c) - propTypes are optional for native components (dbdf43b428)
- Rename
Style
toDangerouslyImpreciseStyle
(4895c645ea) - [BREAKING]
requireNativeComponent
's signature has been simplified to only take extraOptions (820673e707, b549e364e0, 28d37781c6, 1c90a2b47b, and 1ab7d49c2d by @yungsters)
Breaking Changes
- Public methods of Text (
blur
,focus
,measure
,measureInWindow
,measureLayout
,setNativeProps
) are no longer bound to the text component instance. It is therefore unsafe to pass these methods by reference (i.e: as callbacks) to functions. So, things likesetTimeout(this._txtRef.focus, 1000)
will no longer work. Please instead do:setTimeout(() => this._txtRef.focus(), 1000)
.
iOS specific changes
- [BREAKING] WebViews now can only use https; do not use it for
file://
(634e7e11e3 by @mmmulani) - iOS 9 is now the minimum required version (f50df4f5ec)
- Update podspecs to target iOS 9 (092103e752)
- Xcode 9.4 is now used to run tests (c55bcd6ea7)
- Prevent console logging on iOS 11.3+ within WebSocket (8125be942b)
- Expose
RCTFont
size overrides (6611fefef7)
Android specific changes
- Projects are now compiled using Android SDK 26 (065c5b6590)
- Use Google Maven repo in new Android projects (6d56a234e3)
- Upgrade Buck to v2018.03.26.01 (1324e7b558)
- Upgrade gradle-plugin to 2.3.3, gradle to 3.5.1, gradle-download-task to 3.4.3 (699e5eebe8)
- Bump NDK APP_PLATFORM to android-16 (b5dc45420a)
- Bump glog to 0.3.5 (added libc++ support) (b5fca80605)
ReactFragmentActivity
deprecated as it's not necessary when targeting API level 14 and above (77a02c0d83)- Touchables now play a sound on press (722f88ca90)
- Default
underlineColorAndroid
to transparent (a3a98eb1c7) - Disable
WebView
geolocation by default (23d61b35fb) - Ensure cookies with illegal characters are not sent to okhttp (04028bf216)
- Update app icons to match recent Android releases (94393f8652)
- Better error messages for
ReadableNativeMap
(30d06b4286) - Update Fresco to v1.9.0, okhttp3 to v3.10.0 (6b07602915)
- Add tint color to inline icons (e8e2a6e410)
- Fix antialiasing rounded background (e4f88c66e3)
react-native link
will now replace '/' by '_' when linking projects. If you previously linked scoped packages, they will get linked again. (dbd47592a1)- New project template now uses project-wide properties (0a3055d98a)
Fixed: bugs that have been resolved
VirtualizedList
now accounts forListHeaderComponent
length when calculating offset (604bcfa4a8)- Prevent showing a hidden status bar when opening modals (076b1cea35)
- Fix crash when reloading while Perf Monitor is enabled (4fcd9970bd)
- Fixed concurrency issue in remote debugger (578b0b2a51)
- Fix
Modal
+FlatList
scrolling (45b0907f61) - Fix bug in
RCTNetworking
where not all tasks/handlers were being cleared during invalidation (b805172034) - Fix keyboard handling with
keyboardShouldPersistTaps: never
(ffe6c110f7) - Fix Responder Logic in
Text
(e2ce22b823) - Fix
VirtualizedSectionList
lint warnings (26a1eba1ce) - Fix
VirtualizedSectionList:ItemWithSeparators
(488a4c7e1c) - Fix
TextInput
's initial layout measurements (c6b4f9f2ce) - Fix
requireNativeComponent
check (1c90a2b47b) - Fix
TextInput
autocapitalization bug (ff70ecf868) - Add missing events to
ViewPropTypes
(41a940392c) - Add missing Jest mock in
StatusBarManager
(4a2c560768) - Add Flow declaration for Metro module (1853e15190)
- Fix type for
ReactNative.NativeComponent
(1/2) (de11ba2a5e) - Fix type for
ReactNative.NativeComponent
(2/2) (752863629d) - Move Image PropTypes to new file (67656991b3)
- Tests: Fix JUnit report location when running Jest (85fc98d437)
- Tests: Fix ReactImagePropertyTest SoLoader failures (#19607) (a52d84d7e1)
- Tests: Fix jest snapshot testing on Windows (216bce3163)
- Fixes "Cannot resolve module" errors in new
react-native init
projects (843a433e87) - Haste hotfix for
react-native-windows
(54942746d4)
iOS specific fixes
- Fix undefined_arch error in Xcode 10 beta -
e131fff
- Make
react-native run-ios
command play nicely with multiple Xcode versions (a130239257) - Correct fishhook import (75a0273de2)
- Fix bug where a Backspace event was emitted when entering characters after clearing a text in
TextInput
by an empty string (1ffb2b63be) - Expose
InputAccessoryView
so it can be imported (80fc415cf1) - Fix
InputAccessoryView
safe area conformance (490f22ae72) - Fix use of C++ syntax in header file (bfcfe7961d)
- Fix install step when running
run-ios
(0934c1778f) - Fix
run-ios
not turning on Simulator (9736ddc061) - Use correct library reference for Fishhook. This fixes the build for the new Xcode build system, on both Xcode 9 and Xcode 10 (a8b74576da)
- Add missing
onChange
event definition toDatePickerIOS
(3b53091869) - Fix crash during Archive phase on Xcode 9.3 (344c205070)
RNTesterPods
: Add missing folly include (128c9343c4)RNTesterPods
: folly::Optional'shas_value()
tohasValue()
until folly is upgraded (128c9343c4)RNTesterPods
: Fix import forRCTTestAttributes.h
(128c9343c4)RNTesterPods
: Fixconversions.h
to use namespaced includes (128c9343c4)- Fix or mark enum conversions surfaced by
-Wenum-conversion
(b8f30db0ae) - Fix CocoaPods integration without DevSupport subspec (c09d509c2b)
- Update Yoga to handle being in a Xcode framework project (cf036dbc7a)
- Fix Blob memory leak (122b3791ed)
- Avoid double reload event when reloading JS (7b9b1559a7)
- Suppress spurious warning about RCTCxxModule (569061dd83)
Android specific fixes
- Fix extreme
TextInput
slowness on Android (5017b86b52) - Correct draw path dimensions while doing even border, fixes blurred borders (c5ca26a0e5)
- Don't pass additional arguments to
requireNativeComponent
in.android.js
files (a51e8b19cc) - Prevent
RefreshControl
from getting stuck when a parent is scrolled horizontally (33ffa79a51) - Prevent crash due to unsupported ellipsize mode (85e33aaf90)
- Fix okhttp3 response handling in
DevServerHelper
(56d48bd9ec) - Fix
ReactInstanceManager
unmountApplication to supportReactRootView
recycling (4a9b2a7302) - Fix
NullPointerException
when emitting event usingUIManagerModule
(291c01f4ff) - Fix link to Android build guide (57e7556b8d)
- Fix Android open source test failures (3e0ebc7663)
- Fix view indices with LayoutAnimation (05b75b9ebf)
- Fix originalNode memory leak (8102e35271)
- Fix
ScrollView
with aTextInput
(2f1421dec7) - Disable onKeyPRess logic when handler not defined (41975f75d9)
- fix permission requests on pre-M android (4e1abdd74d)
Removed: features that have been removed; these are breaking
- Deprecate
focusTextInput
andblurTextInput
(ce3b7b8204) - [BREAKING]
ImageResizeMode
onImage
is no longer exposed; check your usage ofresizeMode
; the same resize modes exist, but pass them as strings instead (870775ee73 by @TheSavior)
Android specific removals
- Remove native extensions (7c5845a5a2)
- Remove Fresco ProGuard rules (07df36557c)
iOS specific removals
- Disallow nesting of
<View>
within<Text>
(e.g.<Text><View /></Text>
) (6a1b41643a - Removed deprecated
UIActionSheetDelegate
methods (5863b564f8)
Known issues
During the RC testing of this version, a few issues that have been opened don't have yet a finalized solution ( 19827, 19763, 19859, 19955 ). We are aware of them and we hope that by releasing 0.56.0 the surface of developers interacting to find solutions to them will allow for faster resolution and an even better 0.56.1 release. So please check the already opened issues before submitting new ones.
If you are using Windows to develop React Native apps, we suggest you keep an eye on this issue in particular since there have been many reports of issues related to Win 10 and RN 0.56.
v0.55.0
Welcome to the March 2018 release of React Native ! Over 81 contributors made 247 commits since February. Thanks for another exciting release.
Here are a few highlights:
- React Native is now using the MIT license
- Android TV device support
- Animated tracking with native driver - check out the silky smooth framerate
- Lots of Flow improvements
- Bugfixes
Added: new features
- Added support for animated tracking to native driver. Now you can use
useNativeDriver
flag with animations that track otherAnimated.Values
(b48f7e5605 by @kmagiera) - There's a new UTFSequence module in the library for common Unicode sequences (Emoji!) (54870e0c6c and 4761d5a83e by @sahrens)
- Added
contextMenuHidden
property for TextInput (2dd2529b3a by @amhinson) - Add
testOnly_pressed
to TouchableHighlight for snapshot tests (3756d41de1 by @sahrens)
Android specific additions
- Added support for Android TV devices (b7bb2e5745 by @krzysztofciombor)
- Implemented style
letterSpacing
for Text and TextInput (5898817fc1 by @motiz88) - Bundle download progress is now shown d06e143420 by @janicduplessis)
- AndroidInfoModule now also returns Android ID (216c8ec04b by @L33tcodex0r)
iOS specific additions
- Introducing InputAccessoryView, "a component which enables customization of the keyboard input accessory view" (38197c8230, 84ef7bc372, and 6d9fe455dc by @PeteTheHeat)
base-line
metric exposure for Text and TextInput (51b3529f6c, 0dbe18375e, and 7630a614e4 by @shergin)- DatePickerIOS now has
initialDate
prop (446ce49e9b) - Expose version via
RCTVersion.h
'sRCTGetReactNativeVersion()
(30469ed001 by @LeoNatan) - Allow running multiple simulators simultaneously with
react-native run-ios --simulator ...
(2ad34075f1 by @koenpunt) - Introduced RCTSurfaceHostingProxyRootView for migration to RCTSurfaceHostingView (34b8876ac6 by @fkgozali)
- New UIManager API allowing intercept/delay mounting process (402ae2f01f and b90c1cf6c3 by @shergin)
Changes: existing functionality that is now different
- React Native has now adopted the MIT license (1490ab12ef and 26684cf3ad by @sophiebits)
- The HelloWorld template now exclude
*.jsbundle
files from Git (21231084db by @aneophyte) react-native-git-upgrade
now shows files merged with conflicts in red (e53a8f7097 by @alvinthen)ResolvedAssetSource
type to have all read-only members (4d0ee37293 by @sahrens)- Flow types improvements (b6c7e551a9, b98bf1e097, 80c18395e2, 70a3ececc3, f7343576fc, a817c64043, 3fd82d3c89, cd8128b2ec, 5035af80ec, 26734a8473, 321ba067a8, b6b80f6a70, f1316cab6c, 2520c645f8, 214da52fe7, dbdf43b428, 49396aa78d, 4895c645ea, a3c07c95ef, 49ffc9fada, and c129457d3a by @TheSavior, @yungsters, and @alex288ms)
- Better enable cross-platform support of WebSocket.js (b9be28915c by @rozele)
- Better error handling in the CLI around making directories (d2817f48a1 by @BridgeAR)
- Verify that the component passed to createAnimatedComponent is not functional (10b642a7af by @janicduplessis)
- Don't truncate in the middle of an emoji (9c8c597000 by @Vince0613)
- Loosen Platform check to allow better code sharing for out-of-tree platforms (84affbd6a3)
- In CLI, fix issue with
isInstalled
check for Android and references to unregister (ec884890b1 by @rozele)
iOS specific changes
- tvOS
onPress
magnification animation now works via thetvParallaxProperties
prop object takingpressMagnification
,pressDuration
, andpressDelay
(6c353fd7e9 by @JulienKode)
Fixed: bugs that have been resolved
- In TouchableOpacity, trigger animation on
opacity
upon change indisabled
prop (9366ce416f by @maxkomarychev) - Fixed an issue encountered when using
react-native-vector-icons
(a759a44358 and 54dc11a5fb by @jeanlauliac and @t4deu)) - Add missing mock for Jest for
removeEventListener
method (59c7b2cfac by @MoOx) - Fix main size calculation from the aspect ratio (f751c3460e)
- Fix crash in Subscribable due to uglify-es (b57a78c3de by @iMagdy)
- Update
node-notifier
dependency to fix memory leak (860fcd458a by @rickhanlonii) - Fix issues with pollParams and link (ca8ce83cc3 by @grabbou)
iOS specific fixes
- DevLoadingView now supports the iPhone X screen shape (47b36d3ff0 by @mrtnrst)
- Added bounds check to prevent ScrollView from scrolling to an offset which is out of bounds of the ScrollView (16c9e5b715 by @siddhantsoni)
- NetInfo
isConnected
works again (dbafc29e60 by @alburdette619) - In AlertIOS, fix duplicate var name declaration (6893a26bfb)
- Permit
react-native run-ios --device [id]
by passing port when running on device (f8fee0a631 by @jozan) - Fixed issue with
run-ios
whereEntry, ":CFBundleIdentifier", Does Not Exist
was being received (5447ca6707 by @blackneck) - Fixed problem in Text measurement on iOS (a534672e13 by @shergin)
- Fix crash when reloading in tvOS (3a3d884df2 by @dlowder-salesforce)
- Fixed a bug with positioning of nested views inside Text (7d20de412b by @shergin)
- Fix blob response parsing for empty body (f5207ba9c7 by @janicduplessis)
- Fix tvOS react-native init release build (3002c4eb98 by @dlowder-salesforce
- Fix RedBox from bridge reload due is not re-registering its root view (2e51fa5f5d by @fkgozali)
Android specific fixes
- Fix: incorrect line-height calculation (74e54cbcc4 by @strindhaug)
- Fix crashes with TextInput introduced in 0.53 (b60a727adb by @joshyhargreaves)
- Update ReactAndroid build script to support gradle 2.3.0 (d8bb990abc)
- Allow "unexpected URL" exception to be caught on Android when using fetch (da84eba318 by @jcurtis)
- Fix
onLayout
prop for TextInput (8a073c1d8b by @rozele) - Fix ViewPager when using native navigation (a1295e1707 by @ruiaraujo)
- Fix localization crash in DevSettingsActivity (427e464bb9 by @ayc1)
- Fix pinch crash in touch-responsive views (67c3ad4e6a by @tobycox)
- Fix IllegalStateException thrown in looped timing native animation (ef9d1fba23 by @kmagiera)
- Workaround android-only js module resolution issue (c20e0f94fe by @fkgozali)
- Fix ReadableNativeMap.toHashMap() for nested maps and arrays (15fa2250fd by @esamelson)
- Fix Android Sanity Buck version check (e0573225d5 by @hramos)
- Fixes the connection to Firestore by following whatwg.org's XMLHttpRequest send() method (d52569c4a1 by @samsafay)
invertStickyHeaders
can now be set from SectionList or FlatList (dd479a9377 by @dannycochran)
Removed: features that have been removed; these are breaking
- Removed various types (b58e377961, ee26d9bcb0, d89517d60a, 852084ad45 by @TheSavior)
- Deleted
Systrace.swizzleJSON()
(3e141cb6c9 by @yungsters)
Android specific removals
ReactInstanceManager#registerAdditionalPackages
has been removed; Create UIManager interface and extract common classes in uimanager/common (6b45fb2cb1 by @mdvacca)
iOS specific removals
- Remove callFunctionSync experimental APIs (19a4a7d3cb by @danzimm)
v0.54.0
Welcome to the February 2018 release of React Native! This release includes work done by the React Native team and the community in January, and there are some big changes here after the holidays. Thanks for 270 commits from 87 contributors, you all are great! Here are a few highlights from the release:
- Long awaited Blob changes: upload, download, fetch locally, and more
- Sticky headers now work on inverted Lists
- Update to the newest React, which deprecated some lifecycle methods and added new ones – expect Yellowbox until React Native is updated
Space-evenly
is now there (sorry for the confusion with 0.52's release notes)- A lot of under-the-covers work on Yoga, iOS's Text and TextInput, and a ton of other areas
- Multiple crash fixes
The changelog is arranged by the customary added, removed, changed, and fixed plus internal; the changes are also organized by platform.
Added
- ✨ Blobs now can be: made from Strings, loaded by File using a FileReader API, uploaded and downloaded via
XMLHttpRequest#fetch
, and fetched on files to a local blob consistently (be56a3efee and 854c2330eb by @satya164 and @fkgozali) - Dynamic node_module dependencies are now supported (b5e19adc02 by @jeanlauliac)
- Support sticky headers for inverted Lists with
invertStickyHeaders
(ecaca80d42 by @janicduplessis) space-evenly
is now supported (sorry for the confusion with 0.52 notes) (b1cdb7d553 by @gedeagas)- Platform plugins can participate in RNConfig,
link
, andunlink
– keep an eye on react-native-window's use of it! (a40bfa730e by @rozele) - Add
minify
flag to react-native bundle command (3f969cb1db by @tomduncalf)
VR Specific Additions
- Added ScrollView support (6fa039dab0 by @MartinSherburn)
Android Specific Additions
- Bundle download progress is now shown like iOS (d06e143420 by @janicduplessis)
- Add back ability to customise OkHttp client (22efd95be1 by @cdlewis)
iOS specific additions
- ScrollView now supports smooth bi-directional content loading and takes new prop
maintainVisibleContentPosition
(cae7179c94 and 65184ec6b0 by @sahrens) - Allow substituting a default font handler (a9c684a0ff by @mmmulani)
- Add
accessibilityElementsHidden
prop (31288161e1 by @aputinski) - Add EXTRA_PACKAGER_ARGS extensibility point on
scripts/react-native-xcode.sh
(PR rev 0d4ff1b7ea by @brunolemos with landing assists b8c86b8dec and 0d4ff1b7ea)
Removed
- Remove internal
utf8
utility - use the utf8 package now instead (431670f908 by @mathiasbynens)
iOS specific removals
- Removed outdated assertion in RCTShadowView related to breaking change in Yoga (e3ff3cf6cb by @shergin)
Android specific removals
- Fix an issue when swapping to and from the
visible-password
orphone-pad
keyboard types. (164f6b6afd by @BrandonWilliamsCS) - Remove redundant config in AndroidManifest.xml (d7a9ca2893 by @gengjiawen)
iOS specific removals
- Delete RCTBatchedBridge (816d417189 by @mhorowitz)
Changed
- Docs clarifications (7abffc3f8c by @IgorGanapolsky)
iOS Specific Changes
- ⚡️ Text and TextInput have been re-implemented from the ground up for performance, flexibility, and reduced technical debt (2716f53220, 74963eb945, d7fa81f181, 74963eb945, 6c4ef287ad, ebc98840e9, d7fa81f181, 7d1ec7a3dc, 52648326e6, 6bb8617f3a, 5dbb3c586c, 7e7d00aebe, 46fd864348, 9dfa2e7f3c, 8a882fe6d6, and 0f9fc4b295 by @shergin and @hovox)
- Image's
resizeMode="center"
is now documented and has an example present (be7037fd8e by @motiz88) - Geolocation API no longer timeouts when
skipPermissionRequests: true
(5c17db8352 by @ngandhy) - Rounding pixels is now done with an algorithm from Yoga rather than React Native, reducing debt and improving performance (ceb1d1ca5b and 114c258045 by @shergin)
Android specific changes
- Numerous refactors around bundle handling and the
DevServerHelper
(644123aa6f, e756251413, 6e44356c9b, 1019bda930, 06d8f96a64, f88c9d6382, and 108f9664bf by @davidaurelio)
Fixed
- Fix JS debugger issues related to CORS (29f8354c19 by @njbmartin)
- Keep the
.gitignore
d files during thereact-native-git-upgrade
process (7492860ffb by @ncuillery) - Fix re-render case on SwipeableRow (a580a44b0d)
- Fix display of syntax error messages when HMR is enabled (2b80cdf1bb by @ide)
- Add fixtures to metro blacklist in order to let build succeed (54dc11a5fb by @t4deu)
Android specific fixes
- Don't crash when using decimal
Animated.modulo
values withuseNativeDriver: true
(6c38972327 by @motiz88) - Don't crash when receiving unknown websocket IDs (1a790f8703 by @sunweiyang)
- Dont crash when
NativeModules.UIManager.showPopupMenu
method calls error callback (0c18ec5b9c by @dryganets) - Maintain cursor position when TextInput's
secureTextEntry
changes (09b43e479e by @jainkuniya) - Race condition fix in Dialogs module (d5e3f081c6 by @dryganets)
- Fix NPE in Android Switch during measure (7b1915e74d by @4ndroidev)
- Fix initialScrollIndex (ef596dec49 by @olegbl)
- Fix redbox style (f363dfe766 by @ayc1)
- Fix crash due to mishandling of UTF-8 in progressive download. (9024f56bda by @dryganets)
- Fix crash because ClassCastException fix: getText() returns CharSequence not Spanned (46cc4907e3 by @dryganets)
- Fix and re-enable "view flattening" optimizations (877f1cde2e by @mdvacca)
iOS specific fixes
- Fix Crash when CameraRoll is getting assets from iCloud and no filename is provided (2ae24361c5 by @pentarex)
- Fix Xcode Archive task failing if project path contains whitespace (8aa568e867 by @jevakallio)
react-native link
has been fixed to correctly link iOS and tvOS targets (a63fd378a4 by @dlowder-salesforce)GLog
fix on case sensitive APFS macOS (2fef1bafc8 by @hovox)- Fixed issue where you cannot launch tvOS app on Apple TV simulator (afd988f85a)
Internal work
-
A massive amount of Yoga optimizations, cleanups, refactors, and test fixes (62d01006a1, 1475fc4856, 9daa17458a, d4517ddb9f, ca91f0e3ac, 34b7ec82b5, fda861a889, 9f7cedbe14, ac1c8c265e, fcf2c7cf61, 2b27f1aa19, 210ae5b95a, 82088580ab, 7f94bff89a, bd7bf94af9, 2fe65b032e, 9658d9f82b, ee5c91c031, 64d530ba07, 400a29e151, f75e21f1ca, 528bbacf6b, be8e7c6e65, d0f7d4d107, 4b4959a21c, fdef3784f0, 831a1bb4b1, 2a22d998f8, 9f57dedc17, and ff2658c3de by @priteshrnandgaonkar, @passy, @ryu2, and others)
-
🚧 Lifecycle methods were renamed to be consistent with React RFC6 – note that there are Yellowbox warnings right now because of this, it's work-in-progress (6f007e8957 by @bvaughn)
-
Some autogenerated mystery string files were added (c7846c4bfb, bb6fceac27, 8bd00a2361, faa9519021, f49f7932d5)
-
Improvements to the cli's implementation (1673c570f9, 752427b7b8, and 619a8c9f29 by @arcanis, @voideanvalue, and @rozele)
-
Measure touch events from nearest "root view" (a70fdac5bd by @mmmulani)
-
Allow to attach the HMR server to an external http server (8c6b816caa by @rafeca)
-
Split folly/Memory out from headers-only targets in Buck (b8e79a7e8b by @mzlee)
-
Code cleanup of ReactHorizontalScrollView in Android (71ec85f24c by @mdvacca)
-
Always create a debugger websocket connection when in iOS dev builds (fa334ce464 by @bnham)
-
Make the React Native HMR client extend from the generic metro HMR client (9a19867798 by @rafeca)
-
Removed use of xip.io (40a8434bde by @jvranish)
-
Fix Buck dependencies (cec2e80fc2, 4f6c157250 by @swolchok)
-
Fix permissions on test script (42c410ac84 by @mzlee)
-
Better handling exception in loadScript() (3fbf7856d9)
-
Fix ESLint upgrade "parsing error" (9d214967d2 by @zertosh)
-
Fixing 🤡 in RCTSurfaceRootShadowView (5fba82deff by @shergin)
-
Handle invalidation error in RCTObjcExecutor (493f3e8da5 by @fromcelticpark)
-
Check for nullptr when accessing isInspectable method (70d23e82ad by @fromcelticpark)
-
Introduce new Fabric API in RNAndroid (2d35bde101 by @mdvacca)
-
Fixing Prepack model for latest global.nativeExtensions changes. (01a58d182a by @NTillmann)
-
General code cleanup: unused code and configurations (e233646d09 and e7010348d8 by @bvaughn and others)
-
Add support for finding multiple views with NativeIds using a single listener to Android (f5efc460ad by @axe-fb)
-
Add CountingOutputStream (a5e135aed6 by @hramos)
-
Changes from Prettier (b815eb59be, e758cb7f39, bf9cabb03c, and a5af841d25 by @shergin)
-
Typos in code (8ffc16c6e7 by @ss18)
-
Support for inherited events in view managers (2afe7d4765 by @shergin)
-
Flow types changes (3fc33bb54f, e485cde187, 83ed9d170b, 52ffa5d13e, d37cdd97ae, 6e7fb01c02, d99ba70c49, bcfbdf4fbe, and a1c479fb3b by @alexeylang, @sahrens, @yungsters, and @zjj010104)
-
Give IInspector a virtual destructor for correct InspectorImpl destruction (2a3c37f424 by @toulouse)
-
Migrated
SourceCode
andDeviceInfoModule
out of Native Modules (47fe52380a and 429fcc8cab) -
Jest config change as part of bringing back support for the
assetPlugin
option in Metro (af6450c660 by @ide) -
Nested virtualized lists should receive recordInteration events (ae2d5b1e68)
-
Upgrade connect dependency (709ede799c by @rafeca)
-
xplat/js: asyncRequire: redirect async modules to control modules (5e11b8870a by @jeanlauliac)
-
More progress towards split bundle support (1a1a956831 and 9e34cbda9d by @fromcelticpark)
-
Implement bundle sync status (88980f2ef7)
-
Various improvements to RCTSurface and RCTShadowView (7d9e902d72, 06ebaf2205, 6882132421, and 193a2bd4cd by @shergin)
-
Progress towards experimental ReactFabric and FabricUIManager (b1e5c01483, fa0ac92b2c, 94dac23583 by @fkgozali)
-
(almost) kill fbjsc (702b7e877e by @michalgr)
-
Refactored bridge ReadableNativeMap and ReadableNativeArray to add centralized accesses (7891805d22, 28be33ac34, and 5649aed6d3)
-
Removed unused core from Image.android.js (ce3146a6f3 by @shergin)
-
Capture StackOverflowExceptions triggered when drawing a ReactViewGroup or ReactRootView and log more debugging information for it (1aac962378 and 4d3519cc6a by @mdvacca)
-
babel-preset-react-native
: only require plugins once (df6c48cf36 by @davidaurelio) -
Report module id as string and as double, in case of invalid values are passed to nativeRequire (8f358a2088 by @fromcelticpark)
-
More work moving build configurations to Skylark (d3db764f38, 869866cc5c, a8c95d2417, and 79a63d040f by @mzlee, @ttsugriy, and others)
-
[RCTShadowView isHidden]
was removed (c19bc79688 by @shergin) -
Remove unused
packagerInstance
option and rename it toserver
(bbbc18c4ee) -
The blog has moved to react-native-website (e16d67340e by @hramos)
-
Remove SoLoaderShim, use SoLoader (fc6dd78935 by @foghina)
-
Removed broken link for 'Getting Help' in the README (b3a306a667 by @rickydam)
-
Changed to use boost-for-react-native cocoapod, which speeds up
pod install
a ton; this was in 0.53 originally but had to be re-added (d40db3a715 by @CFKevinRef) -
Remove fbobjc's RN copy (af0c863570)
-
Measure time to create ReactInstanceManager (6224ef5301 by @alexeylang)
-
Upgrade create-react-class to v15.6.3 (74f386633d by @bvaughn)
-
Upgrade react-devtools to v3.1.0 (8235a49a33 by @bvaughn)
-
Upgrade flow to v0.65.0 (7aba456b04 and 298f3bb69a by @avikchaudhuri and @mroch)
-
Upgrade Jest to v22.2.1 (46f4d3e1bc and 24e521c063 by @mjesun)
-
Upgrade ESLint to v4.17.0 (plus update related deps) (bba19e846e by @zertosh)
-
Upgrade React to v16.3.0-alpha.1 (03d7b2aa0e and 5e80d95e03 by @grabbou and @hramos)
-
Synced React and ReactFabric render (c7ed03a95c, 13829751b1, and d676746f14 by @bvaughn)
-
Upgrade metro to v0.26.0 (9e6f3b8aff, ce50f25d22, e9b83e608e, 2fe7483c36, 0f96ebd93b, 0de470ec19, e8893a021f, and b1d8af48ae by @rafeca and @grabbou)
-
Add Context to Redbox report api (e3c27f585a by @ayc1)
-
GitHub bot commands have been disabled in the short term (b973fe45bd by @hramos)
-
Various CI configuration changes (17bd6c8e84, 51b6749c07, a2f3ba864e, 2ef9b7f2da, 40b17926bb, 613afbab7f, da8bec9f8b, fa11faecb6, f50af7f8a4, 9227ba73ab, 365a4d4b43, b58d848d9c, c8e98bbaf5, f5975a97ad, and 605a6e4031 by @hramos, @grabbou, and @dryganets)
-
Restore copyright header (4f883bd0bc by @hramos)
-
Trim docs that are already present in the open source docs site (28d60b68ad by @hramos)
-
Fix obsolete instructions about editing docs (2f46712074 by @ExplodingCabbage)
-
Fix links to beginner friendly issues (c355a34de1 by @hotchemi)
-
Typos in comments and log messages (d2c569795c by @ss18)
-
Don't run the Danger CI tool through Flow (1ea3065feb by @hramos)
-
Namespace custom ESLint rules through eslint-plugin-lint (488b6825c5 by @zertosh)
-
... and now we're at 0.54 🎉 (67e67ec83c, 21dd3dd296, 49e35bd939, 829f675b8b, and 294d95a236 by @grabbou and @hramos)
v0.53.0
Welcome to the January 2018 release of React Native. The CLI now supports --port
for both platforms, a few components were made to support consistent props across both platforms, and various fixes were made. There was a lot of under-the-cover work done with more test improvements and dependency updates. 118 commits were made by 43 contributors 🎉.
Added
- ✨ Keyboard events now include
easing
andduration
(4d33080f0f by @sahrens)
iOS exclusive additions
react-native run-ios
now supports the--port
argument for metro (33d710e8c5)
Android exclusive additions
- On Android, ScrollView now takes
snapToInterval
like iOS (ddd65f1ba9 and b2848a54b0 ) - On Android, TextInput now takes
onKeyPress
like iOS (c9ff0bc212 by @joshyhargreaves)
Changed
- ⬆️ Metro to v0.24.2 (2e008bc464 and 0b5e8b4852 by @rafeca)
- ⬆️ Flow to v0.63 (6b95c4fb14 by @gabelevi)
- ⬆️ Danger to v2.0 (b750e3b21b by @hramos)
- ⬆️ Jest to v22.0.0 (4803419dc8 by @mjesun)
- 💄 Bundler is now called Metro Bundler in the terminal (654d7595fe by @edcs)
- 📝 Update getting started url on Android CLI (6661633390)
- 🐳 Dockerfile uses newest Android SDK, Buck, and new Docker tags have been pushed (4fbfbe6bb0 and c547f783c4 by @hramos)
- 📝 Update repo docs to use HTTPS (33a2e533b7 by @him2him2)
- 🎨 Make ScrollResponder follow code style (45e6fcdba0 by @TheSavior)
- VirtualizedList now requires a windowSize greater than 0 (3559e42c55)
- react-devtools works with emulator and real devices now without needing to tweak the devServer value (fa574c6092 by @jhen0409)
- 📝 Clarify use of Flow props types in react-native-cli's template project (9b147a53d1 by @hramos)
- 📝 Add docs for
isInspectable
(59c7967627 by @bnham) - ✅ More Flow improvements (Text, SectionList, and others) (f71f4e7906, 632f1202ab, and a8391bde7d by @yungsters, @samwgoldman, and others)
- Various code cleanup to satisfy linting errors and standards (b0319f3293, dd4611721d, and 7f58189605 by @ayc1, @grabbou, and @ide)
iOS exclusive changes
- 🔥⚡️ iOS UI Manager cleanup and optimizations (0ec1017660, 0ae4c47daa, 2679f3efb6,and d9e5b313bb by @shergin)
- If the inspector tries to handle a wrapped event but there is no connection, log a warning rather than a Redbox (30da2622e2 by @bnham)
- Various under-the-covers changes around the bridge, RCTShadowView, RCTSurface, and a few others (c3139d798a, 2789ba016b, b8e60a3ca3, 099b28006b, b263560c73, 19a9c5e41d, d3b41e0da3, b2a251948f, 870bc4807a, 176a578238, c491b22233, c75612219e, andc01a171ed8 by @shergin)
- Changed to use boost-for-react-native cocoapod, which speeds up
pod install
a ton (d40db3a715 by @CFKevinRef)
Android exclusive changes
- Include scroll momentum info when there are scroll events from Android (c49d249fd7 by @wwalser)
- Yoga's mkfile for Android now uses wildcard instead of manual file addition (d89901fa60 by @priteshrnandgaonkar)
Removed
- TextInput no longer has the
autoGrow
prop, since this is platform-default behavior now (dabb78b127 by @shergin)
iOS exclusive removals
- Updates to the bridge in order to enable future rendering optimizations (d2dc451407 by @shergin)
Fixed
- Do not set
minify=true
when calculating the list of dependencies for the CLI (4a1bb8fe8d by @rafeca) - 👷 Update CODEOWNERS now that the docs are in a separate repository (85ff264445 by @hramos)
- Fixed a broken link in react-native-git-upgrade's readme (bbedf2da9a by @Taym95)
- 🤡 Do not use Node 8.x specific Stream.final for FS mocks (4216cdef13 by @hramos)
- Fix virtualized cell keys for list headers and footers (a010a0cebd)
- Fix warnings of casting and null pointer handling in Yoga (a8d4666651 by @priteshrnandgaonkar)
- Fix broken buck failures on master (4e767013ed by @hramos)
- RefreshControl appears correctly when expected on initial render of a FlatList again (ed5872e2cc by @vonovak)
- Fixed JS debugger CORS issue (29f8354c19 by @njbmartin)
Android exclusive fixes
- Fix position of dev loading view on Android API < 20 (7ff6657985 by @kmagiera)
- Fix Modal not disappearing when navigating from inside a Modal to another activity (e5c2a66897
iOS exclusive fixes
- Fix regression introduced where layout wouldn't occur in some situations (46be5bf71c by @shergin)
- Fixed double initial prop applying for newly created views (0ec1017660 by @shergin)
- tvOS build now works again (3bd89867d6 by @dlowder-salesforce)
Other
Below is a list of the remaining, low-level changes that made it into this release of React Native.
- Remove "prepareReact" call from the bridge (80f9e1f7de and 56a42e57d0 by @fromcelticpark)
- Add explicit componentControllerClass to CKComponent for RCTSurface (ab972708a8)
- Changes to RCTShadowView to increase RCTSurface performance (f96f9c5fd6 by @shergin)
- Designated methods to control dirty propagation (af226ef949 by @shergin)
- Add missing tvOS header (49cbca7464 by @grabbou)
- On Android, seperate logic to initialize JS from starting the app (4996b9aeb4 by @axe-fb)
- ♻️ JS linting was cleaned up: removed unused libs, strengthened the rules, removed unneeded rules, prevent disabled tests, and more (2815ada238, 183c316f4c, 9c67e749d8, 79902f99b8, 9a36872f0c, 67a3c42d1a, b826596700, a1a0a69546, and 11a495cb32 by @TheSavior)
- 👷 Separate JS lint and flow checks from tests (5ea5683d01 by @hramos)
- 👷 Fix Buck in build config to enable CI (796122d8f3, 7c3a61f3b6, 82b123e744 by @grabbou)
- ♻️ Various refactoring within the YGNode implementation (28968e2c0b, 0a9e652bdd, 6627d7723c, and d85da86dc7, a163f70f87 by @priteshrnandgaonkar)
- Fix ReactLegacy and delete RCTViewControllerProtocol (a0ff8c7706 by @javache)
- Define internal FB macro for OSS builds; remove some unused definitions (077c3ab349 and (a6a66c5b39 by @ttsugriy)
- RNTester: Relax Bridge Release Check (e3c6f38773 by @yungsters)
- Remove embeddedBundleURL from the asset resolver (489b98bf10)
- Do not set FB_ASSERTION_ENABLED (4cdbb77c33 by @priteshrnandgaonkar)
- JSBigString to MAP_PRIVATE not MAP_SHARED (f9f40cd3e4)
- Fixed black ARTSurfaceView (5c8481e836 by @shergin)
- Kill orphaned marker end in JSCExecutor (6ad1f0957a by @michalgr)
- Make YGNode as c++ struct with properties exposed through accessors (f1055bcac8 by @priteshrnandgaonkar)
- 🔖 ...and now we're at 0.53.0-rc.0 🎁 (0b996577e3 by @grabbou)
v0.52.0
This changelog has been prepared by Ryan Turner (@turnrye) - thank you for your time and making such a detailed changelog 🔥🔥
This release had a lot of work around the bundler and packager, a ton of bugfixes, and updates to many of React Native's dependencies. Lots of under-the-hood work was done as well to improve the layout engine. Happy new year!
If you would like to help us with the next release changelog, please contact @grabbou
Added
- Prettier has a config and an npm script; try it out with
npm run prettier
(164591218f by @janicduplessis) - Debug JS in Nuclide is now an option in the dev menu 🐜 (7c7108a1e8 and de424cc291)
- Introducing PlatformOS – it looks a lot like Platform, but with a simplified API (5ee27ff755 by @brishin)
- New experimental RCTSurface: measure and layout a UI in a thread-safe and synchronous manner (be6976d6fa, 7df58e23a3, e75bd87a76, aa83b5a0ca, 081f7d14ad, da17b237e1, e9e0cd7ab8, 43b2509320, ba6075120a, d71d28f094, 4d37cf0fbc, and d021dd25da by @maicki and @shergin)
- Experimental SwipeableRow's datasource now has a
getLastRowID
method (d79e245d19) - React Native monthly #5 was added (3c5a55ddc2 by @tenodi)
iOS Specific
- DatePickerIOS now takes locale 🌍 (fd9c3618fc by @RobertPaul01)
- CameraRoll can now deletePhotos 📸 (554e873f58 by @fxfactorial)
- There's now an API to specify a different directory for iOS image assets (8f9b291224)
- Support for custom accessibility actions on iOS (36ad813899 by @ericdavmsft)
Deprecated
- Ignore YellowBox warnings with
YellowBox.ignoreWarnings([...])
rather thanconsole.ignoredYellowBox = [...]
(26038f50bb by @wli)
Changed
- Metro-bundler is now metro, and it's v0.24.1; there were some performance increases at the cost of a few breaking changes; improved tests of the bundler too (0bbd9f042a, a2fd3fcef8, 503b4521a6, 654fed46f4, 0091496891, aba148f733, 3d5dc872a4, 48019a0c2a, ecec4319c4, f4d627c8fa, f871d25eb4, a7b231a327, 830b431453, 29dafa1a86, 7a5d5a4035, 4cd685a1e0, d326c86051, 231c7a0304, 7d969a05de, ae517307e7, f587f8d51d, fbf0aed3ac, e9393f694d, and 968c88d141 by @cpojer, @hramos, @jeanlauliac, and @rafeca )
- React is now v16.2.0, and it took react-test-renderer along with it; now with more fragments! 🎉 (c7f37074ac and cd938d731c by @bvaughn)
- Jest is now v21.3.0-beta.13 (16bbd908e7 and ec2ea58e57 by @mjesun)
- Flow is now v0.61.0, and there were a ton of Flow fixes/coverage improvements made (914ae93336, eb0d6470e5, c8e72bb8b8, 2d4bedba0f, e0202e459f, 2be3ae1ff2, 22a1419900, 6ae0b344e5, 76a2ca4c9c, 3259353fce, e6c1fb7212, 61d046be3c, 820cfa1f3b, 240039c6f2, 343c5a97a0, 5f8d8e90c2, and da047966e4 by @Ashoat, @calebmer, @cdlewis, @deecewan, @grabbou, @jamesisaac, @mroch, @nmn, @nmote, @sahrens, @samwgoldman, @TheSavior, and others)
- react-devtools-core is now v3.0.0 (a7d46ea970 by @rsnara)
- Split out docs to their own repo (and a few formatting fixes along the journey) 👋 (2d86618e7e, 64d80b13db, 3362da421c, 75123c614b, and 79e24ede40 by @hramos).
- TouchableHighlight now has a default delayPressOut value of 100; it was also refactored a bit for style (9a31fa5fd6 by @sahrens)
- When in a dev build, more robustly validate arguments for native methods (ea2e2c54cb by @mhorowitz)
- On integration tests, report all errors (3bcb912786 by @sahrens)
- Yoga has less technical debt, thanks to replacing YGNodeList with vectors (b08a912f11 by @priteshrnandgaonkar)
- Yoga is now cpp, compiled as c++1y (d7ab9496bc by @priteshrnandgaonkar)
- Bundle segments are handled better and used more (681278947e, a47431ed74, 963c61d4d5, b9f21dc2be, f1258181ee, and 1988ba1d79 by @fromcelticpark and @jeanlauliac)
- packager-worker-for-buck has better tests (7fd5aa84a1 by @jeanlauliac)
- RCTUIManager has less technical debt (46be5bf71c, 60dc9bed00, and 21714fe197 by @shergin)
- Numerous bridge changes, especially around URL resolution (e7bd0f056b, 260e6d2355, 4894ac430d, b983de9c54, b0193b098c, ae5ef653cb, and 1d6ce2311f by @fromcelticpark and others)
- Various cleanup and refactoring (053776338e, 0984f29a32, 6c70975689, d950dc6a21, 70c359000a, cfa2bbf2f6, and 850efa8650 by @bnham, @priteshrnandgaonkar, and others)
- Jest preprocessing now uses the AST from metro (2ae255a6ea and d5b59517c2 by @rafeca)
renderApplication()
now supports async initial render (1b22d49ae8 by @bvaughn)- Welcome @lwinkyawmyat to the React Native GitHub Issue Task Force (4ebe76d559 by @lwinkyawmyat)
Android exclusive changes
- Native components on Android register lazily rather than via ViewManager (1b71e03932)
- Android debug overlays (like RedBox, dev menu, loading) are no longer are system overlays; they're now part of the currentActivity (d19afc73f5 by @kmagiera)
iOS exclusive changes
- Improve iOS's accessibilityLabel performance by up to 20% 📈 (19b0a65c5e by @chendo)
Fixed
- Fix
backgroundColor
on TouchableHighlight (5a1171ebfa by @sahrens) - Various corrections in messages, comments, and docblocks (58c3bc4901, 354e1cb508, 58edf024a1, b9e7006cc6, d2f0abdf4e, 94cd9f5591, 8547b7e111, 44c16499fd, c91d87213e, 85503a0612, and 5b83dbe25a by @behrends, @bvaughn, @charpeni, @dsandmark, @gusgard, @nkabrown, @petterh, @solon, @swashcap, and others)
- Various dev doc and project doc fixes for correctness and completeness (92c0980540, 3c9092acf3, e906525e84, 60828566a7, c49b97c4ef, 45ed142596, cb6ec7c321, 9ec9567390, e5a4ea97d9, c544c0d2dc, 33d5e5bd5a, 95dac8db60, 6e1db1f1ee, e11d496e9d, 6da897945f, 0ff576081b, 1ee64ccb8a, 3aa38564f7, 6b26971a56, and de3976a486 by @adrianomelo, @blargity, @charpeni, @garlic-rice-with-butter, @gwmccull, @harikrishnanp, @hramos, @johnthewilson, @jsdario, @kelset, @patrickkempff, @ryanml, @tiagomoraismorgado88, @timwangdev, and others)
- Stop
RCTRefreshControl
from jumping around (2e1707d0e6 by @sophiebits) - Fix a race condition in the animation module (515eb0e801 by @mhorowitz)
- Fix Windows local-cli's to not wrongfully identify as globally installed (ca106043fc by @sballew)
- Fix Jest mocks for NetInfo, Dimensions, and ScrollView modules (7fb3a9229d, 11a2a35c63, and 0c8a3e4f79 by @alvaromb, @timwangdev, and @uk-ar)
- packager-worker-for-buck:
transformCommand
: add missing test (73a01be9bc by @jeanlauliac) - Fixed issue where CLI wasn't following the config value for postMinifyProcess
when its running with
dev=false
(6d92046c56 by @rafeca) - Fix asset resolver url handling (28d5d6baf1 by @fkgozali)
- Fix crash when destroying catalyst (f1015664e9)
- You can now
justifyContent
while you'reminWidth
ing andmarginLeft
ing; before the justification wasn't honored (f5becebc07 by @woehrl01) marginLeft: auto
andalignItem: stretch
now play nicely together; before the width and height ended up incorrect (5f99b1a55f by @woehrl01)- Fix assertion preventing YGNodeLayoutGet* with YGEdgeEnd (a383b8ca05 by @justjake)
- Fix shrinking in non-strech alignments (1d62848535 by @woehrl01)
- Correctly calculate min/max percentage constraints (4fdaf2de98 by @woehrl01)
- When running
react-native-git-upgrade
, don't execute git's hooks (0182086350 by @adrienthiery) - When running
react-native-git-upgrade
and failing with a signal, return that to the terminal (b9a5862f67 by @mateusz-) - In KeyboardAvoidingView, don't mistakenly try to layout when a hardware keyboard changes (ad4450ac13 by @koenpunt)
- Don't endlessly collect websockets when not connected to the packager (dev memory leak) (1e1e491246 by @mmmulani)
- Fixed a bug in the sample project random
selection
prop that made it not-so-random (766f020e68 by @rozele)
Android exclusive fixes
- Explicitly
#define isnan __builtin_isnan
for Android clang-5 to mimic gcc's default behavior (f8fe6b0c70) - Correctly update NetInfo on Android even if connection types change while the app is in the background (e6f542d620 by @berickson1)
- Direction-aware borders now work with Android APIs >= 17 (7170543e80 by @rsnara)
- Don't throw BadTokenException and IllegalArgmentException when showing or dismissing Modal on Android (e57a43b97a)
- Fix Android crash when blurRadius is between 0 and 1 (dc01eff72d by @jamesreggio)
- Fix
borderRadius
with Android API level < 18 (5aa1fb3ff3 and ca7fe72c31 by @rsnara) - Make Android
lineHeight
behavior match iOS's 📏 (3f1b021506) - Fixed autoscroll to cursor on Android TextInput (0bef872f3f by @shergin)
- Fix logging unpacking time on Android when it happens concurrently with eager unpacking (028b64bcd3 by @alexeylang)
- Prevent an Android crash when TextInput has
selectionColor
defined but there is no drawable cursor (1e18d907bf by @gpeal)
iOS exclusive fixes
- Don't have Xcode warnings for YGDefaultLog in newly created projects (72e762d4bc by @woehrl01)
- iOS RCTEventEmitter uses a
double
for count, not NSInteger (eaa84997ce) - Fix
isNuclideDebuggingAvailable
on iOS (59c3e33f63) - iOS ScrollView is now rendered correctly with RefreshControl (75d62bf0a8 by @vonovak)
- Fix a crash when keyboard is visible and bridge reload happens on iOS (d9c658566a by @fromcelticpark)
- RedBox now appears beneath the status bar on iOS (33cefc1760 by @adamjernst)
- Fractional border widths on iOS are now the right size, honoring insets (15179f1798 by @Nikita2k)
- Implement
requiresMainQueueSetup
in RCTTVNavigationEventEmitter to satisfy Xcode warning (ee3532b5c2 by @charpeni) - Support the iPhone X in the sample project's header (ad4b124aa1 by @vincentriemer)
testID
works on TabBarItem on iOS (e19d9dec9b)- On iOS, don't error on the first live-reload of large codebases because of too little wait time (b6f1a6085f by @lelandrichardson)
- Prevent iOS crash on receiving bad unicode in XMLHTTPRequest (1c04ceeb4b by @cdlewis)
- Define
pod_target_xcconfig
for PrivateDatabase (38b96cd7bb by @ide) - Fixed podspec include/excludes around tvOS (ba1d7e92e4 by @yygene)
- Don't spam the logs for iOS when receiving
ECONNREFUSED
on connecting to packager (b1701ccaef and ff3dc2ed19 by @adamjernst) - Don't crash Systrace when debugging JS remotely on iOS (e8eec24706 by @alexeylang)
Removed
- Removing
reactBridgeDidFinishTransaction
from RCTScrollView (a255204e3e by @shergin) - Removing inherited background color optimization from RCTText to reduce code complexity – please give feedback if you find performance differences! (8c8944c10f by @shergin)
Other
Below is a list of the remaining, low-level changes that made it into this release of React Native.
- Foundational work for a new justifyContent value space-evenly (1050e0b476 by @woehrl01)
- Add Systrace-based telemetry to Hermes GC (05e862d48d)
- Unify Systrace native hook argument passing (52e3ae9063 by @amnn)
- Use different symbols for SystraceSection depending on
WITH_FBYSTRACE
(03956c4ecf) - Don't set global.performance to undefined if it was initialized already (dfebcb70a5 by @alexeylang)
- Autofixes for migrating to Buck's source-only ABI feature (801cbdb047 by @jkeljo)
- Add remote API to uninstall the global error handler in RN (1d16923063)
- Add RCTLibraryPathForURL in RCTUtil (2fecbf6171)
- Fix sections that come from React Fiber (1f40c95076 by @alexeylang)
- Fix boolean conversion in sync RN method calls. (dd888d3346)
- Fix
embeddedBundleURL
update situation (d1fc8ef3a3) - Remove
android_react_native_perf.use_separate_ui_bg_thread
experiment. (4f886a29a1) - ScrollView related files were moved to dedicated folder (098a63a1ce by @shergin)
- move page registration logic in to jsinspector (bef7967f9a by @bnham)
- Type global hooks as function pointers (eca51eb46a by @johnislarry)
std::string
toconst char*
(b952365ba6 by @johnislarry)- Allow extending props supported by native animations (71751e9cc7 by @andrewimm)
- Meyers singleton jsc error extractor (434f432d5d by @johnislarry)
- Do not overwrite the same text in TextInput (29f3f55298)
- Renaming uiManagerWillFlushUIBlocks -> uiManagerWillPerformMounting (0a8721c340 by @shergin)
- Skylarkify flags macros. (ed2bfcb35a by @ttsugriy)
- Skylarkify
config_utils_defs
macros. (88f6f69152 by @ttsugriy) - Round size geometry for Button and RichText components. (4034febb7e by @iaroslav-pavlov
- Temporarily patched Map/Set non-extensible check into RN dev renderer (a99f0d6100 by @bvaughn)
- Run buildifier over all BUCK files (d674d48a7b by @zertosh)
- Pass
scriptURL
to RCTTestRunner (266ab7a006) - Make RCTNativeModule::invokeInner explicitely return
folly::none
in case of error (0ac5a5230c by @fromcelticpark) - Make RCTPackagerConnection a singleton (9180d4eb82 by @adamjernst)
- Register split segment paths with RAMBundleRegistry (cff0d8e0e5 by @fromcelticpark)
- check if listener is still in the set before calling
onHostResume
(ad89ea7b50) - export SeparatorsObj type for re-use in ListItems etc. (c6fe101cdc by @sahrens)
- Do not mark node as dirty if, new and old values are undefined (41da6e3128 by @woehrl01)
- Remove RAMBundleRegistry subclasses (6ecae73fe5 by @fromcelticpark)
- Fix
minimumViewTime
in ViewabilityHelper (d19d137cc1)