Skip to content

Latest commit

 

History

History
1848 lines (1475 loc) · 186 KB

CHANGELOG.md

File metadata and controls

1848 lines (1475 loc) · 186 KB

Changelog

[0.58.0]

Welcome to the January 2019 release of React Native. There are a number of significant changes in this version, and we'd like to especially call your attention to:

  • Modernizing and stengthening flow types for core components
  • Break 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

Thanks to those who gave feedback on our release candidates. If you're interested in helping evaluate our next release, check you our tracking issue here.

Added

  • Add support for publicPath to enable serving static assets from different locations (0b31496 by @gdborton)

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 (e02a154 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 behaviour. 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.

Android specific

iOS specific

  • Suppress yellow box about missing export for native modules (5431607 by @fkgozali)

Removed

Fixed

Android specific

  • Fix crash when removing root nodes (b649fa9 by @ayc1)
  • Fix various ReactInstanceManager deadlocks and race conditions (df7e8c6, 309f85a, and be282b5 by @ayc1)
  • Fix IllegalArgumentException when dismissing ReactModalHostView and DialogManager (e57ad4e and 38e01a2by @mdvacca)
  • Fix incorrect merged asset path with flavor for Android Gradle Plugin 3.2 (e90319e by @yatatsu)
  • Fix HTTP connection ontimeout callback (a508134)
  • Fix websocket properly closing when remote server initiates close (2e465bc by @syaau)
  • Fix compatibility issue for Android 16 device (5939d07, f22473e, and d4d457b by @gengjiawen)
  • Fix issue where Image.resizeMode isn't respected while source is loading, resulting in unexpected padding (673ef39 by @dulmandakh)
  • Fix Android 28's inverted ScrollView so that momentum is in the proper direction (b971c5b by @mandrigin)

iOS specific

  • Fix case where content of inline views didn't get relaid out (798517a by @rigdern)
  • Fix issue with ImagePickerIOS's inconsistent image when using the front-facing camera (4aeea4d)
  • Fix race condition and crash around shutdown of the JSC for iOS 11 and earlier (bf2500e by @mhorowitz)
  • Fix crash in NetInfo's _firstTimeReachability (eebc8e2 by @mmmulani)
  • Fix case where inline view is visible even though it should have been truncated (70826db by @rigdern)
  • Fix crash with ScrollView related to content offsets (f6566c7 by @shergin)

[0.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) (1d8744f)

Changed

iOS specific

Removed

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

Fixed

iOS specific

  • Fixed for supporting mediaPlaybackRequiresUserAction under iOS 10. (#22208) (79011d7 by @ifsnow)
  • Use main.jsbundle in iOS template for production build (#22531) (8ba5d4c by @radeno)
  • Use relative path for SCRIPTDIR (#22598) (0301a2e by @sunnylqm)
  • Fix UIScrollView crash (b739c11 by @shergin)
  • Avoid using -[UITextView setAttributedString:] while user is typing (#19809) (26775d5)

Security

  • Bump ws package to 1.1.5 due to vulnerability issues (#21769) (d350f37 by @prog1dev)

[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 version 0.57.6 about losing focus in TextInput because of 356ac5d.

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 additionnal blur call (#22156) (356ac5d)

Fixed

  • Improving Modal visible prop check to handle undefined and null (#22072) (6c85356 by @MateusAndrade)
  • Fix crash in nativeInjectHMRUpdate (#22412) (0b4fd62 by @vovkasm)
  • Fix IllegalArgumentException when dismissing ReactModalHostView (e360b0b by @mdvacca)
  • Fix regression in StyleSheet.setStyleAttributePreprocessor (#22262) (5ba44f7 by @brentvatne)
  • Fix React Native AsyncMode and DevTools (f41383f by @bvaughn)
  • CxxReact: Silence 'unused lambda capture' warnings in open-source (#22240) (87c9d92 by @empyrical)

Android specific

  • Fixed HTTP connection timeout on Android (#22164) (695784a)
  • resizeMode applies to Image.defaultSource (#22216) (ec1bbfd by @dulmandakh)
  • Android: Close websocket properly when remote server initiates close (#22248) (6e7576b by @syaau)
  • Workaround a wrong fling direction for inverted ScrollViews on Android P (#21117) (90cb45f by @mandrigin)
  • Fix crash when releasing RN views (de3711e by @ayc1)

iOS specific

  • iOS: Support inline view truncation (#21456) (ac5aaec by @rigdern)
  • NetInfo: try to solve crash with releasing _firstTimeReachability (35c1c27 by @mmmulani)
  • Generate ip.txt before SKIP_BUNDLING check (#20554) (26b5a6e by @keatongreve)
  • Revert [Performance improvement for loading cached images on iOS ] (7eeb305 by @kelset)
  • Fix inability to remove 'Disabled' state from AccessibilityStates (79b3311)

[0.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 (483d4e2)
  • Fix polyfilling of regeneratorRuntime to avoid setting it to undefined in some situations (53616e6 by @rafeca)
  • Fix View, Text, and ActivityIndicator's displayName (311ba9a and 0b32a65 by @rajivshah3 and others)
  • Fix crash that happens when a component throws an exception that contains a null message (e8c9f3c by @mdvacca)

Android specific

  • Fix incorrect merged asset path with flavor for Android Gradle Plugin 3.2 (09184a7 by @yatatsu)
  • Fix crash in ReadableNativeArray.getType when size of ReadableNativeArray's length > 512 (8206122 by @dryganets)

iOS specific

[0.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 (22cf5dc by Stephen Cook)

Changes: existing functionality that is now different

Android specific changes

iOS specific changes

Fixed: bugs that have been resolved

  • Fix crashes on invalid regex (298f14d by @RSNara)
  • Fix pull to refresh refresh component clipping on Android (8a3a0ad by Andy Huang)
  • ListView requestAnimationFrame leak (70b5eb3 by @exced)

Android specific fixes

  • reverted Update bad method
  • Fix accessibility role crash (139559f by Haseeb Saeed)
  • Fix accessibilityRole value lookup (1f96ff6 by @ayc1)
  • Fix DynamicFromMap object pool synchronization (b0d68c0 by @haitaoli)
  • Back out "[react-native][pr] Rounded corner rendering fixed on Android N." (bb407fa by Jonathan Lee)
  • Fix onTextLayout metrics on Android when using alignText (1c240ae by @mmmulani)
  • Cleaning up imports in ViewGroupManager (082a869 by @mdvacca)

iOS specific fixes

  • Fix issue when inserting text at 0 when maxLength is set (36507e4 by @ejanzer)

Known issues

There are a few issues that don't have a finalized solution (as it happens for 0.x projects). In particular:

  • when using Xcode 10 and react-native init, your build may fail due to third-party build steps (#20774). There is a commit we are planning to cherry pick in a future release that should help - in the meantime, you should be able to run these commands from the project folder to fix the issue (you should need to do it only once per project):

    cd node_modules/react-native
    scripts/ios-install-third-party.sh
    cd third-party/glog-0.3.5/
    ../../scripts/ios-configure-glog.sh
  • React 16.6.0 works for the most part, aside from the Context API (check this issue) - and if you are eager to test the new React Hooks you will have to be patient, as they are not production ready and 16.7.alpha is not yet supported by React Native.

[0.57.3]

NOTE WELL: when you upgrade to this version you NEED to upgrade react and react-test-renderer to version "16.6.0-alpha.8af6728". Also, please check the Known issues section below, especially if you are using Xcode 10.

Thanks to everyone that contributed to the discussion for cherry-picking the commits that landed in this release, and the developers who submitted those commits!

Added: new features

  • Expose enableBabelRuntime config param externally (a3a69ca by @rafeca)

Android specific additions

Changes: existing functionality that is now different

Android specific changes

iOS specific changes

  • Bump up the buffer size and show a warning if the trace might be truncated (a4ef256 by @alexeylang)

Fixed: bugs that have been resolved

Android specific fixes

iOS specific fixes

  • Dealloc first time RCTNetInfo reachability callback (9ae5bd0 by @mmmulani)
  • iOS: fix the baseline issue when displaying a mixture of different-language characters (ce8dddb by @BingBingL)
  • Fix artifacting on RN-drawn borders with asymmetric radii (dba2235 by @jamesreggio)
  • check isAvailable key on simulator object (9e6212a by @antonychan)
  • ios-simulator: change default iphone version (1d1a41e by Vitor Capretz)

Known issues

There are a few issues that don't have a finalized solution. In particular, when using Xcode 10 and react-native init, your build may fail due to third-party build steps (#20774). There is an open pull request which we are testing and hope to land soon (#21458). In the meantime, you can find a workaround here: facebook/react-native#20774.

[0.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

  • Android ScrollView support for overflow: visible (5906c26 by @olegbl)
  • Expose a getter for overflow setting in ReactViewGroup (bc973d2 by @kmagiera)
  • Add workaround for Android Gradle Plugin 3.2 change to asset dir (a4fed6e by @edilaic)

Fixed: bugs that have been resolved

Android specific fixes

  • Fix event handlers for DPad arrows on Android TV (9ac2877 by @krzysztofciombor)
  • Rounded corner rendering fixed on Android N (b460f0d by @dryganets)
  • Android: fix cookies lost on Android 5.0 and above (b01ac3b by chenwenyu)
  • allow zero offset when shadow radius is nonzero (b7ba225 by Timothy Kukulski)
  • Android ScrollView fix for pagingEnabled (0869e54 by @olegbl)

Removed: features that have been removed; these are breaking

[0.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 (cd091e8 by Chun Chen)

Changes: existing functionality that is now different

iOS specific changes

  • Making RCTIsIPhoneX() return true for the R and Max models (e884d7f by @shergin)
  • Way to register RCT_MODULE in Plugin2.0 instead of +load (5f85b25 by Jeff Thomas)
  • Update RCTLinkingManager.h to explicitly state the 'nullability' of parameters (bf84166 by Warren Knox)

Fixed: bugs that have been resolved

iOS specific fixes

Removed: features that have been removed; these are breaking

iOS specific removals

[0.57]

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. 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'),
    }
  5. 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+ (1b09bd7)
  • Fixed extreme <TextInput> slowness (5017b86 by @gnprice)
  • Fixed <TextInput> placeholder not being completely visible (8402232 and 86f24cc by @jainkuniya)
  • Fix Horizontal <ScrollView>'s scroll position during layout changes with RTL content (de57327)
  • Fix Horizontal <ScrollView> overflow issue (d5465a9)
  • Fixing crash on SDK 15 on ReactTextInputLocalData (1bb2bea)
  • Fix Drawing Rect for ReactScrollView (6a16bec by @yungsters)
  • Fixed NoSuchKeyException Thrown From ReadableNativeMap bysafely unwrapping ReadableMap by defaulting to 0 if key not present (1a6666a by @Bhavik-P)
  • Fixed runAndroid to enable the use of a package on port <> 8081 for Windows (3cd0737 by @ihenshaw)
  • Don't crash on upload retry when trying to fetch on a varying quality network (7a246e4 by @dryganets)

iOS specific fixes

  • Fix TextInput.clear() and TextInput.setNativeProps({text: ''}) to work (057d3ef by @magicien)
  • Correct fishhook import in RCTReconnectingWebSocket (75a0273)
  • Change in RCTImagePickerManager to handle crashes if height/width is nil (82af7c9 by @abhi06276)
  • Fix controlled <TextInput> on iOS when inputting in Chinese/Japanese (892212b by @mmmulani)
  • Fixed <ScrollView> bug encountered with brownfield apps (fab5fff by @PeteTheHeat)
  • Fixed missing selection indicator lines on <PickerIOS> (e592d6f by @VSchlattinger)
  • Fix crash in RCTImagePicker on iOS (934c50f by @mmmulani)
  • Fix undefined_arch error received when building in Xcode 10 beta (e131fff by @futuun)
  • Add support for connecting to the Packager when running the iOS app on device when using custom Debug configuration (079bf3f)
  • Fixed RCTAnimation import for integrating with cocoapods (7525f38 by @LukeDurrant)

Removed: features that have been removed; these are breaking

  • [BREAKING] Removed ScrollView.propTypes; use flow or typescript for verifying correct prop usage instead (5b6ff01 by @sahrens)

Android specific removals

  • ReactInstancePackage is now deprecated; use @link ReactPackage or @link LazyReactPackage (b938cd5 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.

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 (fbd1bea)
  • FlatList is now Strict Mode compliant (a90d0e3)
  • Enable ?. optional chaining operator plugins (aa6f394)
  • Support flexWrap: 'wrap-reverse' (d69e550)
  • Add prop type accessibilityTraits to Text (654435d)
  • Add devDependencies support for templates (c4ab03a)
  • Add support for springDamping in SpringInterpolator (1dde989)

Android specific additions

  • Add support for build.gradle with CRLF for use with react-native link (843cfc3)
  • add decimal pad to android (5b7a817)
  • Add a way to dismiss PopupMenu elements (353c070)
  • Implement Image.defaultSource (b0fa322)
  • Support Image resizeMode=repeat (0459e4f)
  • Yoga: Add back deprecated getParent methods for non-breaking API change (c3c5c3c)

iOS specific additions

  • Run tests using Xcode 9.4 and iOS 11.4 (c55bcd6)
  • Add support for Homebrew-installed Node (0964135)
  • Add textTransform style support (8621d4b)
  • Add docs for Swift usage to RCTBridgeModule.h (ca898f4)

Changes: existing functionality that is now different

  • Upgrade React Native to Babel 7 (f8d6b97)
  • New projects created using react-native init will use Babel 7 (e315ec9)
  • Restrict WebView to only http(s) URLs: (634e7e1, 23f8f7a)
  • Node 8 is now the minimum required version (c1e6f27)
  • Upgrade React to v16.4.1, sync React Renderer to revision ae14317 (72d22e8)
  • Update new project template's Flow config to fix Cannot resolve module X isse due to removal of @providesModule (843a433)
  • Upgrade Flow to v0.75 (3bed272, 8aaf73b, 6264b69)
  • Upgrade Flow definitions (f8b4850)
  • Upgrade Prettier to v1.13.6 (29fb2a8, 8aaf73b)
  • Upgrade Jest to v23.2.0 (536c937, 8aaf73b)
  • Upgrade Metro to v0.38 (d081f83)
  • Modernized YellowBox (d0219a0)
  • Disallow requiring from invariant/warning (521fb6d)
  • Remove native prop type validation (8dc3ba0)
  • Add $FlowFixMe to invalid prop accesses where Flow wasn't complaining before (f19ee28)
  • Create Flow props for Image (8bac869)
  • Flow type for SegmentedControlIOS (113f009)
  • Flow type for ProgressViewIOS (c87701b)
  • Flow type for PickerIOS (1c66cdc)
  • Flow type for Switch (06052a2)
  • Flow type for Slider (cbe045a)
  • Flow type for RefreshControl (891dfc3)
  • Flow type for ListView (4b1ecb6)
  • Flow type for TextInput (c8bcda8)
  • Flow type for TouchableBounce (8454a36)
  • Flow type for TouchableOpacity (44743c0)
  • Flow type for TouchableHighlight (f0c18dc)
  • Flow type for TouchableWithoutFeedback (0b79d1f)
  • Flow type for ScrollView (b127662)
  • Flow type for DatePickerIOS (97e572e)
  • Flow type for KeyboardAvoidingView (188b118)
  • Flow type for ActivityIndicator (0b71d1d)
  • Remove $FlowFixMe in TouchableBounce (ffda017)
  • Remove $FlowFixMe in ScrollView (af6e2eb)
  • Remove $FlowFixMe in ListView (af6e2eb)
  • Remove $FlowFixMe in Text (6042592)
  • Remove $FlowFixMe in RTLExample (206ef54)
  • Remove $FlowFixMe in AppContainer (a956551)
  • Remove $FlowFixMe in Slider (1615f9d)
  • StyleSheet: Support animated values for border dimensions (3e3b10f)
  • Update react-devtools-core and plist to include security fixes reported by npm audit (3a1d949)
  • Update Switch to ES6 Class (970caa4)
  • Update Slider to ES6 Class (5259450)
  • Update ActivityIndicator to ES6 Class (edd7acb)
  • Update RefreshControl to ES6 Class (a35a238)
  • Update KeyboardAvoidingView to ES6 Class (c017dcb)
  • Update DatePickerIOS to ES6 Class (f8c8231)
  • Update Text to ES6 Class (ab92c00)
  • Replace context.isInAParentText w/ React.createContext (e1339bc)
  • Cleanup Text implementation (06c05e7)
  • Switch Text to React.forwardRef (e708010)
  • Switch View to React.forwardRef (3e534b9)
  • Update uses of genMockFunction and genMockFn to fn in tests (390ded8)
  • Make ViewProps exact (65c336f)
  • Spread TVViewProps into ViewProps instead of intersection (bc658d3)
  • Allow trailing commas (1e2de71)
  • Use let/const (8f5ebe5)
  • Refactor MockNativeMethods in Jest (5d4c542)
  • Use app name from app.json after ejecting (57774a4)
  • Suggest git apply --reject for failed upgrades (4fbd244)
  • Moved TouchHistoryMath from React to React Native (06085d3)
  • Refactor RCTInputAccessoryView (c136c54)
  • Don't wrap ListEmptyComponent in an extra view (db061ea)
  • Move Text PropTypes to its own file (cd8128b)
  • Mock ReactNative.NativeComponent native methods in Jest (3e9a371)
  • Tightening types for View and VirtualizedList (5035af8)
  • Make values optional in ViewPropTypes (f1316ca)
  • propTypes are optional for native components (dbdf43b)
  • Rename Style to DangerouslyImpreciseStyle (4895c64)
  • [BREAKING] requireNativeComponent's signature has been simplified to only take extraOptions (820673e, b549e36, 28d3778, 1c90a2b, and 1ab7d49 by @yungsters)

Breaking Changes

  • Public methods of Text (blur, focus, measure, measureInWindow, measureLayout, setNativeProps) are no longer bound to the text component instance. It is therefore unsafe to pass these methods by reference (i.e: as callbacks) to functions. So, things like setTimeout(this._txtRef.focus, 1000) will no longer work. Please instead do: setTimout(() => this._txtRef.focus(), 1000).

iOS specific changes

  • [BREAKING] WebViews now can only use https; do not use it for file:// (634e7e1 by @mmmulani)
  • iOS 9 is now the minimum required version (f50df4f)
  • Update podspecs to target iOS 9 (092103e)
  • Xcode 9.4 is now used to run tests (c55bcd6)
  • Prevent console logging on iOS 11.3+ within WebSocket (8125be9)
  • Expose RCTFont size overrides (6611fef)

Android specific changes

  • Projects are now compiled using Android SDK 26 (065c5b6)
  • Use Google Maven repo in new Android projects (6d56a23)
  • Upgrade Buck to v2018.03.26.01 (1324e7b)
  • Upgrade gradle-plugin to 2.3.3, gradle to 3.5.1, gradle-download-task to 3.4.3 (699e5ee)
  • Bump NDK APP_PLATFORM to android-16 (5ae9799)
  • Bump glog to 0.3.5 (added libc++ support) (8bd4344)
  • ReactFragmentActivity deprecated as it's not necessary when targeting API level 14 and above (8ea8dd6)
  • Touchables now play a sound on press (722f88c)
  • Default underlineColorAndroid to transparent (a3a98eb)
  • Disable WebView geolocation by default (23d61b3)
  • Ensure cookies with illegal characters are not sent to okhttp (04028bf)
  • Update app icons to match recent Android releases (94393f8)
  • Better error messages for ReadableNativeMap (30d06b4)
  • Update Fresco to v1.9.0, okhttp3 to v3.10.0 (6b07602)
  • Add tint color to inline icons (e8e2a6e)
  • Fix antialiasing rounded background (7500b3e)
  • react-native link will now replace '/' by '_' when linking projects. If you previously linked scoped packages, they will get linked again. (dbd4759)
  • New project template now uses project-wide properties (5ae80f9)

Fixed: bugs that have been resolved

  • VirtualizedList now accounts for ListHeaderComponent length when calculating offset (537731f)
  • Prevent showing a hidden status bar when opening modals (076b1ce)
  • Fix crash when reloading while Perf Monitor is enabled (4fcd997)
  • Fixed concurrency issue in remote debugger (e5aa5b7)
  • Fix Modal + FlatList scrolling (8799047)
  • Fix bug in RCTNetworking where not all tasks/handlers were being cleared during invalidation (b805172)
  • Fix keyboard handling with keyboardShouldPersistTaps: never (ffe6c11)
  • Fix Responder Logic in Text (e2ce22b)
  • Fix VirtualizedSectionList lint warnings (26a1eba)
  • Fix VirtualizedSectionList:ItemWithSeparators (488a4c7)
  • Fix TextInput's initial layout measurements (c6b4f9f)
  • Fix requireNativeComponent check (1c90a2b)
  • Fix TextInput autocapitalization bug (ff70ecf)
  • Add missing events to ViewPropTypes (41a9403)
  • Add missing Jest mock in StatusBarManager (4a2c560)
  • Add Flow declaration for Metro module (1853e15)
  • Fix type for ReactNative.NativeComponent (1/2) (de11ba2)
  • Fix type for ReactNative.NativeComponent (2/2) (7528636)
  • Move Image PropTypes to new file (6765699)
  • Tests: Fix JUnit report location when running Jest (85fc98d)
  • Tests: Fix ReactImagePropertyTest SoLoader failures (#19607) (a52d84d)
  • Tests: Fix jest snapshot testing on Windows (216bce3)
  • Fixes "Cannot resolve module" errors in new react-native init projects (27a497d)
  • Haste hotfix for react-native-windows (600747f)

iOS specific fixes

  • Fix undefined_arch error in Xcode 10 beta - 3861dbef5b34734283563e28b454b68d3265d21a
  • Make react-native run-ios command play nicely with multiple Xcode versions (302699a)
  • Correct fishhook import (ca515e9)
  • Fix bug where a Backspace event was emitted when entering characters after clearing a text in TextInput by an empty string (1ffb2b6)
  • Expose InputAccessoryView so it can be imported (80fc415)
  • Fix InputAccessoryView safe area comformance (490f22a)
  • Fix use of C++ syntax in header file (bfcfe79)
  • Fix install step when running run-ios (0934c17)
  • Fix run-ios not turning on Simulator (9736ddc)
  • Use correct library reference for Fishhook. This fixes the build for the new Xcode build system, on both Xcode 9 and Xcode 10 (a8b7457)
  • Add missing onChange event definition to DatePickerIOS (3b53091)
  • Fix crash during Archive phase on Xcode 9.3 (344c205)
  • RNTesterPods: Add missing folly include (128c934)
  • RNTesterPods: folly::Optional's has_value() to hasValue() until folly is upgraded (128c934)
  • RNTesterPods: Fix import for RCTTestAttributes.h (128c934)
  • RNTesterPods: Fix conversions.h to use namespaced includes (128c934)
  • Fix or mark enum conversions surfaced by -Wenum-conversion (b8f30db)
  • Fix CocoaPods integration without DevSupport subspec (c09d509)
  • Update Yoga to handle being in a Xcode framework project (cf036db)
  • Fix Blob memory leak (122b379)
  • Avoid double reload event when reloading JS (b348aa1)
  • Suppress spurious warning about RCTCxxModule (af76473)

Android specific fixes

  • Fix extreme TextInput slowness on Android (1b4187f)
  • Correct draw path dimensions while doing even border, fixes blurred borders (c5ca26a)
  • Don't pass additional arguments to requireNativeComponent in .android.js files (a51e8b1)
  • Prevent RefreshControl from getting stuck when a parent is scrolled horizontally (33ffa79)
  • Prevent crash due to unsupported ellipsize mode (85e33aa)
  • Fix okhttp3 response handling in DevServerHelper (56d48bd)
  • Fix ReactInstanceManager unmountApplication to support ReactRootView recycling (4a9b2a7)
  • Fix NullPointerException when emiting event using UIManagerModule (291c01f)
  • Fix link to Android build guide (57e7556)
  • Fix Android open source test failures (3e0ebc7)
  • Fix view indices with LayoutAnimation (d8fcdb9)
  • Fix originalNode memory leak (8102e35)
  • Fix ScrollView with a TextInput (2f1421d)
  • Disable onKeyPRess logic when handler not defined (41975f7)
  • fix permission requests on pre-M android (6d27bd1)

Removed: features that have been removed; these are breaking

  • Deprecate focusTextInput and blurTextInput (ce3b7b8)
  • [BREAKING] ImageResizeMode on Image is no longer exposed; check your usage of resizeMode; the same resize modes exist, but pass them as strings instead (870775e by @TheSavior)

Android specific removals

  • Remove native extensions (7c5845a)
  • Remove Fresco ProGuard rules (07df365)

iOS specific removals

  • Disallow nesting of <View> within <Text> (e.g. <Text><View /></Text>) (6a1b416
  • Removed deprecated UIActionSheetDelegate methods (5863b56)

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.

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 (b48f7e5 by @kmagiera)
  • There's a new UTFSequence module in the library for common Unicode sequences (Emoji!) (54870e0 and 4761d5a by @sahrens)
  • Added contextMenuHidden property for TextInput (2dd2529 by @amhinson)
  • Add testOnly_pressed to TouchableHighlight for snapshot tests (3756d41 by @sahrens)

Android specific additions

iOS specific additions

  • Introducing InputAccessoryView, "a component which enables customization of the keyboard input accessory view" (38197c8, 84ef7bc, and 6d9fe45 by @PeteTheHeat)
  • base-line metric exposure for Text and TextInput (51b3529, 0dbe183, and 7630a61 by @shergin)
  • DatePickerIOS now has initialDate prop (446ce49)
  • Expose version via RCTVersion.h's RCTGetReactNativeVersion() (30469ed by @LeoNatan)
  • Allow running multiple simulators simultaneously with react-native run-ios --simulator ... (2ad3407 by @koenpunt)
  • Introduced RCTSurfaceHostingProxyRootView for migration to RCTSurfaceHostingView (34b8876 by @fkgozali)
  • New UIManager API allowing intercept/delay mounting process (402ae2f and b90c1cf by @shergin)

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 (6c353fd 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 (6b45fb2 by @mdvacca)

iOS specific removals

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 (e3ff3cf by @shergin)

Android specific removals

iOS specific removals

Changed

iOS Specific Changes

Android specific changes

Fixed

  • Fix JS debugger issues related to CORS (29f8354 by @njbmartin)
  • Keep the .gitignored files during the react-native-git-upgrade process (7492860 by @ncuillery)
  • Fix re-render case on SwipeableRow (a580a44)
  • Fix display of syntax error messages when HMR is enabled (2b80cdf by @ide)
  • Add fixtures to metro blacklist in order to let build succeed (4194bb2 by @t4deu)

Android specific fixes

iOS specific fixes

  • Fix Crash when CameraRoll is getting assets from iCloud and no filename is provided (2ae2436 by @pentarex)
  • Fix Xcode Archive task failing if project path contains whitespace (8aa568e by @jevakallio)
  • react-native link has been fixed to correctly link iOS and tvOS targets (a63fd37 by @dlowder-salesforce)
  • GLog fix on case sensitive APFS macOS (2fef1ba by @hovox)
  • Fixed issue where you cannot launch tvOS app on Apple TV simulator (afd988f)

Internal work

Welcome to the January 2018 release of React Native. The CLI now supports --port for both platforms, a few components were made to support consistent props across both platforms, and various fixes were made. There was a lot of under-the-cover work done with more test improvements and dependency updates. 118 commits were made by 43 contributors 🎉.

Added

  • Keyboard events now include easing and duration (4d33080 by @sahrens)

iOS exclusive additions

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

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 (dabb78b by @shergin)

iOS exclusive removals

  • Updates to the bridge in order to enable future rendering optimizations (d2dc451 by @shergin)

Fixed

  • Do not set minify=true when calculating the list of dependencies for the CLI (4a1bb8f by @rafeca)
  • 👷 Update CODEOWNERS now that the docs are in a separate repository (85ff264 by @hramos)
  • Fixed a broken link in react-native-git-upgrade's readme (bbedf2d by @Taym95)
  • 🤡 Do not use Node 8.x specific Stream.final for FS mocks (4216cde by @hramos)
  • Fix virtualized cell keys for list headers and footers (a010a0c)
  • Fix warnings of casting and null pointer handling in Yoga (a8d4666 by @priteshrnandgaonkar)
  • Fix broken buck failures on master (4e76701 by @hramos)
  • RefreshControl appears correctly when expected on initial render of a FlatList again (9b877d6 by @vonovak)
  • Fixed JS debugger CORS issue (df8da3b by @njbmartin)

Android exclusive fixes

  • Fix position of dev loading view on Android API < 20 (7ff6657 by @kmagiera)
  • Fix Modal not disappearing when navigating from inside a Modal to another activity (e5c2a66

iOS exclusive fixes

Other

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

0.52.0 - 2018-01-07

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 = [...] (26038f5 by @wli)

Changed

Android exclusive changes

  • Native components on Android register lazily rather than via ViewManager (1b71e03)
  • Android debug overlays (like RedBox, dev menu, loading) are no longer are system overlays; they're now part of the currentActivity (d19afc7 by @kmagiera)

iOS exclusive changes

  • Improve iOS's accessibilityLabel performance by up to 20% 📈 (19b0a65 by @chendo)

Fixed

Android exclusive fixes

  • Explicitly #define isnan __builtin_isnan for Android clang-5 to mimic gcc's default behavior (f8fe6b0)
  • Correctly update NetInfo on Android even if connection types change while the app is in the background (e6f542d by @berickson1)
  • Direction-aware borders now work with Android APIs >= 17 (7170543 by @rsnara)
  • Don't throw BadTokenException and IllegalArgmentException when showing or dismissing Modal on Android (c465599)
  • Fix Android crash when blurRadius is between 0 and 1 (dc01eff by @jamesreggio)
  • Fix borderRadius with Android API level < 18 (5aa1fb3 and ca7fe72 by @rsnara)
  • Make Android lineHeight behavior match iOS's 📏 (3f1b021)
  • Fixed autoscroll to cursor on Android TextInput (0bef872 by @shergin)
  • Fix logging unpacking time on Android when it happens concurrently with eager unpacking (028b64b by @alexeylang)
  • Prevent an Android crash when TextInput has selectionColor defined but there is no drawable cursor (1e18d90 by @gpeal)

iOS exclusive fixes

  • Don't have XCode warnings for YGDefaultLog in newly created projects (72e762d by @woehrl01)
  • iOS RCTEventEmitter uses a double for count, not NSInteger (eaa8499)
  • Fix isNuclideDebuggingAvailable on iOS (59c3e33)
  • iOS ScrollView is now rendered correctly with RefreshControl (75d62bf by @vonovak)
  • Fix a crash when keyboard is visible and bridge reload happens on iOS (d9c6585 by @fromcelticpark)
  • RedBox now appears beneath the status bar on iOS (33cefc1 by @adamjernst)
  • Fractional border widths on iOS are now the right size, honoring insets (15179f1 by @Nikita2k)
  • Implement requiresMainQueueSetup in RCTTVNavigationEventEmitter to satisfy XCode warning (ee3532b by @charpeni)
  • Support the iPhone X in the sample project's header (ad4b124 by @vincentriemer)
  • testID works on TabBarItem on iOS (e19d9de)
  • On iOS, don't error on the first live-reload of large codebases because of too little wait time (b6f1a60 by @lelandrichardson)
  • Prevent iOS crash on receiving bad unicode in XMLHTTPRequest (1c04cee by @cdlewis)
  • Define pod_target_xcconfig for PrivateDatabase (38b96cd by @ide)
  • Fixed podspec include/excludes around tvOS (ba1d7e9 by @yygene)
  • Don't spam the logs for iOS when receiving ECONNREFUSED on connecting to packager (b1701cc and ff3dc2e by @adamjernst)
  • Don't crash Systrace when debugging JS remotely on iOS (e8eec24 by @alexeylang)

Removed

  • Removing reactBridgeDidFinishTransaction from RCTScrollView (a255204 by @shergin)
  • Removing inherited background color optimization from RCTText to reduce code complexity – please give feedback if you find performance differences! (8c8944c by @shergin)

Other

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

  • Foundational work for a new justifyContent value space-evenly (1050e0b by @woehrl01)
  • Add Systrace-based telemetry to Hermes GC (05e862d)
  • Unify Systrace native hook argument passing (52e3ae9 by @amnn)
  • Use different symbols for SystraceSection depending on WITH_FBYSTRACE (03956c4)
  • Don't set global.performance to undefined if it was initialized already (dfebcb7 by @alexeylang)
  • Autofixes for migrating to Buck's source-only ABI feature (801cbdb by @jkeljo)
  • Add remote API to uninstall the global error handler in RN (1d16923)
  • Add RCTLibraryPathForURL in RCTUtil (2fecbf6)
  • Fix sections that come from React Fiber (1f40c95 by @alexeylang)
  • Fix boolean conversion in sync RN method calls. (dd888d3)
  • Fix embeddedBundleURL update situation (d1fc8ef)
  • Remove android_react_native_perf.use_separate_ui_bg_thread experiment. (4f886a2)
  • ScrollView related files were moved to dedicated folder (098a63a by @shergin)
  • move page registration logic in to jsinspector (bef7967 by @bnham)
  • Type global hooks as function pointers (eca51eb by @johnislarry)
  • std::string to const char* (b952365 by @johnislarry)
  • Allow extending props supported by native animations (71751e9 by @andrewimm)
  • Meyers singleton jsc error extractor (434f432 by @johnislarry)
  • Do not overwrite the same text in TextInput (29f3f55)
  • Renaming uiManagerWillFlushUIBlocks -> uiManagerWillPerformMounting (0a8721c by @shergin)
  • Skylarkify flags macros. (ed2bfcb by @ttsugriy)
  • Skylarkify config_utils_defs macros. (88f6f69 by @ttsugriy)
  • Round size geometry for Button and RichText components. (4034feb by @iaroslav-pavlov
  • Temporarily patched Map/Set non-extensible check into RN dev renderer (a99f0d6 by @bvaughn)
  • Run buildifier over all BUCK files (d674d48 by @zertosh)
  • Pass scriptURL to RCTTestRunner (266ab7a)
  • Make RCTNativeModule::invokeInner explicitely return folly::none in case of error (0ac5a52 by @fromcelticpark)
  • Make RCTPackagerConnection a singleton (9180d4e by @adamjernst)
  • Register split segment paths with RAMBundleRegistry (cff0d8e by @fromcelticpark)
  • check if listener is still in the set before calling onHostResume (ad89ea7)
  • export SeparatorsObj type for re-use in ListItems etc. (c6fe101 by @sahrens)
  • Do not mark node as dirty if, new and old values are undefined (41da6e3 by @woehrl01)
  • Remove RAMBundleRegistry subclasses (6ecae73 by @fromcelticpark)
  • Fix minimumViewTime in ViewabilityHelper (d19d137)