CHANGELOG-0.5x.md
This file contains all changelogs for releases in the pre-0.60 range. Please check out the other CHANGELOG-*.md files for newer versions.
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.
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.
If isInteraction is not specified in the config, it would always default to true 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)
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.
hasteImpl (bcd1e2 by @CaptainNic)EventEmitter#listeners() (f68dc8 by @ide)_updateViewableItems immediately (08141e by @sahrens)_scrollAnimatedValue offset of ScrollView (e0d1b3 by @miyabi)setState in VirtualizedList (c40a93 by @sahrens)text Offset is {0,0} (17a81b by @Woodpav)UnknownCppException (84e263)MissingWebViewPackageException (379874 by @thorbenprimke)behavior="height" resize on keyboard close (7140a7 by @WaldoJeffers)This patch release was unpublished.
This patch release was unpublished.
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.
NoSuchKeyException when parsing JS stack frames without line numbers (d7bd6c by @Salakar)mostRecentEventCount is not updated (b8aac0 by @jainkuniya)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.
scrollToOverflowEnabled prop to ScrollView (6f4239b37c by @mysport12)underlineColorAndroid in TextInput (556aa93ed7 by @sunnylqm)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.
maxLength when inserting characters at begin (17415938c7 by @zhongwuzw)RCT_EXTERN_MODULE for swift classes (ff66600224)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.
trackColor being reset when toggled (7652e31d8c and d6ee448e15 by @dulmandakh and @ejanzer)implementation('org.conscrypt:conscrypt-android:2.0.0') to build.gradle (75af15ede4 by @dulmandakh)This is a small patch release that addresses two critical issues from the 0.59.0 release.
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.
getPhotos now supports assetType: "All" to let users pick from video and photos simultaneously (54534e79d7 by @kesha-antonov)textAlign:justify for android O+ (api level >=26) (d2153fc58d by sunnylqm)rejectResponderTermination to enable TextInputs inside Swipeables to function properly (11df0eae5f by @cmcewen)destructiveButtonIndexes for an Array<number> of destructive indexes (67e7f16944 by @sdg9)isEventFromThisApp to KeyboardEvent notifications to disambiguate keyboard events when apps are running side-by-side (05f35c296d by @nossbigg)react-native-xcode.sh using env var PROJECT_ROOT (9ccde378b6 by @janicduplessis)React is now at v16.8.3 (ccefc700d0 and (2af13b4477 by @cpojer and @hramos)Flow dependency is now at v0.92.0 (5ee738659b by @pakoito)@react-native-community/cli dependency is at v1.2.1 (a252aee2ea and 5e1504b0fc by @grabbou)react-native start rather than react-native bundle (46aaa02274 by @sunnylqm)OkHttpClientProvider.replaceOkHttpClient method; please use OkHttpClientProvider.setOkHttpClientFactory from 0.54+ (7cbdd7b6ac by @cdlewis)ViewHelper, use ViewCompat instead; this may also require changing the android:theme to be from Theme.AppCompat; read more about it in the blog post (c493cfe708 by @dulmandakh)ReadableMap, WritableMap, ReadableArray, Writable, ReactPackage, and native module interfaces; this may impact Kotlin usage (b640b6faf7, c93cbdf1b2, 7b33d6b0b9, and 84f40da990 by @dulmandakh)Soloader is now at v0.6.0 (07d1075f37 by @dulmandakh)v28.0.0 (5bbed43854 by @dulmandakh)targetSdkVersion is now at v28 (57f444bd8a by @dulmandakh)v3.3.1 (da5b5d2fa1 by @dulmandakh)buildToolsVersion to build.gradle (cf52ab561d by @dulmandakh)ReactActivity, ReactSlider, ReactTextView, and ReactPicker extends AppCompatActivity; updates to TimePickerDialogModule and DatePickerDialogModule as well (dda2b82a0a, 3b9604feda, ba0c3ffd5b, 833429dd63, adc1410572, c6c5a173bc, and be361d0fc1 by @dulmandakh)SYSTEM_ALERT_WINDOW permissions available only in debug builds (84a2fb0a4a by @dulmandakh)removeClippedSubviews default to true on Android (1a499f43b2 by @fred2028)~/.rncache to ~/Library/Caches/com.facebook.ReactNativeBuild (1024dc251e by @sryze)The following deprecations are part of our Lean Core initiative; read more about it in the blog post.
expo-file-system and react-native-fs (62599fa8ff by @EvanBacon)stringByReplacingPercentEscapesUsingEncoding: with stringByAddingPercentEncodingWithAllowedCharacters: (61ca119650 by @pvinis)react-native-git-upgrade is now officially dead; use react-native upgrade instead (which uses rn-diff-purge under the covers) (a6bdacb257 by @cpojer)Map and Set polyfills no longer reject non-extensible object keys; also fix hash collision scenario (90850cace9 by @benjamn)yarn test in new projects (5218932b13 by @Esemesek)getInspectorDataForViewTag that caused red screen when toggling inspector (46f3285a3f by @TranLuongTuanAnh)displayName for Image; this will make tests no longer mistake it as Component (4989123f8c by @linnett)wait_for_recheck=true to work around crash in Flow (ffc9908bef by @gabelevi)jest and jest-junit to be only development dependencies (c7b57f1986 by @vovkasm)onError callback (7795a672d3 by @Jyrno42)useNativeDriver (e405e84fc3 by @scisci)SystemUiVisibility flags (8afa0378cd by @rogerkerse)fetch() POST requests from appending charset=utf-8 to Content-Type header (4a807761a4 and 0d5aebbd9a by @nhunzaker)setAttributedText for CJK languages on single-line text fields (e38be82dfa by @mandrigin)scrollEnabled used in singleline textinput (9ff43abe65 by @zhongwuzw)DoubleConversion and glog to cxxreact, jsi and jsiexecutor subspecs in React.podspec file (00392ac46b by @alexruperez)secureTextEntry cursor spacing (8ce3c1b43e by @ericlewis)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.
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.
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.
0.6.0 (07d1075f37 by @dulmandakh)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.
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.
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.
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:
ScrollView, CameraRollView, and SwipeableRow that make it no longer bound to the component instance in certain methods/assetsAside 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.
publicPath to enable serving static assets from different locations (0b314960aa by @gdborton)bounce() function that can be used to trigger a bounce without callbacks (7fe3f90156)adb shell setprop metro.host (e02a154787 by @stepanhruda)WritableMap arg for extra properties (userInfo). See the interface defined in Promise.java for available methods. This is accessible in JavaScript as Error.userInfo. This is to match iOS's existing Error.userInfo behavior. See PR for examples. (#20940 by @Salakar)nativeStackAndroid property to promises rejected with an Exception/Throwable - making native error stacks available inside Javascript: Error.nativeStackAndroid. This is to match iOS's existing Error.nativeStackIOS support. See PR for examples. (#20940 by @Salakar)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)setClientAuthenticationCredential when useWebKit={true} for mutual TLS authentication (8911353c47 and 8911353c47 by @mjhu)v0.85.0 (adc8a33fcf by @samwgoldman)v0.49.1 (f867db366a, 88882951e1, 31bb551e75, de60e8643a, and de60e8643a by @alexkirsz and @rafeca)v24.0.0-alpha.6 (1b4fd64325, 66aba09251, and 06c13b3e06 by @rafeca and @rubennorte)v1.0.0 (#21880) (cdbf719307 by @jmheik)v2018.10.22.00 (a316dc6ec3, 287934dba9, and a70625abd7 by @Kudo and @radko93)16.6.3 now via sync for revisions 4773fdf...6bf5e85 (0cb59b5c23 and 073ad6a036 by @yungsters)Public methods of components converted to ES6 classes are no longer bound to their component instance. For ScrollView, the affected methods are setNativeProps, getScrollResponder, getScrollableNode, getInnerViewNode, scrollTo, scrollToEnd, scrollWithoutAnimationTo, and flashScrollIndicators. For CameraRollView, the affected methods are: rendererChanged. For SwipeableRow, the affected methods are: close. Therefore, it is no longer safe to pass these method by reference as callbacks to functions. Auto-binding methods to component instances was a behaviour of createReactClass that we decided to not preserve when switching over to ES6 classes. (you can refer to this example)
Native Modules in Android now require @ReactModule annotations to access .getNativeModule method on the ReactContext. 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";
}
// ...
}
PlatformConstants.ServerHost, PlatformConstants.isTesting, and PlatformConstants.androidID for performance (2bf0d54f15, 339d9d3afb, and 9f9390ddfc by @stepanhruda, @fkgozali, and @axe-fb)UIManager.measureViewsInRect() (d6236796b2 by @shergin)react-native init --help so that it doesn't return undefined (58732a88b6 by @ignacioola)react-native --sourceExts (ce860803a4 by @elyalvarado)visible prop is undefined or null (cc13a7367b by @MateusAndrade)setStyleAttributePreprocessor (04085337bc by @brentvatne)Image.resizeMode isn't respected while source is loading, resulting in unexpected padding (673ef39561 by @dulmandakh)resizeMode for defaultSource images rather than showing padding while loading (673ef39561 by @dulmandakh)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
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.
RCTFatalException (#22532) (2831d9ef61 by @zackzachariah)-[UITextView setAttributedString:] while user is typing (#19809) (f77aa4eb45)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.
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.
visible prop check to handle undefined and null (#22072) (cc13a7367b by @MateusAndrade)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.
displayName (7a914fcef4 and 53da585832 by @rajivshah3 and others)$NODE_BINARY contains spaces (7d4e94edcc by @sundbry)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!
<Text> metrics in onTextLayout events (737f93705c by @mmmulani)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 and 16.7.alpha is not yet supported by React Native.
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!
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.
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!
overflow: scroll (201f2f189f by @mcolotto)overflow: visible (4af4da9089 by @olegbl)Invalid response for blob (7e9c3f77cc by @anthonyhumphreys)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!
@Scoped modules (4b106be477 by empyrical)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.
WKWebView can now be used within the WebView component; read more at @rsnara's awesome blog postAs 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 that WebView will be deprecated soonNavigatorIOS will be fully removed from the main codebase starting 0.58.0 (via this commit); it is now deprecatedUpgrade the version of React Native in the package.json from 0.56.0 to 0.57.0, and the React version to 16.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
android/gradle/wrapper/gradle-wrapper.properties file, change the distributionUrl to https\://services.gradle.org/distributions/gradle-4.4-all.zipandroid/build.gradle file add google() right above jcenter() in both buildscript and allprojects repositories. Then change Android build tools to version 3.1.4 classpath 'com.android.tools.build:gradle:3.1.4'android/app/build.gradle file update all your compile statements to be implementation, e.g. implementation 'com.facebook.fresco:animated-gif:1.10.0'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.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 to rn-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
YogaNodeProperties implementation based on ByteBuffer (0c97e75dfe and 23657ccf5b by @davidaurelio)FlatList and SectionList to Animated exports (daa7c78055 by @yunyu)FlatList/VirtualizedList for ListHeaderComponent and ListFooterComponent (a2675ced4e)haste field in package.json; read more in the docs entry (03476a225e by @empyrical)snapToOffsets to ScrollView and made a number of fixes to snapToInterval as well (fd744dd56c by @olegbl)AccessibilityInfo.setAccessibilityFocus for Android (be715ec705 by @draperunner)overflow style property (b81c8b51fc and bbdc12eda7by @yungsters)WebView can now use WKWebView internally if you pass useWebKit={true} (7062e5bdb5, 1442c265da, 3703927e7e, 7a6dd9807c, e5f95aba9b, 1741fe9571, 90e85a4adc, 0022354525, 03b57d9db6, 1584108805, a997c0ac16, 4ca949b46e, 721763020a, 1af17f1648, 215fa14efc, bacfd92976, 95801f1eda, b18fddadfe, 28b058c341, and 78fcf7c559 by @rsnara)accessibilityHint for iOS (253b29dbd8 by @draperunner)unbundle is now ram-bundle (ebf5aeab28 by @jeanlauliac)StyleSheet.compose Flow Type (50a481d23a by @yungsters)react-native-dom in haste/cli config defaults (c4bcca6685 by @vincentriemer)metro.config.js settings (c5297c75cb by @rozele)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 like setTimeout(this._imgRef.focus, 1000) will no longer work. Please instead do: setTimout(() => this._imgRef.focus(), 1000).Image source without a uri now returns null (28c7ccf785 by @himabindugadupudi)targetSdkVersion is 26 (bfb68c09ee by @dulmandakh)TextInputState's currentlyFocusedField() (b4b594cec1 by @janicduplessis)<VirtualizedList> fix for jumpy content when initialScrollIndex specified (e0c73633cf by @rbrosboel)flexGrow and flexShrink set to 0 except for one (90a408ea6f by @priteshrnandgaonkar)react-native-windows in hasteImpl accepted paths (54942746d4 by @rubennorte)Animated (db2159d0b3 by @yunyu)<TextInput> slowness (5017b86b52 by @gnprice)<TextInput> placeholder not being completely visible (84022321c4 and 86f24ccf71 by @jainkuniya)<ScrollView>'s scroll position during layout changes with RTL content (de573277bf)<ScrollView> overflow issue (d5465a9a0a)TextInput.clear() and TextInput.setNativeProps({text: ''}) to work (2307ea60d0 by @magicien)<TextInput> on iOS when inputting in Chinese/Japanese (892212bad2 by @mmmulani)<ScrollView> bug encountered with brownfield apps (fab5fffbb3 by @PeteTheHeat)<PickerIOS> (e592d6f8c7 by @VSchlattinger)undefined_arch error received when building in Xcode 10 beta (e131fffb37 by @futuun)ScrollView.propTypes; use flow or typescript for verifying correct prop usage instead (5b6ff01764 by @sahrens)ReactInstancePackage is now deprecated; use @link ReactPackage or @link LazyReactPackage (b938cd524a by @axe-fb)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.
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.
Trailing commas are now allowed.
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).
We recommend using Xcode 9.4 as that is what we use to run our tests.
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 defaultGeolocation is disabled by default.
<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.
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.
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.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.
babelHelpers with Babel 7 support (fbd1beaf66)FlatList is now Strict Mode compliant (a90d0e3614)?. optional chaining operator plugins (aa6f394c42)flexWrap: 'wrap-reverse' (d69e55060f)accessibilityTraits to Text (654435d1ed)SpringInterpolator (1dde989919)react-native link (843cfc3b20)Image.defaultSource (b0fa3228a7)getParent methods for non-breaking API change (c3c5c3cbce)RCTBridgeModule.h (ca898f4367)react-native init will use Babel 7 (e315ec9891)WebView to only http(s) URLs: (634e7e11e3, 23f8f7aecb)Cannot resolve module X issue due to removal of @providesModule (843a433e87)YellowBox (d0219a0301)$FlowFixMe to invalid prop accesses where Flow wasn't complaining before (f19ee28e7d)Image (8bac869f5d)SegmentedControlIOS (113f009698)ProgressViewIOS (c87701ba05)PickerIOS (1c66cdc7e8)Switch (06052a2330)Slider (cbe045a95f)RefreshControl (891dfc3da4)ListView (4b1ecb6204)TextInput (c8bcda8150)TouchableBounce (8454a36b0b)TouchableOpacity (44743c07ad)TouchableHighlight (f0c18dc820)TouchableWithoutFeedback (0b79d1faa2)ScrollView (b127662279)DatePickerIOS (97e572ea6d)KeyboardAvoidingView (188b118b60)ActivityIndicator (0b71d1ddb0)$FlowFixMe in TouchableBounce (ffda017850)$FlowFixMe in ScrollView (af6e2eb02d)$FlowFixMe in ListView (af6e2eb02d)$FlowFixMe in Text (6042592cf4)$FlowFixMe in RTLExample (206ef54aa4)$FlowFixMe in AppContainer (a956551af7)$FlowFixMe in Slider (1615f9d161)StyleSheet: Support animated values for border dimensions (3e3b10f404)react-devtools-core and plist to include security fixes reported by npm audit (3a1d949906)Switch to ES6 Class (970caa4552)Slider to ES6 Class (5259450c14)ActivityIndicator to ES6 Class (edd7acbb1e)RefreshControl to ES6 Class (a35a238317)KeyboardAvoidingView to ES6 Class (c017dcb0f2)DatePickerIOS to ES6 Class (f8c8231706)Text to ES6 Class (ab92c00245)context.isInAParentText w/ React.createContext (e1339bc183)Text implementation (06c05e744d)Text to React.forwardRef (e708010d18)View to React.forwardRef (3e534b9aab)genMockFunction and genMockFn to fn in tests (390ded871c)ViewProps exact (65c336f38f)TVViewProps into ViewProps instead of intersection (bc658d3c44)let/const (8f5ebe5952)MockNativeMethods in Jest (5d4c542c58)app.json after ejecting (57774a4a98)git apply --reject for failed upgrades (4fbd244b9a)TouchHistoryMath from React to React Native (06085d3836)RCTInputAccessoryView (c136c54ff0)ListEmptyComponent in an extra view (db061ea8c7)Text PropTypes to its own file (cd8128b2ec)ReactNative.NativeComponent native methods in Jest (3e9a371ace)View and VirtualizedList (5035af80ec)ViewPropTypes (f1316cab6c)Style to DangerouslyImpreciseStyle (4895c645ea)requireNativeComponent's signature has been simplified to only take extraOptions (820673e707, b549e364e0, 28d37781c6, 1c90a2b47b, and 1ab7d49c2d by @yungsters)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 like setTimeout(this._txtRef.focus, 1000) will no longer work. Please instead do: setTimeout(() => this._txtRef.focus(), 1000).file:// (634e7e11e3 by @mmmulani)RCTFont size overrides (6611fefef7)ReactFragmentActivity deprecated as it's not necessary when targeting API level 14 and above (77a02c0d83)underlineColorAndroid to transparent (a3a98eb1c7)WebView geolocation by default (23d61b35fb)ReadableNativeMap (30d06b4286)react-native link will now replace '/' by '_' when linking projects. If you previously linked scoped packages, they will get linked again. (dbd47592a1)VirtualizedList now accounts for ListHeaderComponent length when calculating offset (604bcfa4a8)Modal + FlatList scrolling (45b0907f61)RCTNetworking where not all tasks/handlers were being cleared during invalidation (b805172034)keyboardShouldPersistTaps: never (ffe6c110f7)Text (e2ce22b823)VirtualizedSectionList lint warnings (26a1eba1ce)VirtualizedSectionList:ItemWithSeparators (488a4c7e1c)TextInput's initial layout measurements (c6b4f9f2ce)requireNativeComponent check (1c90a2b47b)TextInput autocapitalization bug (ff70ecf868)ViewPropTypes (41a940392c)StatusBarManager (4a2c560768)ReactNative.NativeComponent (1/2) (de11ba2a5e)ReactNative.NativeComponent (2/2) (752863629d)react-native init projects (843a433e87)react-native-windows (54942746d4)react-native run-ios command play nicely with multiple Xcode versions (a130239257)TextInput by an empty string (1ffb2b63be)InputAccessoryView so it can be imported (80fc415cf1)InputAccessoryView safe area conformance (490f22ae72)run-ios (0934c1778f)run-ios not turning on Simulator (9736ddc061)onChange event definition to DatePickerIOS (3b53091869)RNTesterPods: Add missing folly include (128c9343c4)RNTesterPods: folly::Optional's has_value() to hasValue() until folly is upgraded (128c9343c4)RNTesterPods: Fix import for RCTTestAttributes.h (128c9343c4)RNTesterPods: Fix conversions.h to use namespaced includes (128c9343c4)-Wenum-conversion (b8f30db0ae)TextInput slowness on Android (5017b86b52)requireNativeComponent in .android.js files (a51e8b19cc)RefreshControl from getting stuck when a parent is scrolled horizontally (33ffa79a51)DevServerHelper (56d48bd9ec)ReactInstanceManager unmountApplication to support ReactRootView recycling (4a9b2a7302)NullPointerException when emitting event using UIManagerModule (291c01f4ff)ScrollView with a TextInput (2f1421dec7)focusTextInput and blurTextInput (ce3b7b8204)ImageResizeMode on Image is no longer exposed; check your usage of resizeMode; the same resize modes exist, but pass them as strings instead (870775ee73 by @TheSavior)<View> within <Text> (e.g. <Text><View /></Text>) (6a1b41643aUIActionSheetDelegate methods (5863b564f8)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.
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:
useNativeDriver flag with animations that track other Animated.Values (b48f7e5605 by @kmagiera)contextMenuHidden property for TextInput (2dd2529b3a by @amhinson)testOnly_pressed to TouchableHighlight for snapshot tests (3756d41de1 by @sahrens)letterSpacing for Text and TextInput (5898817fc1 by @motiz88)base-line metric exposure for Text and TextInput (51b3529f6c, 0dbe18375e, and 7630a614e4 by @shergin)initialDate prop (446ce49e9b)RCTVersion.h's RCTGetReactNativeVersion() (30469ed001 by @LeoNatan)react-native run-ios --simulator ... (2ad34075f1 by @koenpunt)*.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)isInstalled check for Android and references to unregister (ec884890b1 by @rozele)onPress magnification animation now works via the tvParallaxProperties prop object taking pressMagnification, pressDuration, and pressDelay (6c353fd7e9 by @JulienKode)opacity upon change in disabled prop (9366ce416f by @maxkomarychev)react-native-vector-icons (a759a44358 and 54dc11a5fb by @jeanlauliac and @t4deu))removeEventListener method (59c7b2cfac by @MoOx)node-notifier dependency to fix memory leak (860fcd458a by @rickhanlonii)isConnected works again (dbafc29e60 by @alburdette619)react-native run-ios --device [id] by passing port when running on device (f8fee0a631 by @jozan)run-ios where Entry, ":CFBundleIdentifier", Does Not Exist was being received (5447ca6707 by @blackneck)onLayout prop for TextInput (8a073c1d8b by @rozele)invertStickyHeaders can now be set from SectionList or FlatList (dd479a9377 by @dannycochran)Systrace.swizzleJSON() (3e141cb6c9 by @yungsters)ReactInstanceManager#registerAdditionalPackages has been removed; Create UIManager interface and extract common classes in uimanager/common (6b45fb2cb1 by @mdvacca)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:
Space-evenly is now there (sorry for the confusion with 0.52's release notes)The changelog is arranged by the customary added, removed, changed, and fixed plus internal; the changes are also organized by platform.
XMLHttpRequest#fetch, and fetched on files to a local blob consistently (be56a3efee and 854c2330eb by @satya164 and @fkgozali)invertStickyHeaders (ecaca80d42 by @janicduplessis)space-evenly is now supported (sorry for the confusion with 0.52 notes) (b1cdb7d553 by @gedeagas)link, and unlink – keep an eye on react-native-window's use of it! (a40bfa730e by @rozele)minify flag to react-native bundle command (3f969cb1db by @tomduncalf)maintainVisibleContentPosition (cae7179c94 and 65184ec6b0 by @sahrens)accessibilityElementsHidden prop (31288161e1 by @aputinski)scripts/react-native-xcode.sh (PR rev 0d4ff1b7ea by @brunolemos with landing assists b8c86b8dec and 0d4ff1b7ea)utf8 utility - use the utf8 package now instead (431670f908 by @mathiasbynens)visible-password or phone-pad keyboard types. (164f6b6afd by @BrandonWilliamsCS)resizeMode="center" is now documented and has an example present (be7037fd8e by @motiz88)skipPermissionRequests: true (5c17db8352 by @ngandhy)DevServerHelper (644123aa6f, e756251413, 6e44356c9b, 1019bda930, 06d8f96a64, f88c9d6382, and 108f9664bf by @davidaurelio).gitignored files during the react-native-git-upgrade process (7492860ffb by @ncuillery)Animated.modulo values with useNativeDriver: true (6c38972327 by @motiz88)NativeModules.UIManager.showPopupMenu method calls error callback (0c18ec5b9c by @dryganets)secureTextEntry changes (09b43e479e by @jainkuniya)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)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 and DeviceInfoModule 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 to server (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)
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 🎉.
easing and duration (4d33080f0f by @sahrens)react-native run-ios now supports the --port argument for metro (33d710e8c5)snapToInterval like iOS (ddd65f1ba9 and b2848a54b0 )onKeyPress like iOS (c9ff0bc212 by @joshyhargreaves)isInspectable (59c7967627 by @bnham)pod install a ton (d40db3a715 by @CFKevinRef)autoGrow prop, since this is platform-default behavior now (dabb78b127 by @shergin)minify=true when calculating the list of dependencies for the CLI (4a1bb8fe8d by @rafeca)Below is a list of the remaining, low-level changes that made it into this release of React Native.
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
npm run prettier
(164591218f by
@janicduplessis)getLastRowID method
(d79e245d19)YellowBox.ignoreWarnings([...]) rather than
console.ignoredYellowBox = [...]
(26038f50bb by
@wli)renderApplication() now supports async initial render
(1b22d49ae8 by
@bvaughn)backgroundColor on TouchableHighlight
(5a1171ebfa by
@sahrens)RCTRefreshControl from jumping around
(2e1707d0e6 by
@sophiebits)transformCommand: add missing test
(73a01be9bc by
@jeanlauliac)dev=false
(6d92046c56 by
@rafeca)justifyContent while you're minWidthing and marginLefting;
before the justification wasn't honored
(f5becebc07 by
@woehrl01)marginLeft: auto and alignItem: stretch now play nicely together; before
the width and height ended up incorrect
(5f99b1a55f by
@woehrl01)react-native-git-upgrade, don't execute git's hooks
(0182086350 by
@adrienthiery)react-native-git-upgrade and failing with a signal, return that
to the terminal
(b9a5862f67 by
@mateusz-)selection prop that made it
not-so-random
(766f020e68 by
@rozele)#define isnan __builtin_isnan for Android clang-5 to mimic
gcc's default behavior
(f8fe6b0c70)borderRadius with Android API level < 18
(5aa1fb3ff3 and
ca7fe72c31 by
@rsnara)lineHeight behavior match iOS's 📏
(3f1b021506)selectionColor defined but
there is no drawable cursor
(1e18d907bf by
@gpeal)double for count, not NSInteger
(eaa84997ce)isNuclideDebuggingAvailable on iOS
(59c3e33f63)requiresMainQueueSetup in RCTTVNavigationEventEmitter to satisfy
Xcode warning
(ee3532b5c2 by
@charpeni)testID works on TabBarItem on iOS
(e19d9dec9b)pod_target_xcconfig for PrivateDatabase
(38b96cd7bb by
@ide)ECONNREFUSED on connecting to
packager (b1701ccaef
and ff3dc2ed19 by
@adamjernst)reactBridgeDidFinishTransaction from RCTScrollView
(a255204e3e by
@shergin)Below is a list of the remaining, low-level changes that made it into this release of React Native.
WITH_FBYSTRACE
(03956c4ecf)embeddedBundleURL update situation
(d1fc8ef3a3)android_react_native_perf.use_separate_ui_bg_thread experiment.
(4f886a29a1)std::string to const char*
(b952365ba6 by
@johnislarry)config_utils_defs macros.
(88f6f69152 by
@ttsugriy)scriptURL to RCTTestRunner
(266ab7a006)folly::none in case
of error (0ac5a5230c
by @fromcelticpark)onHostResume
(ad89ea7b50)minimumViewTime in ViewabilityHelper
(d19d137cc1)