Browser games are a $12B+ market in 2026, and the tooling has never been more polarized. On one side you have Phaser, the 13-year-old veteran with 40,162 GitHub stars and a brand-new v4 renderer. On the other, PixiJS — 48,023 stars and the fastest WebGL/WebGPU rendering engine in the browser. And then there’s Kaboom, the tiny weekend-jam favorite whose original maintainer just walked away. Pick wrong and you either drown in boilerplate or hit a rendering ceiling three months into development.
The good news: the decision is simpler than the hype suggests. These three libraries solve different problems, and only one of them is actually a full game engine. Here’s what each one really is, with numbers from their repositories fetched live.
TL;DR / Quick Verdict
If you want to ship a real game — with scenes, physics, input, and asset loading handled for you — choose Phaser 4. It is the only complete game framework of the three, and its new node-based WebGL renderer plus 345 KB gzipped full build make it the best all-in-one in 2026. If you’re building rendering-heavy experiences (data visualizations, particle effects, custom UI) or need WebGPU performance, choose PixiJS — but understand you’re getting a rendering engine, not a game engine: no scenes, no physics, no input abstraction. Do not start a new project on Kaboom: Replit stopped maintaining it in August 2024, and the community fork KaPlay is the only sane way to use that API family today.
Quick Comparison Table
| Feature | Phaser | PixiJS | Kaboom |
|---|---|---|---|
| What it is | Full game framework | Rendering engine | Micro game framework |
| GitHub stars | 40,162 | 48,023 | 2,736 |
| Last push | 2026-07-09 | 2026-08-14 | 2024-08-04 |
| Rendering | WebGL + Canvas (WebGL2 default) | WebGL + WebGPU | WebGL via KaboomGL (regl) |
| Scene management | ✅ Built-in | ❌ Build your own | ✅ Scene per function |
| Physics | ✅ Arcade + Matter.js | ❌ | ⚠️ Basic gravity/collision |
| Asset loader | ✅ Comprehensive | ✅ Assets loader | ⚠️ loadSprite per asset |
| Input handling | ✅ Keyboard/mouse/touch/gamepad | ❌ Raw DOM events | ✅ onKeyPress, onClick |
| Bundle (gzip) | 345 KB full (313 KB arcade) | ~45 KB core | ~40 KB |
| TypeScript | ✅ First-class types | ✅ Written in TS | ⚠️ Definitions available |
| Current major version | Phaser 4 (new renderer) | v8 (async init) | v3000 (unmaintained) |
| License | MIT | MIT | MIT |
Use-Case Decision Matrix
| Use Case | Recommendation | Why |
|---|---|---|
| Full web game (platformer, RPG, arcade) | Phaser | Scenes, physics, input, loader, and camera all built in — 2,000+ official examples |
| Rendering-heavy visualization / dashboard | PixiJS | Fastest 2D WebGL/WebGPU renderer; perfect for graphs, maps, and custom graphics |
| Game jam prototype this weekend | KaPlay (Kaboom fork) | Component syntax gets a playable scene in 20 lines |
| GPU-driven effects with 1M+ sprites | Phaser 4 | New SpriteGPULayer renders a million sprites in a single draw call |
| Cross-platform: Steam, iOS, Android, Discord Activities | Phaser | One codebase wraps to native stores and embed platforms |
| Learning WebGL/WebGPU fundamentals | PixiJS | Thin, well-documented layer over the raw GPU APIs |
Phaser — The Complete Game Framework
Phaser has been in active development for over 13 years and is the most-starred JavaScript game framework on GitHub (40,162 stars, last push July 2026). It’s a full game framework: scene-based architecture, Arcade and Matter.js physics, input handling, cameras, tilemaps, particles, tweens, and a comprehensive asset loader — all behind one consistent API. It supports JavaScript and TypeScript, works with 40+ frontend frameworks including React and Vue, and is commercially maintained by Phaser Studio Inc.
The officially recommended way to start in 2026 is the create-phaser-game CLI, which scaffolds a working project from interactive templates (Vue, React, Angular, Svelte, Remix, and more, in JS or TS):
| |
Phaser 4, released in this cycle, is built on a brand-new node-based WebGL renderer: WebGL state is fully managed, context loss is handled gracefully, quads use index buffers (cutting vertex upload costs by a third), and rendering is just-in-time — nothing hits the GPU until it has to. The unified Filter system replaces the old FX/masks split, and every filter can be applied to any game object or camera: Blur, Glow, Shadow, Pixelate, ColorMatrix, Bloom, Vignette, and new additions like ImageLight, GradientMap, and Quantize.
For scale, Phaser 4 introduces SpriteGPULayer, a game object that stores member data in a static GPU buffer and renders everything in a single draw call. Where standard Phaser rendering handles tens of thousands of sprites comfortably, SpriteGPULayer handles a million or more — up to 100x faster — with GPU-driven animation of position, rotation, scale, alpha, tint, and frame. If your game is a bullet-hell, an endless runner with parallax backgrounds, or a city simulator, this one object changes your frame budget.
The pricing of all this convenience is bytes. The unminified phaser.js is over 8 MB, but 84% of that is inline JSDoc documentation; the minified full build is 345 KB gzipped, and the phaser-arcade build (Arcade physics only, no Matter.js) drops to 313 KB. You can trim further by excluding features you don’t need.
PixiJS — The Rendering Engine, Not a Game Engine
PixiJS is the fastest, most lightweight 2D library available for the web — a rendering engine with WebGL and WebGPU backends, 48,023 stars, and a last push in August 2026. It’s the tech under a huge share of “HTML5 game” visuals that aren’t strictly games: interactive infographics, map renderers, casino and slot graphics, and massive particle systems.
Getting started is one command — npm create pixi.js@latest — or a plain install for existing projects:
| |
The canonical usage (straight from the repository README) shows the shape of the API — async application initialization, an asset loader, and a stage-graph of sprites:
| |
That’s the whole PixiJS contract: an Application, a stage, and an explicit ticker. Everything else — game loops, collision, input state machines, scene transitions — is your responsibility. PixiJS gives you unmatched rendering performance (WebGPU support means it can even outrun WebGL2-based frameworks on compatible hardware), powerful filters, advanced blend modes, masking, flexible text rendering, and multi-touch support. What it deliberately does not give you is a game engine. If you pick PixiJS for a game, budget engineering time for the missing layers or pair it with a lightweight game-loop library.
Kaboom — The Jam-Machine That Stopped Being Maintained
Kaboom is a JavaScript library that “helps you make games fast and fun” — a component-based micro-framework where game objects are composed from arrays of components. It powered thousands of game-jam entries, Replit tutorials, and classroom projects because a playable scene really is 20 lines:
| |
Components compose declaratively — sprite(), pos(), area(), body(), health(), plus tags for group behaviors and plain fields for custom state:
| |
Here’s the 2026 reality check: Replit no longer maintains Kaboom. The repository’s own README now opens with a notice pointing to the community fork KaPlay (marklovers/kaplay). The last push to replit/kaboom was August 2024. Kaboom’s npm package still installs and works, and the syntax is as pleasant as ever — but for a new project you should use KaPlay, which continues the API under community stewardship. Kaboom/KaPlay remains a great choice for prototypes, jams, and teaching; it is a poor choice for a long-lived production game with no migration plan.
Common Pitfalls and Gotchas
- Treating PixiJS as a game engine. The most common failure mode in this ecosystem: teams build a game on PixiJS, then discover there’s no scene manager, no physics, and no input abstraction, and bolt on three more libraries. If your product is a game, start with Phaser; use PixiJS when the rendering is the product.
- Starting a new Kaboom project. The original repo is unmaintained since August 2024. Use the KaPlay fork. And read its changelog — KaPlay has already diverged from Kaboom v3000 in places.
- Phaser 3 → Phaser 4 migration assumptions. The public API looks familiar, but the renderer is entirely new: the old pipeline system is replaced by render nodes, and FX/Masks are unified into the Filter system. Follow the official migration guide; don’t assume drop-in compatibility.
- Shipping the wrong Phaser build. The raw
phaser.jsis 8+ MB because of inline documentation — it’s for your IDE, not your users. Shipphaser.min.js(345 KB gzip) or thephaser-arcadebuild (313 KB gzip) and trim features you don’t use. - Ignoring WebGL context loss. On mobile, browsers reclaim GPU contexts under memory pressure. Phaser 4 handles context restoration natively; with PixiJS you must handle the
webglcontextlostevent and re-initialize your renderer — test it with the browser’s context-loss simulator. - Forgetting the canvas fallback. Phaser supports Canvas rendering; PixiJS v8 is WebGL/WebGPU-first. If you must support very old browsers or software rendering, verify your target matrix before committing to PixiJS.
- Skipping the asset pipeline. Loading dozens of individual sprites over HTTP is the #1 cause of “game looks broken” bugs. Use texture atlases/spritesheets; both Phaser’s loader and PixiJS’s Assets support them out of the box.
Choosing Between 2D and 3D
This article covers 2D engines, but if your game idea is fundamentally 3D — camera rotation, depth, lighting — none of these three will make you happy, and you should look at the WebGL 3D engine space instead (three.js, Babylon.js, PlayCanvas) covered in our three.js vs Babylon.js vs PlayCanvas comparison. A common trap is building a “2.5D” game on a 2D engine and fighting the renderer for months; conversely, teams often reach for 3D engines for what is really a 2D game with prettier graphics. Phaser 4’s filter system (Bloom, Glow, ImageLight) covers most of the “wow” factor that pushes people toward 3D prematurely. For serious native-style game production, also see our Godot vs Bevy vs Defold build-server guide — Godot is a legitimate path if you want to author in an editor rather than in code.
FAQ
Is PixiJS a game engine?
No. PixiJS is a 2D rendering engine (WebGL/WebGPU). It has no scene management, physics, input abstraction, or game loop — you build those yourself. Use it for rendering-heavy applications; use Phaser when you want a complete game framework.
Is Phaser 4 out, and should I migrate from Phaser 3?
Phaser 4 is the current major release, built on a new node-based WebGL renderer with context-loss handling and a unified Filter system. The public API is mostly familiar, but rendering internals changed completely — consult the official migration guide before upgrading, especially if you use custom pipelines or FX.
Why is Kaboom’s README pointing to KaPlay?
Replit stopped maintaining Kaboom in August 2024. The community fork KaPlay (marklovers/kaplay) continues the API. For new projects, use KaPlay; for existing Kaboom games, evaluate the fork’s changelog before migrating.
Which engine is best for mobile browsers?
Phaser 4 and PixiJS both target mobile well; Phaser’s managed WebGL state and context restoration handle the flaky GPU drivers of low-end Android devices, while PixiJS’s WebGPU support future-proofs performance. Avoid heavy Matter.js physics on low-end devices — Arcade physics is far cheaper.
Can I use Phaser with React or Vue?
Yes — Phaser explicitly supports over 40 frontend frameworks including React and Vue. The create-phaser-game CLI scaffolds official templates for Vue, React, Angular, Next.js, SolidJS, Svelte, and Remix, in JavaScript or TypeScript.
What about WebGPU support?
PixiJS has first-class WebGPU support today. Phaser 4 is WebGL2-focused. If you need WebGPU rendering, PixiJS is the choice; if you need a complete game engine, Phaser’s WebGL2 renderer is still excellent and shipping titles today. If you’re pairing an engine with a solid state layer, our Redux vs Zustand vs Jotai state management comparison covers the frontend half of that stack.
💰 想测试你的市场判断力?我用 Polymarket 做预测市场交易——这是全球最大的预测市场平台,从大选结果到技术监管时间线,什么都可以押注。和赌博不同,这是真正的信息市场:你懂的信息越多,胜率越高。我靠预测技术相关事件的走向已经赚了不少。用我的邀请链接注册:Polymarket.com