Chien notes that React Native already supports iOS, Android, Windows, and macOS, while some community platforms had fallen behind. He argues that JSI, TurboModules, and Fabric could make out-of-tree platforms easier to build and maintain.
Extending React Native To The Next Platform
Speaker
Kudo Chien, a React Native enthusiast at CloudMosa and creator of React Native V8, presents a proof of concept for extending React Native with Skia at React Native EU 2020.
Chien explores whether React Native could draw its interface with Skia, as Flutter does, instead of relying on native views. His proof of concept targets only views, images, and text, avoids interaction and animation, and aims to work across platforms without patching React Native.
The prototype combines a Skia app host with a React Native instance, using libuv for its event loop and JSI to create the JavaScript runtime. Chien uses Buck for React Native and prebuilt Skia libraries generated with GN and Ninja. He adds TurboModules, including placeholder modules, so JavaScript can find the platform APIs it expects.
Chien describes setting up Fabric’s scheduler, component registry, and mounting manager, then mapping Shadow View properties and Yoga-computed layout metrics to Skia drawing commands. The demo renders a background, the React logo, and text reading “React Native loves Skia.”
The prototype lacks networking and WebSocket support, updates for changed view properties, input handling, hit testing, and animation. Chien also says Skia needs a layer system and compositor, and cautions that performance must be measured rather than inferred from Skia’s use.
Takeaways
- Treat out-of-tree support as an architecture and maintenance problem; JSI and Fabric can reduce platform-specific work.
- A focused prototype can test a cross-platform rendering idea with just views, images, and text.
- Choose build tools around real dependency constraints: Fabric needed Buck features, while Skia libraries could be generated with GN and Ninja.
- Rendering a first frame is only a starting point; input, updates, animation, and compositing are substantial parts of production readiness.
- Measure performance on the actual implementation before attributing speed to a rendering library.
Mentioned in this talk
Search inside this talk
What was claimed 16
- works atKudo Chien works at Preview Coding
“This is Kudo Chien from Preview Coding.”
YouTube Unverified1 source· Talk
- featureReact Native V8: V8 JavaScript engine replacement for React Native
“a V8 JavaScript engine replacement for React Native”
YouTube Unverified1 source· Talk
- builtKudo Chien built React Native V8
“I have some side projects, like React Native V8”
YouTube Unverified1 source· Talk
- featurePuffin browser: Cloud-based browser modified from Chromium
“a cloud-based browser modified from the Google Chrome open-source project, Chromium”
YouTube Unverified1 source· Talk
- builtCloudMosa built Puffin browser
“a startup that develops the Puffin browser”
YouTube Unverified1 source· Talk
- works atKudo Chien works at CloudMosa
“My current full-time job is at CloudMosa”
YouTube Unverified1 source· Talk
- usesKudo Chien uses Skia
“use Skia to draw React Native views”
YouTube Unverified1 source· Talk
- usesTurboModules uses JSI
“They’re all based on JSI nowadays.”
5:05inNitro Modules & The Road to React Native 1.0YouTube Verified2 sources· Talk
- usesKudo Chien uses Ninja
“For Skia, I use GN and Ninja.”
YouTube Unverified1 source· Talk
- usesKudo Chien uses GN
“For Skia, I use GN and Ninja.”
YouTube Unverified1 source· Talk
- usesReact Native uses Buck
“Facebook internally uses Buck to build React Native.”
YouTube Unverified1 source· Talk
- usesKudo Chien uses Buck
“At last, I decided to use Buck for the whole system.”
YouTube Unverified1 source· Talk
- usesKudo Chien uses libuv
“I chose libuv”
YouTube Unverified1 source· Talk
- integrates withKudo Chien integrates with JavaScript
“we can reuse the existing JSC runtime and integrate it with JavaScript code”
YouTube Unverified1 source· Talk
- integrates withReact Native integrates with Fabric
“It's time to add Fabric and integrate with Yoga.”
YouTube Verified2 sources· Talk
- uses
“The layout metrics are about the view’s size and position, calculated from the Yoga engine”
YouTube Unverified1 source· Talk






