React Native March 2018 (v0.55.0) released
v0.55.0 on GitHub (npm)
Changelog
Here are a few highlights:
- React Native is now using the MIT license
- Android TV device support
- Animated tracking with native driver - check out the silky smooth framerate
- Lots of Flow improvements
- Bugfixes
Added: new features
- Added support for animated tracking to native driver. Now you can use
useNativeDriver
flag with animations that track otherAnimated.Values
(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
- Added support for Android TV devices (b7bb2e5 by @krzysztofciombor)
- Implemented style
letterSpacing
for Text and TextInput (5898817 by @motiz88) - Bundle download progress is now shown d06e143 by @janicduplessis)
- AndroidInfoModule now also returns Android ID (216c8ec by @L33tcodex0r)
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
'sRCTGetReactNativeVersion()
(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
- React Native has now adopted the MIT license (1490ab1 and 26684cf by @sophiebits)
- The HelloWorld template now exclude
*.jsbundle
files from Git (2123108 by @aneophyte) react-native-git-upgrade
now shows files merged with conflicts in red (e53a8f7 by @alvinthen)ResolvedAssetSource
type to have all read-only members (4d0ee37 by @sahrens)- Flow types improvements (b6c7e55, b98bf1e, 80c1839, 70a3ece, f734357, a817c64, 3fd82d3, cd8128b, 5035af8, 26734a8, 321ba06, b6b80f6, f1316ca, 2520c64, 214da52, dbdf43b, 49396aa, 4895c64, a3c07c9, 49ffc9f, and c129457 by @TheSavior, @yungsters, and @alex288ms)
- Better enable cross-platform support of WebSocket.js (b9be289 by @rozele)
- Better error handling in the CLI around making directories (d2817f4 by @BridgeAR)
- Verify that the component passed to createAnimatedComponent is not functional (10b642a by @janicduplessis)
- Don't truncate in the middle of an emoji (9c8c597 by @Vince0613)
- Loosen Platform check to allow better code sharing for out-of-tree platforms (84affbd)
- In CLI, fix issue with
isInstalled
check for Android and references to unregister (ec88489 by @rozele)
iOS specific changes
- tvOS
onPress
magnification animation now works via thetvParallaxProperties
prop object takingpressMagnification
,pressDuration
, andpressDelay
(6c353fd by @JulienKode)
Fixed: bugs that have been resolved
- In TouchableOpacity, trigger animation on
opacity
upon change indisabled
prop (9366ce4 by @maxkomarychev) - Fixed an issue encountered when using
react-native-vector-icons
(a759a44 and 54dc11a by @jeanlauliac and @t4deu)) - Add missing mock for Jest for
removeEventListener
method (59c7b2c by @MoOx) - Fix main size calculation from the aspect ratio (f751c34)
- Fix crash in Subscribable due to uglify-es (b57a78c by @iMagdy)
- Update
node-notifier
dependency to fix memory leak (860fcd4 by @rickhanlonii) - Fix issues with pollParams and link (ca8ce83 by @grabbou)
iOS specific fixes
- DevLoadingView now supports the iPhone X screen shape (47b36d3 by @mrtnrst)
- Added bounds check to prevent ScrollView from scrolling to an offset which is out of bounds of the ScrollView (16c9e5b by @siddhantsoni)
- NetInfo
isConnected
works again (dbafc29 by @alburdette619) - In AlertIOS, fix duplicate var name declaration (6893a26)
- Permit
react-native run-ios --device [id]
by passing port when running on device (f8fee0a by @jozan) - Fixed issue with
run-ios
whereEntry, ":CFBundleIdentifier", Does Not Exist
was being received (5447ca6 by @blackneck) - Fixed problem in Text measurement on iOS (a534672 by @shergin)
- Fix crash when reloading in tvOS (3a3d884 by @dlowder-salesforce)
- Fixed a bug with positioning of nested views inside Text (7d20de4 by @shergin)
- Fix blob response parsing for empty body (093a78d by @janicduplessis)
- Fix tvOS react-native init release build (3002c4e by @dlowder-salesforce
- Fix RedBox from bridge reload due is not re-registering its root view (2e51fa5 by @fkgozali)
Android specific fixes
- Fix: incorrect line-height calculation (74e54cb by @strindhaug)
- Fix crashes with TextInput introduced in 0.53 (b60a727 by @joshyhargreaves)
- Update ReactAndroid build script to support gradle 2.3.0 (d8bb990)
- Allow "unexpected URL" exception to be caught on Android when using fetch (da84eba by @jcurtis)
- Fix
onLayout
prop for TextInput (8a073c1 by @rozele) - Fix ViewPager when using native navigation (a1295e1 by @ruiaraujo)
- Fix localization crash in DevSettingsActivity (427e464 by @ayc1)
- Fix pinch crash in touch-responsive views (67c3ad4 by @tobycox)
- Fix IllegalStateException thrown in looped timing native animation (ef9d1fb by @kmagiera)
- Workaround android-only js module resolution issue (c20e0f9 by @fkgozali)
- Fix ReadableNativeMap.toHashMap() for nested maps and arrays (8a6ab14 by @esamelson)
- Fix Android Sanity Buck version check (e057322 by @hramos)
- Fixes the connection to Firestore by following whatwg.org's XMLHttpRequest send() method (d52569c by @samsafay)
invertStickyHeaders
can now be set from SectionList or FlatList (3d69b5c by @dannycochran)
Removed: features that have been removed; these are breaking
- Removed various types (b58e377, ee26d9b, d89517d, 852084a by @TheSavior)
- Deleted
Systrace.swizzleJSON()
(3e141cb by @yungsters)
Android specific removals
ReactInstanceManager#registerAdditionalPackages
has been removed; Create UIManager interface and extract common classes in uimanager/common (6b45fb2 by @mdvacca)
iOS specific removals
[0.54]
Welcome to the February 2018 release of React Native! This release includes work done by the React Native team and the community in January, and there are some big changes here after the holidays. Thanks for 270 commits from 87 contributors, you all are great! Here are a few highlights from the release:
- Long awaited Blob changes: upload, download, fetch locally, and more
- Sticky headers now work on inverted Lists
- Update to the newest React, which deprecated some lifecycle methods and added new ones – expect Yellowbox until React Native is updated
Space-evenly
is now there (sorry for the confusion with 0.52's release notes)- A lot of under-the-covers work on Yoga, iOS's Text and TextInput, and a ton of other areas
- Multiple crash fixes
The changelog is arranged by the customary added, removed, changed, and fixed plus internal; the changes are also organized by platform.
Added
- ✨ Blobs now can be: made from Strings, loaded by File using a FileReader API, uploaded and downloaded via
XMLHttpRequest#fetch
, and fetched on files to a local blob consistently (be56a3e and 854c233 by @satya164 and @fkgozali) - Dynamic node_module dependencies are now supported (b5e19ad by @jeanlauliac)
- Support sticky headers for inverted Lists with
invertStickyHeaders
(ecaca80 by @janicduplessis) space-evenly
is now supported (sorry for the confusion with 0.52 notes) (b1cdb7d by @gedeagas)- Platform plugins can participate in RNConfig,
link
, andunlink
– keep an eye on react-native-window's use of it! (a40bfa7 by @rozele) - Add
minify
flag to react-native bundle command (3f969cb by @tomduncalf)
VR Specific Additions
- Added ScrollView support (6fa039d by @MartinSherburn)
Android Specific Additions
- Bundle download progress is now shown like iOS (675f142 by @janicduplessis)
- Add back ability to customise OkHttp client (22efd95 by @cdlewis)
iOS specific additions
- ScrollView now supports smooth bi-directional content loading and takes new prop
maintainVisibleContentPosition
(cae7179 and 65184ec by @sahrens) - Allow substituting a default font handler (a9c684a by @mmmulani)
- Add
accessibilityElementsHidden
prop (3128816 by @aputinski) - Add EXTRA_PACKAGER_ARGS extensibility point on
scripts/react-native-xcode.sh
(PR rev 2122140 by @brunolemos with landing assists b8c86b8 and 0d4ff1b)
Removed
- Remove internal
utf8
utility - use the utf8 package now instead (431670f by @mathiasbynens)
iOS specific removals
- Removed outdated assertion in RCTShadowView related to breaking change in Yoga (e3ff3cf by @shergin)
Android specific removals
- Fix an issue when swapping to and from the
visible-password
orphone-pad
keyboard types. (164f6b6 by @BrandonWilliamsCS) - Remove redundant config in AndroidManifest.xml (d7a9ca2 by @gengjiawen)
iOS specific removals
- Delete RCTBatchedBridge (816d417 by @mhorowitz)
Changed
- Docs clarifications (7abffc3 by @IgorGanapolsky)
iOS Specific Changes
- ⚡️ Text and TextInput have been re-implemented from the ground up for performance, flexibility, and reduced technical debt (2716f53, ef4214a, 0009909, 74963eb, 6c4ef28, ebc9884, d7fa81f, 7d1ec7a, 5264832, 6bb8617, 5dbb3c5, 7e7d00a, 46fd864, 9dfa2e7, 8a882fe, and 0f9fc4b by @shergin and @hovox)
- Image's
resizeMode="center"
is now documented and has an example present (be7037f by @motiz88) - Geolocation API no longer timeouts when
skipPermissionRequests: true
(5c17db8 by @ngandhy) - Rounding pixels is now done with an algorithm from Yoga rather than React Native, reducing debt and improving performance (ceb1d1c and 114c258 by @shergin)
Android specific changes
- Numerous refactors around bundle handling and the
DevServerHelper
(644123a, e756251, 6e44356, 1019bda, 06d8f96, f88c9d6, and 108f966 by @davidaurelio)
Fixed
- Fix JS debugger issues related to CORS (29f8354 by @njbmartin)
- Keep the
.gitignore
d files during thereact-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
- Don't crash when using decimal
Animated.modulo
values withuseNativeDriver: true
(6c38972 by @motiz88) - Don't crash when receiving unknown websocket IDs (1a790f8 by @sunweiyang)
- Dont crash when
NativeModules.UIManager.showPopupMenu
method calls error callback (0c18ec5 by @dryganets) - Maintain cursor position when TextInput's
secureTextEntry
changes (09b43e4 by @jainkuniya) - Race condition fix in Dialogs module (d5e3f08 by @dryganets)
- Fix NPE in Android Switch during measure (7b1915e by @4ndroidev)
- Fix initialScrollIndex (ef596de by @olegbl)
- Fix redbox style (f363dfe by @ayc1)
- Fix crash due to mishandling of UTF-8 in progressive download. (9024f56 by @dryganets)
- Fix crash because ClassCastException fix: getText() returns CharSequence not Spanned (46cc490 by @dryganets)
- Fix and re-enable "view flattening" optimizations (877f1cd by @mdvacca)
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
- A massive amount of Yoga optimizations, cleanups, refactors, and test fixes (62d0100, 1475fc4, 9daa174, d4517dd, ca91f0e, 34b7ec8, fda861a, 9f7cedb, ac1c8c2, fcf2c7c, 2b27f1a, 210ae5b, 8208858, 7f94bff, bd7bf94, 2fe65b0, 9658d9f, ee5c91c, 64d530b, 400a29e, f75e21f, 528bbac, be8e7c6, d0f7d4d, 4b4959a, fdef378, 831a1bb, (2a22d99, 9f57ded, and ff2658c by @priteshrnandgaonkar, @passy, @ryu2), and others)
- 🚧 Lifecycle methods were renamed to be consistent with React RFC6 – note that there are Yellowbox warnings right now because of this, it's work-in-progress (6f007e8 by @bvaughn)
- Some autogenerated mystery string files were added (c7846c4, bb6fcea, 8bd00a2, faa9519, f49f793)
- Improvements to the cli's implementation (2c5fbd7, 752427b, and 619a8c9 by @arcanis, @voideanvalue, and @rozele)
- Measure touch events from nearest "root view" (a70fdac by @mmmulani)
- Allow to attach the HMR server to an external http server (8c6b816 by @rafeca)
- Split folly/Memory out from headers-only targets in Buck (b8e79a7 by @mzlee)
- Code cleanup of ReactHorizontalScrollView in Android (71ec85f by @mdvacca)
- Always create a debugger websocket connection when in iOS dev builds (fa334ce by @bnham)
- Make the React Native HMR client extend from the generic metro HMR client (9a19867 by @rafeca)
- Removed use of xip.io (40a8434 by @jvranish)
- Fix Buck dependencies (cec2e80, 4f6c157 by @swolchok)
- Fix permissions on test script (42c410a by @mzlee)
- Better handling exception in loadScript() (3fbf785)
- Fix ESLint upgrade "parsing error" (9d21496 by @zertosh)
- Fixing 🤡 in RCTSurfaceRootShadowView (5fba82d by @shergin)
- Handle invalidation error in RCTObjcExecutor (493f3e8 by @fromcelticpark)
- Check for nullptr when accessing isInspectable method (70d23e8 by @fromcelticpark)
- Introduce new Fabric API in RNAndroid (2d35bde by @mdvacca)
- Fixing Prepack model for latest global.nativeExtensions changes. (01a58d1 by @NTillmann)
- General code cleanup: unused code and configurations (e233646 and e701034 by @bvaughn and others)
- Add support for finding multiple views with NativeIds using a single listener to Android (f5efc46 by @axe-fb)
- Add CountingOutputStream (a5e135a by @hramos)
- Changes from Prettier (b815eb5, e758cb7, bf9cabb, and a5af841 by @shergin)
- Typos in code (8ffc16c by @ss18)
- Support for inherited events in view managers (2afe7d4 by @shergin)
- Flow types changes (3fc33bb, e485cde, 83ed9d1, 52ffa5d, d37cdd9, 6e7fb01, d99ba70, bcfbdf4, and a1c479f by @alexeylang, @sahrens, @yungsters, and @zjj010104)
- Give IInspector a virtual destructor for correct InspectorImpl destruction (2a3c37f by @toulouse)
- Migrated
SourceCode
andDeviceInfoModule
out of Native Modules (47fe523 and 429fcc8) - Jest config change as part of bringing back support for the
assetPlugin
option in Metro (af6450c by @ide) - Nested virtualized lists should receive recordInteration events (ae2d5b1)
- Upgrade connect dependency (709ede7 by @rafeca)
- xplat/js: asyncRequire: redirect async modules to control modules (5e11b88 by @jeanlauliac)
- More progress towards split bundle support (1a1a956 and 9e34cbd by @fromcelticpark)
- Implement bundle sync status (88980f2)
- Various improvements to RCTSurface and RCTShadowView (7d9e902, 06ebaf2, 6882132, and 193a2bd by @shergin)
- Progress towards experimental ReactFabric and FabricUIManager (b1e5c01, fa0ac92, 94dac23 by @fkgozali)
- (almost) kill fbjsc (702b7e8 by @michalgr)
- Refactored bridge ReadableNativeMap and ReadableNativeArray to add centralized accesses (7891805, 28be33a, and 5649aed)
- Removed unused core from Image.android.js (ce3146a by @shergin)
- Capture StackOverflowExceptions triggered when drawing a ReactViewGroup or ReactRootView and log more debugging information for it (1aac962 and 4d3519c by @mdvacca)
babel-preset-react-native
: only require plugins once (df6c48c by @davidaurelio)- Report module id as string and as double, in case of invalid values are passed to nativeRequire (8f358a2 by @fromcelticpark)
- More work moving build configurations to Skylark (d3db764, 869866c, a8c95d2, and 79a63d0 by @mzlee, @ttsugriy, and others)
[RCTShadowView isHidden]
was removed (c19bc79 by @shergin)- Remove unused
packagerInstance
option and rename it toserver
(bbbc18c) - The blog has moved to react-native-website (e16d673 by @hramos)
- Remove SoLoaderShim, use SoLoader (fc6dd78 by @foghina)
- Removed broken link for 'Getting Help' in the README (b3a306a by @rickydam)
- Changed to use boost-for-react-native cocoapod, which speeds up
pod install
a ton; this was in 0.53 originally but had to be re-added (d40db3a by @CFKevinRef) - Remove fbobjc's RN copy (af0c863)
- Measure time to create ReactInstanceManager (6224ef5 by @alexeylang)
- Upgrade create-react-class to v15.6.3 (74f3866 by @bvaughn)
- Upgrade react-devtools to v3.1.0 (8235a49 by @bvaughn)
- Upgrade flow to v0.65.0 (7aba456 and 298f3bb by @avikchaudhuri and @mroch)
- Upgrade Jest to v22.2.1 (46f4d3e and 24e521c by @mjesun)
- Upgrade ESLint to v4.17.0 (plus update related deps) (bba19e8 by @zertosh)
- Upgrade React to v16.3.0-alpha.1 (03d7b2a and 5e80d95 by @grabbou and @hramos)
- Synced React and ReactFabric render (c7ed03a, 1382975, and d676746 by @bvaughn)
- Upgrade metro to v0.26.0 (9e6f3b8, ce50f25, e9b83e6, 2fe7483, 0f96ebd, 0de470e, e8893a0, and f4fde9d by @rafeca and @grabbou)
- Add Context to Redbox report api (e3c27f5 by @ayc1)
- GitHub bot commands have been disabled in the short term (b973fe4 by @hramos)
- Various CI configuration changes (17bd6c8, 51b6749, a2f3ba8, 2ef9b7f, 40b1792, 613afba, da8bec9, fa11fae, f50af7f, 9227ba7, 365a4d4, b58d848, c8e98bb, f5975a9, and 605a6e4 by @hramos, @grabbou, and @dryganets)
- Restore copyright header (4f883bd by @hramos)
- Trim docs that are already present in the open source docs site (28d60b6 by @hramos)
- Fix obsolete instructions about editing docs (2f46712 by @ExplodingCabbage)
- Fix links to beginner friendly issues (c355a34 by @hotchemi)
- Typos in comments and log messages (d2c5697 by @ss18)
- Don't run the Danger CI tool through Flow (1ea3065 by @hramos)
- Namespace custom ESLint rules through eslint-plugin-lint (488b682 by @zertosh)
- ... and now we're at 0.54 🎉 (67e67ec, 21dd3dd, 49e35bd, 829f675, and 294d95a by @grabbou and @hramos)
[0.53]
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 (33d710e)
Android exclusive additions
- On Android, ScrollView now takes
snapToInterval
like iOS (ddd65f1 and b2848a5 ) - On Android, TextInput now takes
onKeyPress
like iOS (c9ff0bc by @joshyhargreaves)
Changed
- ⬆️ Metro to v0.24.2 (2e008bc and 0b5e8b4 by @rafeca)
- ⬆️ Flow to v0.63 (6b95c4f by @gabelevi)
- ⬆️ Danger to v2.0 (b750e3b by @hramos)
- ⬆️ Jest to v22.0.0 (4803419 by @mjesun)
- 💄 Bundler is now called Metro Bundler in the terminal (654d759 by @edcs)
- 📝 Update getting started url on Android CLI (6661633)
- 🐳 Dockerfile uses newest Android SDK, Buck, and new Docker tags have been pushed (4fbfbe6 and c547f78 by @hramos)
- 📝 Update repo docs to use HTTPS (33a2e53 by @him2him2)
- 🎨 Make ScrollResponder follow code style (45e6fcd by @TheSavior)
- VirtualizedList now requires a windowSize greater than 0 (3559e42)
- react-devtools works with emulator and real devices now without needing to tweak the devServer value (fa574c6 by @jhen0409)
- 📝 Clarify use of Flow props types in react-native-cli's template project (9b147a5 by @hramos)
- 📝 Add docs for
isInspectable
(59c7967 by @bnham) - ✅ More Flow improvements (Text, SectionList, and others) (f71f4e7, 632f120, and a8391bd by @yungsters, @samwgoldman, and others)
- Various code cleanup to satisfy linting errors and standards (b0319f3, dd46117, and 7f58189 by @ayc1, @grabbou, and @ide)
iOS exclusive changes
- 🔥⚡️ iOS UI Manager cleanup and optimizations (7d1deda, 0ae4c47, 2679f3e,and d9e5b31 by @shergin)
- If the inspector tries to handle a wrapped event but there is no connection, log a warning rather than a Redbox (30da262 by @bnham)
- Various under-the-covers changes around the bridge, RCTShadowView, RCTSurface, and a few others (c3139d7, 2789ba0, b8e60a3, 099b280, b263560, 19a9c5e, d3b41e0, b2a2519, 870bc48, 176a578, c491b22, c756122, andc01a171 by @shergin)
- Changed to use boost-for-react-native cocoapod, which speeds up
pod install
a ton (cf19833 by @CFKevinRef)
Android exclusive changes
- Include scroll momentum info when there are scroll events from Android (c49d249 by @wwalser)
- Yoga's mkfile for Android now uses wildcard instead of manual file addition (d89901f by @priteshrnandgaonkar)
Removed
- TextInput no longer has the
autoGrow
prop, since this is platform-default behavior now (dabb78b by @shergin)
iOS exclusive removals
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
- Fix regression introduced where layout wouldn't occur in some situations (46be5bf by @shergin)
- Fixed double initial prop applying for newly created views (0ec1017 by @shergin)
- tvOS build now works again (3bd8986 by @dlowder-salesforce)
Other
Below is a list of the remaining, low-level changes that made it into this release of React Native.
- Remove "prepareReact" call from the bridge (80f9e1f and 56a42e5 by @fromcelticpark)
- Add explicit componentControllerClass to CKComponent for RCTSurface (ab97270)
- Changes to RCTShadowView to increase RCTSurface performance (f96f9c5 by @shergin)
- Designated methods to control dirty propagation (af226ef by @shergin)
- Add missing tvOS header (49cbca7 by @grabbou)
- On Android, seperate logic to initialize JS from starting the app (4996b9a by @axe-fb)
- ♻️ JS linting was cleaned up: removed unused libs, strengthened the rules, removed unneeded rules, prevent disabled tests, and more (2815ada, 183c316, 9c67e74, 79902f9, 9a36872, 67a3c42, b826596, a1a0a69, and 11a495c by @TheSavior)
- 👷 Separate JS lint and flow checks from tests (5ea5683 by @hramos)
- 👷 Fix Buck in build config to enable CI (796122d, 7c3a61f, 82b123e by @grabbou)
- ♻️ Various refactoring within the YGNode implementation (28968e2, 0a9e652, 6627d77, and d85da86, a163f70 by @priteshrnandgaonkar)
- Fix ReactLegacy and delete RCTViewControllerProtocol (a0ff8c7 by @javache)
- Define internal FB macro for OSS builds; remove some unused definitions (077c3ab and (a6a66c5 by @ttsugriy)
- RNTester: Relax Bridge Release Check (e3c6f38 by @yungsters)
- Remove embeddedBundleURL from the asset resolver (489b98b)
- Do not set FB_ASSERTION_ENABLED (4cdbb77 by @priteshrnandgaonkar)
- JSBigString to MAP_PRIVATE not MAP_SHARED (f9f40cd)
- Fixed black ARTSurfaceView (5c8481e by @shergin)
- Kill orphaned marker end in JSCExecutor (6ad1f09 by @michalgr)
- Make YGNode as c++ struct with properties exposed through accessors (f1055bc by @priteshrnandgaonkar)
- 🔖 ...and now we're at 0.53.0-rc.0 🎁 (0b99657 by @grabbou)
[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
- Prettier has a config and an npm script; try it out with
npm run prettier
(1645912 by @janicduplessis) - Debug JS in Nuclide is now an option in the dev menu 🐜 (7c7108a and de424cc)
- Introducing PlatformOS – it looks a lot like Platform, but with a simplified API (5ee27ff by @brishin)
- New experimental RCTSurface: measure and layout a UI in a thread-safe and synchronous manner (be6976d, 7df58e2, e75bd87, aa83b5a, 081f7d1, da17b23, e9e0cd7, 43b2509, ba60751, d71d28f, 4d37cf0, and d021dd2 by @maicki and @shergin)
- Experimental SwipeableRow's datasource now has a
getLastRowID
method (d79e245) - React Native monthly #5 was added (3c5a55d by @tenodi)
iOS Specific
- DatePickerIOS now takes locale 🌍 (fd9c361 by @RobertPaul01)
- CameraRoll can now deletePhotos 📸 (554e873 by @fxfactorial)
- There's now an API to specify a different directory for iOS image assets (8f9b291)
- Support for custom accessibility actions on iOS (36ad813 by @ericdavmsft)
Deprecated
- Ignore YellowBox warnings with
YellowBox.ignoreWarnings([...])
rather thanconsole.ignoredYellowBox = [...]
(26038f5 by @wli)
Changed
- Metro-bundler is now metro, and it's v0.24.1; there were some performance increases at the cost of a few breaking changes; improved tests of the bundler too (0bbd9f0, a2fd3fc, 503b452, 654fed4, 0091496, aba148f, 3d5dc87, 48019a0, ecec431, f4d627c, f871d25, a7b231a, 830b431, 29dafa1, 7a5d5a4, 4cd685a, d326c86, 231c7a0, 7d969a0, ae51730, f587f8d, fbf0aed, e9393f6, and 968c88d by @cpojer, @hramos, @jeanlauliac, and @rafeca )
- React is now v16.2.0, and it took react-test-renderer along with it; now with more fragments! 🎉 (c7f3707 and cd938d7 by @bvaughn)
- Jest is now v21.3.0-beta.13 (16bbd90 and ec2ea58 by @mjesun)
- Flow is now v0.61.0, and there were a ton of Flow fixes/coverage improvements made (914ae93, eb0d647, c8e72bb, 2d4bedb, e0202e4, 2be3ae1, 22a1419, 6ae0b34, 76a2ca4, 3259353, e6c1fb7, 61d046b, 820cfa1, 240039c, 343c5a9, 5f8d8e9, and da04796 by @Ashoat, @calebmer, @cdlewis, @deecewan, @grabbou, @jamesisaac, @mroch, @nmn, @nmote, @sahrens, @samwgoldman, @TheSavior, and others)
- react-devtools-core is now v3.0.0 (a7d46ea by @rsnara)
- Split out docs to their own repo (and a few formatting fixes along the journey) 👋 (2d86618, 64d80b1, 3362da4, 75123c6, and 79e24ed by @hramos).
- TouchableHighlight now has a default delayPressOut value of 100; it was also refactored a bit for style (ee8a7b4 by @sahrens)
- When in a dev build, more robustly validate arguments for native methods (ea2e2c5 by @mhorowitz)
- On integration tests, report all errors (3bcb912 by @sahrens)
- Yoga has less technical debt, thanks to replacing YGNodeList with vectors (b08a912 by @priteshrnandgaonkar)
- Yoga is now cpp, compiled as c++1y (d7ab949 by @priteshrnandgaonkar)
- Bundle segments are handled better and used more (6812789, a47431e, 963c61d, b9f21dc, f125818, and 1988ba1 by @fromcelticpark and @jeanlauliac)
- packager-worker-for-buck has better tests (7fd5aa8 by @jeanlauliac)
- RCTUIManager has less technical debt (71b498b, 60dc9be, and 21714fe by @shergin)
- Numerous bridge changes, especially around URL resolution (e7bd0f0, 260e6d2, 4894ac4, b983de9, b0193b0, ae5ef65, and 1d6ce23 by @fromcelticpark and others)
- Various cleanup and refactoring (0537763, 0984f29, 6c70975, d950dc6, 70c3590, cfa2bbf, and 850efa8 by @bnham, @priteshrnandgaonkar, and others)
- Jest preprocessing now uses the AST from metro (2ae255a and d5b5951 by @rafeca)
renderApplication()
now supports async initial render (1b22d49 by @bvaughn)- Welcome @lwinkyawmyat to the React Native GitHub Issue Task Force (4ebe76d by @lwinkyawmyat)
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
Fixed
- Fix
backgroundColor
on TouchableHighlight (5a1171e by @sahrens) - Various corrections in messages, comments, and docblocks (58c3bc4, 354e1cb, 58edf02, b9e7006, d2f0abd, 94cd9f5, 8547b7e, 44c1649, c91d872, 85503a0, and 5b83dbe by @behrends, @bvaughn, @charpeni), @dsandmark, @gusgard, @nkabrown, @petterh, @solon, @swashcap, and others)
- Various dev doc and project doc fixes for correctness and completeness (92c0980, 3c9092a, e906525, 6082856, c49b97c, 45ed142, cb6ec7c, 9ec9567, e5a4ea9, c544c0d, 33d5e5b, 95dac8d, 6e1db1f, e11d496, 6da8979, 0ff5760, 1ee64cc, 3aa3856, 6b26971, and de3976a by @adrianomelo, @blargity, @charpeni, @garlic-rice-with-butter, @gwmccull, @harikrishnanp, @hramos), @johnthewilson, @jsdario, @kelset, @patrickkempff, @ryanml, @tiagomoraismorgado88, @timwangdev, and others)
- Stop
RCTRefreshControl
from jumping around (2e1707d by @sophiebits) - Fix a race condition in the animation module (515eb0e by @mhorowitz)
- Fix Windows local-cli's to not wrongfully identify as globally installed (ca10604 by @sballew)
- Fix Jest mocks for NetInfo, Dimensions, and ScrollView modules (7fb3a92, 11a2a35, and 0c8a3e4 by @alvaromb, @timwangdev, and @uk-ar)
- packager-worker-for-buck:
transformCommand
: add missing test (73a01be by @jeanlauliac) - Fixed issue where CLI wasn't following the config value for postMinifyProcess when its running with
dev=false
(6d92046 by @rafeca) - Fix asset resolver url handling (28d5d6b by @fkgozali)
- Fix crash when destroying catalyst (f101566)
- You can now
justifyContent
while you'reminWidth
ing andmarginLeft
ing; before the justification wasn't honored (f5beceb by @woehrl01) marginLeft: auto
andalignItem: stretch
now play nicely together; before the width and height ended up incorrect (5f99b1a by @woehrl01)- Fix assertion preventing YGNodeLayoutGet* with YGEdgeEnd (a383b8c by @justjake)
- Fix shrinking in non-strech alignments (1d62848 by @woehrl01)
- Correctly calculate min/max percentage constraints (4fdaf2d by @woehrl01)
- When running
react-native-git-upgrade
, don't execute git's hooks (0182086 by @adrienthiery) - When running
react-native-git-upgrade
and failing with a signal, return that to the terminal (b9a5862 by @mateusz-) - In KeyboardAvoidingView, don't mistakenly try to layout when a hardware keyboard changes (ad4450a by @koenpunt)
- Don't endlessly collect websockets when not connected to the packager (dev memory leak) (1e1e491 by @mmmulani)
- Fixed a bug in the sample project random
selection
prop that made it not-so-random (766f020 by @rozele)
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
toconst 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)