“React Native can’t do games.” We’ve heard it hundreds of times. And it makes sense if you’re thinking about 3D AAA games. But for 2D games — tycoon, puzzle, idle, arcade — React Native with Skia is a surprisingly powerful option.
Why Skia
@shopify/react-native-skia brings the Skia rendering engine (the same one used by Chrome and Flutter) to React Native. This means:
- Native canvas rendering at 60fps
- Procedural drawing — rectangles, circles, gradients, paths
- No bridge — direct rendering on the native UI thread
- Cross-platform — same code on iOS and Android
Our case: Build Your Empire
In our business simulation game, the entire visual scene is drawn with Skia:
// Each building is a series of 8x8 rectangles
const drawBuilding = (canvas, x, y, floors, color) => {
for (let f = 0; f < floors; f++) {
canvas.drawRect(
{ x, y: y - f * 8, width: 16, height: 8 },
{ color }
);
}
};
Advantages of this approach:
- Zero assets — no sprite sheets or texture atlases needed
- Dynamic — the player’s tower grows in real time based on employees
- Lightweight — the bundle weighs less without image assets
- Customizable — changing colors or sizes means changing a number
Real limitations
Not everything is perfect:
- Not suitable for games with complex animations — no native particle system
- No physics — you’d need to integrate a separate library
- Visual debugging — no inspector like in Unity
- Small community — fewer resources and tutorials than Unity/Godot
When to use React Native + Skia for games
| Good fit | Bad fit |
|---|---|
| Tycoon / simulation | Fast-paced action games |
| Puzzle / casual | Games with complex physics |
| Idle / clicker | Any kind of 3D |
| Digital board games | Real-time multiplayer |
| Quick prototypes | Animation-heavy games |
Conclusion
If you already know React Native and want to create a 2D game without learning a new engine, Skia is your best bet. It doesn’t replace Unity or Godot, but for certain genres it’s more than enough — and it lets you reuse all your React, TypeScript and npm ecosystem knowledge.