Andrei Calazans

React Native Weekly - W29 2021

☕️ 4 min read

Welcome to the 18th and first ever late edition of React Native Weekly 😅

This is everything that happened in between 12th and 18th of July 2021.

Fabric is coming to open source

The biggest news of last week was this tweet from Joshua Gross joshuagross@fb.com mentioning that they have migrated all of their 1k+ screens to Fabric and are ready to start bringing it to open source.

We can expect Fabric to land and be appropriately documented after version 0.65 of React Native according to Lorenzo

I’ve mentioned in previous weekly how the fact that React Native is run on so many apps within Facebook a great way to QA how React Native is performing.

How to make your React Native App Faster

Arnaud AKA EveningKid shared a tweet on how to make your React Native app faster, it’s a great advice 🙈.

ThorWallet React Native App

Want to see a codebase of a real React Native app? Check out ThorWallet, expect to see usage of react-navigation, linear gradient, styled-components, and more.

Wanna make 300–500k a year?

Nader Dabit is helping someone find a React Native expert who wants to make real money 🤑

I’m helping to find a senior front end / mobile JavaScript Engineer. Must have expert level React Native experience and working with complex systems and a fluency with modern programming patterns & architectures. $300–500K total comp US based, send resumeDown pointing backhand indexross@680partners.com

Allow configuring ndk build architectures (#31232)

Summary from commit by Janic Duplessis janicduplessis@gmail.com:

Building from source in debug takes a very long time because native builds need to run for all supported architectures. It is possible to check which architecture the devices for which we are about to launch the app on are and build only for those. For most cases we can reduce the number of architectures we build for to 1 instead of 4, resulting in a large speedup of the build.

This is inspired by iOS which has a “Build for active architecture only” option. Since android doesn’t really support this natively we can implement it here and also in react-native by reading the build properties that we pass and alter the abi we build for.

With fabric / codegen coming up I suspect that we might want to default to building c++ soon. This should ease the transition as builds won’t be orders of magnitude slower.

See https://github.com/react-native-community/cli/pull/1388 for more context and how we use this new config to automatically detect running emulator architectures.

Add MEDIA_STOP, MEDIA_NEXT, and MEDIA_PREVIOUS event support to Android TV (#31837)

Another external contribution, this time from Tomáš Havlas tomas@havlas.me who is developing an TV applicaton for AndroidTV. You can learn more on how to consume these events for TV platforms here

Unify Typeface Logic (Android)

Some clean up around the TypeFace logic that refactors how Typeface style and weight are applied in React Native on Android.

In result this fixes and adds:

Android[Fixed] - Fixed a rare crash due to Typeface.sDefaultTypeface (Android SDK) being null. Android[Fixed] - Fixed font weight support for the Fabric renderer. Android[Added] - Added a new example to test font weights in TextInput.

Clean up & Extend Codegen

Héctor Ramos hramos@fb.com worked on Codegen this week:

3fefe043b41 Reorganize codegen script for clarity d90fe67123f Extend codegen script to take library name, output dir arguments

Remove defaultProps from SegmentedControlIOS (#31804)

Commit

Fix support for blobs larger than 64 KB on Android (#31789)

Tomek Zawadzki tomasz.zawadzki@swmansion.com logged the issue and also made the change request. If only everyone did this React Native would be on another level 😅.

The problem was quite interesting, it turns out when an object URL containing a large blob was passed as source of <Image /> it can hit the pipe buffer limited capacity of 65536 bytes (https://man7.org/linux/man-pages/man7/pipe.7.html, section "Pipe capacity").

When it hits the limited capacity the write operation to the buffer is blocked until you read the output of the pipe. In the current implementation of BlobProvider.openFile it doesn’t read in parallel causing it to stay blocked forever if it hits the limited capacity.

Replace master with main

Commit

Add support to URI keyboard type in Android (#31781)

This commit fixes the TextInput.keyboardType equals url not doing anything on Android.

That Is It!

That’s it for this week. If you want to see more checkout the previous week’s posts here. Subscribe to get notified when new posts are out = )