Skip to content

BuildNot yet confirmed elsewhere1 publisher2 min readPublished

React Native Skia v3 moves its renderer to Graphite on Dawn under a new package name

React Native Skia v3 renders through Skia's Graphite backend on Dawn and raises the minimums to Android API 26 and iOS 15.1. Graphite does not run on tvOS, Android TV or Mac Catalyst, so apps that target them stay on the maintained v2 line.

The Engineer · Build desk

How we use AISend a correction

What happened

  • Drawing code carries over, with components, hooks, shaders and the imperative Skia API working as they did in v2.
  • Three Canvas props and the NativeSkiaViewProps type were removed in v3.
  • On iOS and macOS the Skia binaries now come from two new npm packages that also ship Dawn, so pod install has to run again after upgrading.
  • Apps that also use react-native-webgpu link one shared copy of Dawn, and the native build fails if the two packages were built against different Dawn releases.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • constraint An app's move to v3 waits on its slowest Skia-dependent library, since any library still importing the Shopify name blocks the install and the two packages cannot sit side by side.
  • decision Android apps that still need devices below API 26 or without Vulkan must choose between dropping those users and staying on v2, because the minSdkVersion floor covers the whole app.
  • cost Expo teams on v3 give up Expo Go, which bundles v2's native code, and move their testing to development builds.
  • capability Apps that mix Skia drawing with WebGPU can now share one GPU device and its textures between the two without copying.

The rename and the backend change ship on separate version lines. The docs refer to projects that already depend on react-native-skia at 2.15 [9], and the install line they give for staying on v2 is `yarn add react-native-skia@2` [2]. A team that never adopts Graphite still switches its dependency name to keep receiving v2 releases after 2.14 [25].

That part of the migration is a string replace. The guide pipes `git grep -l "@shopify/react-native-skia"` into a perl substitution over .ts, .tsx, .js and .jsx files, about the right amount of tooling for the job [12]. Deep imports used on Web and in headless mode change too [12]. So do three entries in jest.config.js: `testEnvironment`, `setupFilesAfterEnv` and the `transformIgnorePatterns` regex each name the package [13].

On Android, Dawn drives Vulkan where v2 used OpenGL ES [8][1]. React Native projects default to a lower minSdkVersion, so the upgrade includes `minSdkVersion = 26` in the `ext` block of android/build.gradle [14]. Expo projects set the same floor through the expo-build-properties plugin [24].

The threading change is the engineering I would upgrade for. Under Ganesh, a GPU texture belonged to the Skia context of the thread that created it, and v2 created its textures on the UI thread for that reason [19]. Its `<Canvas>` drew frames on the UI thread as well [18].

In v3 the scene is recorded once per React commit. A dedicated native thread pool replays it into a Graphite frame whenever its content changes, and the UI thread only applies animated values [18]. With Graphite, the guide says, textures can be used from any thread [20]. According to the docs, none of this requires changes to application code [23].

The guide does not include frame-time measurements. I'd expect the gain to track how much UI-thread time an app spent in Skia drawing under v2. An app whose dropped frames come from JavaScript work or layout would see less.

For a phone app that already targets API 26, ships no TV or Catalyst build, and uses no Skia library still published against the Shopify name, I think v3 is the version to be on.

What to watch

  • Releases of third-party Skia-dependent libraries that switch their imports to react-native-skia; their users cannot install v3 until they ship.
  • Whether the maintainers publish frame-time comparisons between v2's UI-thread drawing and v3's thread-pool replay.
  • Any Graphite support for tvOS, Android TV or Mac Catalyst, the platforms that currently keep apps on v2.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence72
Adoption
Insufficient
Hype gap+5
Incentives35
Confidence66
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    v2 is still maintained. It renders with OpenGL ES on Android and has lower version requirements: it runs on Android devices below API level 26 or without Vulkan, and it supports tvOS, Android TV, Mac Catalyst, and Expo Go.

  2. [2]

    Teams that need v2's platforms should stay on v2 by running yarn add react-native-skia@2 and using the v2 documentation.

  3. [3]

    The drawing API is the same as in v2: components, hooks, shaders, and the imperative Skia API all work as before.

Sources

1 independent publisher whose own reporting we read for this story.

  1. wcandillon.github.io

    1 article · October 9, 2026

    React Native Skia 3.0

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

Entities

Loading related stories