"Ok Google, give me an intro about designing for voice." … … Darn. But in spite of Google’s assistant inability to help me write this blog, these modern voice assistants are actually pretty neat. And with huge amounts of investment from Amazon and Google,...
The main criticism of any cross-platform mobile development framework is inevitable if small, loss of performance when juggling native elements and cross-platform elements; if your app calls to a device camera, Bluetooth, microphone, or otherwise, you are familiar with the loss of precious milliseconds. React Native is looking to dispel this criticism with its upcoming updates in Fabric and Turbo Modules.
What is React Native?
With that kind of support, adoption, and ease of use, you would assume that they’ve solved the issue of performance, right? Not until now with Fabric and Turbo Modules.
What is the Problem?
How Do We Fix This?
Using Turbo Modules
Here’s where Fabric and Turbo Modules come in.
Here’s a version using JSI where the picture host object is referenced rather than called/translated:
Using Fabric to Manage UI
React Native will be able to run certain heavier calls synchronously, prioritized over other UI elements, to return information quicker to reduce the chance of flickering by using their new UI Manager dubbed Fabric.
Per Valentin Shergin, an engineer at Facebook, Fabric focuses on the following top strategies:
- Using C++ for cross-platform “shadow” layer (in place of the Layout layer above)
- Immutable data structures (Shadow Trees, Props, Events)
- Shared memory ownership (between JS and native)
- Type-safe data structures
- Opt-in synchronous execution where it benefits performance, the UI responsiveness and simplifying inherently-synchronous interop APIs.
Ram N depicted the benefits of this new system with the following diagrams. In this initial diagram, you see the current method, where dotted lines represent an asynchronous call, blue boxes represent background processes, and green boxes represent the UI thread.
Using Fabric, you can prioritize certain calls to be prioritized and sent synchronously, as shown in the onScroll event below. The user would receive the information they’re expecting while scrolling much faster since they don’t need to wait for an asynchronous call to be completed.
Why Is This Exciting for React Native?
React Native is a widely used framework that allows businesses to streamline their cross-platform app dev, but, like any cross-platform development, the creeping annoyance of lacking performance with native modules is always a criticism brought up during discussions of which framework is best. With these changes, businesses can worry less about the optimization of their experiences and can know that they’re delivering an experience close to native.
When Can I Optimize My Apps?
Fabric and the use of Turbo Modules are still in development, but you can follow their progress via their Github thread. You can also find Ram N’s full talk from the 2018 React Conference here. In the meantime, check out our React Native white paper on how we can help you deliver your business value using React Native cross-platform dev.
Cameron uses his experience in app and analytics strategy for healthcare, finance, government, and logistics apps with a focus on emerging technologies to deliver on customer-centric product development. When not devouring research on the latest and greatest, you can find Cameron hiking, playing soccer, reading a book, or continuing his education.
Shockoe is packing its bags and heading to Boston this June to join today’s thought leaders in the enterprise VR/AR application space. LiveWorx is an annual digital transformation conference that connects technology thought leaders and enterprise...
In 2017 Google announced first-class support for Kotlin on Android at Google I/O, and shortly after I started looking into using Kotlin for our Android projects here at Shockoe. It took a few years before we officially started using Kotlin as our preferred...
It seems like all companies today are trying to find a way to incorporate augmented reality, voice, machine learning, or IoT into every technology product. Promises of systems and applications that can improve customer engagement, boost business...
We’ll be headed to the west coast June 4th - 7th for Future Stores Seattle to speak and moderate on bridging the online & offline experience Future Stores brings together retail executives from across the country to discuss how re-imagining physical...
Let’s make you a product manager. We recently forged new product managers at the Innovate Virginia conference, by Agile Richmond, during our workshop “Product Strategy, Development, and Analytics” by creating a strategy, executing that strategy through...
When I began at Shockoe in 2017, one of the personal draws for me was the fact that there was a clear commitment to pursuing the use of new and innovative technologies. In 2018, we began pursuing R&D in earnest, beginning to identify methods for...
Hospitals and health systems are facing an uphill battle to thrive and survive because of rapid changes and advances in healthcare. Hospitals that can get ahead of the technology curve and harness the right patient-friendly technologies for their...
The beginning of any new or existing iOS application development cycle should start off on the right foot. A solid foundation to support each environment level within the configuration of the XCode project is a great first step to the success of your...