React Native v0.24.0 released
v0.24.0 on GitHub (npm)
Docs here: https://facebook.github.io/react-native/releases/0.24/docs/getting-started.html.
This release includes a series of improvements for coalescing touch and scroll events on iOS by Martin Kralik (@majak). These improvements fixed a bug that was preventing some native touch events from being dispatched to JS. This also improves the perceived performance of components that rely on these touch events, like parallax scrollers. Thanks, Martin! ๐๐ป
Known issues weโre fixing
- RefreshControl broken on iOS: #6929 (fix: 03c1688)
- Hot module reloading raises an error: #6798
response.json()
hangs when Chrome debugging is enabled: #6679- Unable to require images under
node_modules
: #6638
Ongoing issue thread: #6800
Breaking changes
- Android no longer includes Stetho by default: 3c488af
- Removed
RCTBridgeModuleClassIsRegistered
from iOS: a16771c - Removed
sendMomentumEvents
prop from ScrollView, which was intended for internal usage - StyleSheetRegistry has been renamed to ReactNativePropRegistry. This module is private so it shouldn't affect everyone using React Native's public API, though: 433fb33
New features
-
Enhancements to NavigationExperimental by @hedgerwang:
-
Experimental WindowedListView, which uses a placeholder spacer view for off-screen rows. It is not a drop-in replacement for ListView: cd79e26
-
Several improvements to the docs
Bug fixes
- Use a monotonic clock instead of the current time in the profiling tools: ac03c47
- Various Hot Module Reloading fixes: 98411f1, 51b5423
- Fix views not stretching vertically in column layout: #2724, d957570
- Use semver in the .flowconfig file to allow you to use patch versions of Flow without updating .flowconfig: #6767
Android
New features
- ๐ Preliminary support for delegating Animated commands to the native UI thread. Credit goes to @kmagiera for the design and implementation, @brentvatne for experimentation and critical feedback, and @astreet and @vjeux for a thorough code review. The implementation is not complete but will eventually unblock Navigation animations from other heavy work on the JS thread: #6466
- Modal now warns if you don't provide the
onRequestClose
prop: ce81f8b - Vibration patterns: e20e8a3
- DrawerLayoutAndroid has a new
statusBackBackgroundColor
prop, which tells it to draw over the native Android toolbar. See the screenshots in the PR: #6218 - ScrollView has a new
endFillColor
prop, which tells React Native to fill in the rest of the scroll view with a color in the event that the scroll view's viewport is larger than its content. This is an advanced performance optimization to reduce overdraw; measure performance before you use it: 4498bc8 - TextInput supports the 'selectTextOnFocus' prop now: #6654
- Start creating views before the end of a batch for performance: 6a3b334
- ReadableArray and ReadableHashMap now define convenience methods:
toArrayList
andtoHashMap
: #6639, #6762 - Returning true from a BackAndroid
hardwareBackPress
handler stops invocation of previously registered handlers and the default OS action: 67efe4c (reverted in ede99ee) - Slider component is available: afe78f6
Bug fixes
- Fix clipping rectangle calculation for nested scroll views: e8e3182
- Don't strip
NativeRunnable
constructor with ProGuard: 393890e - Fix fetching source maps in Genymotion: 6c22a21
- Prevent a parent viewโs touched state from applying to its children when nesting TouchableNativeFeedback components: #6783
iOS
New features
- Open-source
FBPortForwarding
, which proxies network requests from a device to your computer likeadb reverse
. It is not integrated with React Native, but the code is here if you want this feature:FBPortForwarding
: c4699d8 - ActionSheetIOS has a new
message
option: #6685
Bug fixes
- ๐ Fix how native events are coalesced when sending them to JS, specifically touch and scroll events, in order to respect their ordering (#5246 (comment)). When all events can be coalesced, they are processed ASAP instead of waiting for the next JS frame. Several diffs from @majak: a496baa, a37075d, cefc5a6, 7c2b397, b1b53aa, 1d3db4c (reverted in 144dc30 , reinstated with a fix in 02b6e38 ), 31bb85a
- Lock accesses to the flow ID map (for profiling) for thread safety: 2be42ab
- Stop the JS run loop from
-[RCTJSExecutor invalidate]
instead ofdealloc
so that it is guaranteed to be stopped from the JS thread: 99c7de2 - Prevent dev menu from resetting simulator orientation: #6765
- Increase dev tools timeout: b00c77a
- Use indirect jumps in the profiling trampoline to support larger binaries when needing to jump more than 32MiB: 2f27039
- Make SliderIOS retain its touch responder status: 52ddfd9