React Native Skia: A Year in Review and a Look Ahead
Article Summary
William Candillon and the Shopify team shipped 89 releases of React Native Skia in 12 months. Their secret? A custom renderer that runs on iOS, Android, Web, and Node.js with zero platform coupling.
React Native Skia brings the powerful Skia 2D graphics engine to React Native through a declarative API. Shopify's team built a custom React renderer that works across platforms and introduced Skia DOM for UI thread rendering, eliminating JavaScript thread bottlenecks.
Key Takeaways
- Single renderer works on iOS, Android, Web, and Node.js testing
- Skia DOM executes drawings entirely on UI thread, no JSI overhead
- End-to-end tests verify identical rendering across all three platforms
- Vision Camera integration applies Skia shaders to camera frames in real-time
- 2023 roadmap: worklet animations and advanced text layouts via paragraph module
React Native Skia evolved from alpha to production-ready with a platform-agnostic architecture that renders complex graphics on the UI thread without JavaScript bottlenecks.
About This Article
React Native Skia had trouble scaling when drawings involved thousands of JSI object allocations and invocations. On low-end devices, this caused noticeable slowdowns, especially during screen transitions with multiple canvases.
Shopify built Skia DOM, a declarative API that works across platforms. It uses C++ on iOS and Android, JavaScript on Web, and runs drawings directly on the UI thread without needing JSI.
Skia DOM improved performance by maintaining a single source of truth for drawings and only recomputing what changed. The core library stays small because developers can opt into additional modules like Skottie when they need them.