Skip to main content

React Native, rendered through Impeller

An out-of-tree React Native platform. Fabric's view tree drives an embedded C++ renderer built on Flutter's Impeller engine, so the same app runs on desktop targets React Native doesn't support on its own.

JS threadHermes, React, Fabric commitPlatform threadmount + scene graphRaster threaddisplay list -> presentImpellerMetal / GLES per OS

React Native beyond iOS and Android

React Native creates matching native views on iOS and Android. Every other platform needs someone to build that layer.

React Native's docs list partner platforms for macOS and Windows. For Linux they point to a renderer built on Skia whose README still calls it a proof of concept, with no commit since March 2023.

This platform renders on Linux, macOS, and Windows through Impeller. Flutter built Impeller to fix problems it had with Skia, and Impeller now ships as a standalone SDK with a C API meant for projects outside Flutter: a prebuilt binary for every Flutter commit, text layout and shaping included, and shaders compiled ahead of time so nothing compiles at runtime. It renders a React Native app in daily use.

Platforms

Each OS gets the same graphics backend Flutter ships there.

  • macOS (arm64)Native Metal, 4x MSAA
  • Linux (x64)OpenGL ES over EGL (Mesa)
  • Windows (x64)OpenGL ES over ANGLE (Direct3D 11)

Read the docs