library for turn-based games

Usage no npm install needed!

<script type="module">
  import smileyjamesBoardgameIo from 'https://cdn.skypack.dev/@smileyjames/boardgame.io';



npm version Build Status Coveralls Gitter

Read the Documentation

boardgame.io is an engine for creating turn-based games using JavaScript.

Write simple functions that describe how the game state changes when a particular move is made. This is automatically converted into a playable game complete with online multiplayer features, all without requiring you to write a single line of networking or storage code.


  • State Management: Game state is managed seamlessly across clients, server and storage automatically.
  • Multiplayer: Game state is kept in sync in realtime and across platforms.
  • AI: Automatically generated bots that can play your game.
  • Game Phases: with different game rules and turn orders per phase.
  • Lobby: Player matchmaking and game creation.
  • Prototyping: Interface to simulate moves even before you render the game.
  • Extendable: Plugin system that allows creating new abstractions.
  • View-layer Agnostic: Use the vanilla JS client or the bindings for React / React Native.
  • Logs: Game logs with the ability to time travel (viewing the board at an earlier state).



$ npm install --save boardgame.io


Read our Full Documentation to learn how to use boardgame.io, and join the community on gitter to ask your questions!

Running examples in this repository

$ npm install
$ npm run build
$ npm start

The examples can be found in the examples folder.


See changelog.


See the contributing guidelines. Also take a look at the roadmap to find things that you could contribute to.