boardgame.io is an engine for creating turn-based games using JavaScript that handles state management and multiplayer networking automatically.
The tool solves the problem of building networked turn-based games by letting developers write simple functions describing how game state changes when moves are made. These functions are automatically converted into a complete playable game with online multiplayer capabilities, eliminating the need to write networking or storage code manually. The engine manages game state seamlessly across clients and servers, keeps state synchronized in realtime across platforms, and provides features like game phases with different rules per phase, player matchmaking through a lobby system, time-travel game logs, and automatically generated AI bots.
Developers building turn-based games should choose this tool if they want to focus on game logic rather than infrastructure. It suits projects ranging from prototypes to production games and works with vanilla JavaScript or through bindings for React and React Native. The view-layer agnostic design means you can use whatever frontend framework fits your needs. The tool includes a prototyping interface to simulate moves before rendering, and a plugin system for creating custom abstractions.
The project maintains active community engagement through Gitter and GitHub Discussions channels. Documentation is comprehensive with an edit-on-GitHub workflow encouraging contributions. The repository includes a roadmap and contributing guidelines, and maintains a dev container setup for VS Code development. The codebase has automated test coverage tracking and a changelog documenting updates.