Skip to content

Latest commit

Β 

History

History
2316 lines (1777 loc) Β· 270 KB

CHANGELOG-pre-060.md

File metadata and controls

2316 lines (1777 loc) Β· 270 KB

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 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)

Android specific

Fixed

Android specific

iOS specific

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

iOS specific

Android specific

Added

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

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

iOS specific

Fixed

Android specific

iOS specific

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

Fixed

Android specific

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

iOS specific

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') to build.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

iOS specific

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

Android specific

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 an Array<number> of destructive indexes (67e7f16944 by @sdg9)
  • Add isEventFromThisApp to KeyboardEvent 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 var PROJECT_ROOT (9ccde378b6 by @janicduplessis)

Changed

Android specific

iOS specific

Deprecated

The following deprecations are part of our Lean Core initiative; read more about it in the blog post.

iOS specific

  • Replace deprecated stringByReplacingPercentEscapesUsingEncoding: with stringByAddingPercentEncodingWithAllowedCharacters: (61ca119650 by @pvinis)

Removed

  • react-native-git-upgrade is now officially dead; use react-native upgrade instead (which uses rn-diff-purge under the covers) (a6bdacb257 by @cpojer)

iOS specific

Fixed

Android specific

iOS specific

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

iOS specific

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

Fixed

iOS specific

Security

Android specific

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

Changed

Android specific

Removed

Fixed

Android specific

iOS specific

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, and SwipeableRow 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 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)
  • 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 existing Error.nativeStackIOS support. See PR for examples. (#20940 by @Salakar)

iOS specific

Changed

Breaking Changes πŸ’₯

  • 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";
      }
    
      // ...
    }

Android specific

iOS specific

Removed

Fixed

Android specific

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

iOS specific

Removed

  • Remove trailing slash from origin header if no port is specified (#22290) (cbe7d41f3f)

Fixed

iOS specific

Security

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

Removed

  • Remove useless additional blur call (#22156) (ada7089066)

Fixed

Android specific

iOS specific

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

iOS specific

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

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

Android specific changes

iOS specific changes

Fixed: bugs that have been resolved

Android specific fixes

iOS specific fixes

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 and 16.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

Android specific additions

Changes: existing functionality that is now different

Android specific changes

iOS specific changes

Fixed: bugs that have been resolved

Android specific fixes

iOS specific fixes

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: facebook#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

Changes: existing functionality that is now different

Android specific changes

Fixed: bugs that have been resolved

Android specific fixes

Removed: features that have been removed; these are breaking

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

iOS specific additions

  • Expose scrollEnabled as iOS prop for TextInput (b9c28c236b by Chun Chen)

Changes: existing functionality that is now different

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

iOS specific fixes

Removed: features that have been removed; these are breaking

iOS specific removals

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 the WebView 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 that WebView will be deprecated soon
  • NavigatorIOS will be fully removed from the main codebase starting 0.58.0 (via this commit); it is now deprecated

Updating to this version

  1. Upgrade the version of React Native in the package.json from 0.56.0 to 0.57.0, and the React version to 16.5

  2. 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"]
      }
  3. 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.

  4. Upgrading android gradle version to 4.4

    1. In your project's android/gradle/wrapper/gradle-wrapper.properties file, change the distributionUrl to https\://services.gradle.org/distributions/gradle-4.4-all.zip
    2. In android/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'
    3. In android/app/build.gradle file update all your compile statements to be implementation, e.g. implementation 'com.facebook.fresco:animated-gif:1.10.0'
    4. 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.
  5. 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'),
    }
  6. Run yarn to ensure that all the new dependencies have been installed

Added: new features

Android specific additions

iOS specific additions

Changes: existing functionality that is now different

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 like setTimeout(this._imgRef.focus, 1000) will no longer work. Please instead do: setTimout(() => this._imgRef.focus(), 1000).

Android specific changes

Fixed: bugs that have been resolved

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

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 to Text (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

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 like setTimeout(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 for ListHeaderComponent 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 to DatePickerIOS (3b53091869)
  • Fix crash during Archive phase on Xcode 9.3 (344c205070)
  • 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)
  • 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 support ReactRootView recycling (4a9b2a7302)
  • Fix NullPointerException when emitting event using UIManagerModule (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 a TextInput (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 and blurTextInput (ce3b7b8204)
  • [BREAKING] 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)

Android specific removals

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

RNAndroidTVDemo

  • 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 other Animated.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

iOS specific additions

Changes: existing functionality that is now different

iOS specific changes

  • tvOS onPress magnification animation now works via the tvParallaxProperties prop object taking pressMagnification, pressDuration, and pressDelay (6c353fd7e9 by @JulienKode)

Fixed: bugs that have been resolved

iOS specific fixes

Android specific fixes

Removed: features that have been removed; these are breaking

Android specific removals

  • ReactInstanceManager#registerAdditionalPackages has been removed; Create UIManager interface and extract common classes in uimanager/common (6b45fb2cb1 by @mdvacca)

iOS specific removals

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

VR Specific Additions

Android Specific Additions

iOS specific additions

Removed

iOS specific removals

  • Removed outdated assertion in RCTShadowView related to breaking change in Yoga (e3ff3cf6cb by @shergin)

Android specific removals

iOS specific removals

Changed

iOS Specific Changes

Android specific changes

Fixed

Android specific fixes

iOS specific fixes

Internal work

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

iOS exclusive additions

  • react-native run-ios now supports the --port argument for metro (33d710e8c5)

Android exclusive additions

Changed

iOS exclusive changes

Android exclusive changes

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

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

Other

Below is a list of the remaining, low-level changes that made it into this release of React Native.

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

iOS Specific

Deprecated

  • Ignore YellowBox warnings with YellowBox.ignoreWarnings([...]) rather than console.ignoredYellowBox = [...] (26038f50bb by @wli)

Changed

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

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

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.