Open-source project
boardgameio/boardgame.io avatar
boardgameio/boardgame.io

boardgame.io: A State Engine That Turns Move Functions into Multiplayer Games

State Management and Multiplayer Networking for Turn-Based Games. View-layer Agnostic: Use the vanilla JS client or the bindings for React / React Native.

12,489 stars833 forksTypeScriptMIT

At a glance

What is it?
boardgame.io is an MIT-licensed TypeScript engine for turn-based games that handles state, networking, and storage. It suits JavaScript developers who want multiplayer without writing transport code, but its abstractions come with trade-offs.
Who is it for?
Adopt boardgame.io if you are building a turn-based game in JavaScript and want to skip writing networking and storage code, especially if you use React or React Native. Skip it if your game needs real-time action, complex server-side logic beyond simple moves, or if you prefer full control over your transport layer.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 15 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • boardgameio/boardgame.io12,489 ★ · +101
Star history
Repository2026-08-022026-11-13
boardgameio/boardgame.io12.4k12.5k

101 Stars in the last 103 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The Problem It Solves

Building a turn-based game is mostly plumbing. You need to define game rules, keep the board state consistent across clients, send moves over the network, and persist the game when players leave. boardgame.io collapses most of that into a single engine. The README says you write simple functions that describe how state changes when a move is made, and the engine converts that into a playable game with online multiplayer, without requiring networking or storage code. The target user is a JavaScript developer who wants to focus on game logic, not on WebSocket servers or database schemas. It is explicitly view-layer agnostic, so you can pair it with vanilla JS, React, or React Native bindings. That makes it relevant for indie game devs, hackathon projects, and teams prototyping a board game before committing to a custom backend.

How the Engine Works

The core idea is that you write simple functions that describe how the game state changes when a particular move is made. The README mentions state management across clients, server, and storage automatically, and realtime sync across platforms. It also includes game phases, which let you change rules and turn order per phase, and a lobby for matchmaking and game creation. The engine keeps a log of moves, and you can time travel to view the board at an earlier state. This is a significant feature because it gives you replay and debugging tools for free. The README lists a plugin system that allows creating new abstractions.

Getting It Running

Installation is straightforward: run npm install boardgame.io in your project. The repository itself can be run locally with npm install and npm start, which launches the examples in the examples folder. The README also notes that the repository is ready for VS Code dev containers, which is convenient for contributors. The documentation at boardgame.io/documentation is the primary reference. The repository has examples in examples/react-native, examples/react-web and examples/snippets.

Where It Falls Short

The biggest limitation is that it is designed for turn-based games only. Real-time games, like action or racing games, do not fit the move-and-respond model. Even within turn-based games, the auto-generated AI is a black box. The README says AI bots are automatically generated, but it does not explain how they make decisions or how to customize them. Finally, the repository has no GitHub releases, although the last push was on 2026-10-30 and package.json shows version 0.50.2. That is worth weighing if you need a clear release cadence.

A Real Alternative: Colyseus

Colyseus is a multiplayer game server for JavaScript that also handles state sync. boardgame.io is specifically an engine for turn-based games, so if your game has real-time elements, a general-purpose game server such as Colyseus is the kind of tool to compare it with. If you want pure turn-based with minimal networking and storage code, boardgame.io's README describes exactly that.

Maintenance and License

The project is MIT licensed, which means you can use it in commercial projects with minimal restrictions, but you should read the license file to understand attribution requirements. The README points to a changelog and a roadmap, but the repository has no published GitHub releases. The last push was on 2026-10-30 and package.json shows version 0.50.2. The repository is not archived, and the default branch is main, so it is still active in some form. However, the lack of release information is a warning sign for teams that need stable versioning. The documentation is the main resource, and it is open to contributions, so you can improve it if you find gaps. Before adopting, check the changelog for recent fixes and the roadmap for upcoming features.

Editorial conclusion

Adopt boardgame.io if you are building a turn-based game in JavaScript and want to skip writing networking and storage code, especially if you use React or React Native. Skip it if your game needs real-time action, complex server-side logic beyond simple moves, or if you prefer full control over your transport layer. Before committing, check the changelog and roadmap the README links to, and the open GitHub issues. boardgame.io is a solid fit for prototypes and small to medium turn-based games, but treat the auto-generated AI and plugin system as starting points, not finished products.

Frequently asked questions

how to install boardgame io

Consumers install the package with npm install boardgame.io. To run the examples from a clone instead, the documented steps are npm install followed by npm start, and the examples live in the examples folder. Repository development uses pnpm at version 10.16.0 with a pnpm workspace.

how to use boardgame io

You write simple functions describing how game state changes when a particular move is made, and those are turned into a playable game with online multiplayer features without you writing networking or storage code. The full documentation is published at boardgame.io/documentation, and there is a Gitter channel and GitHub Discussions for questions.

what is boardgame io

It is an engine for creating turn-based games using JavaScript, written in TypeScript and published as version 0.50.2 under the MIT license. It provides state management, multiplayer sync, generated AI bots, game phases, a lobby, time travel logs, and clients for vanilla JavaScript, React and React Native.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/boardgameio-boardgame-io.svg)](https://hysenlabs.com/projects/boardgameio-boardgame-io)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/boardgameio-boardgame-io.svg)](https://hysenlabs.com/projects/boardgameio-boardgame-io)

Was this useful?