v2.3.0

LizardByte/Sunshinev2.3.0May 27, 2026by bfops

AI Summary

This release introduces first-party Godot SDK support and major WebSocket performance improvements through batching and pipelining. It also includes Rust `DbContext` generics, HTTP/2 backend support, and various commitlog optimizations.

Key Highlights

  • First-party Godot SDK and Blackholio tutorial for multiplayer game development.
  • Faster WebSocket Transport with Batched Responses using the v3 protocol.
  • HTTP/2 Backend Support for more efficient client connections.
  • Rust `DbContext` Generics enabling code reuse between client and server contexts.
  • Significant commitlog performance improvements including non-blocking compression.

Breaking Changes

  • Deprecated `ReducerContext::identity` in favor of `database_identity`.

New Features

  • First-party Godot C# SDK integration.
  • Vue `useProcedure` composable for calling procedures.
  • Unity 6 WebGL Compatibility.
  • Configurable commitlog compression knobs.
  • AWS distribution for client binaries.

Full Release Notes

This release brings first-party Godot support and major WebSocket performance improvements. We've also landed significant pipeline optimizations, commitlog enhancements, and expanded our framework coverage.

## Features

### First-party Godot SDK and Blackholio Tutorial
SpacetimeDB now officially supports Godot with a complete C# SDK integration. The new Blackholio tutorial walks through building a multiplayer asteroids-style game, demonstrating best practices for entity replication, player input handling, and game state management in Godot (#4920).

### Faster WebSocket Transport with Batched Responses
The WebSocket layer now pipelines and batches responses using the v3 protocol, significantly reducing per-message overhead under high load. Combined with pipelined JavaScript module operations (#4962), WASM module operations (#4973), and a fully pipelined WebSocket send path (#5051), this delivers substantially improved throughput for real-time applications.

### HTTP/2 Backend Support
The SpacetimeDB server now supports HTTP/2, enabling more efficient client connections with multiplexed streams and header compression (#5027).

### Vue `useProcedure` Hook
Following the React pattern, Vue developers now have a first-class `useProcedure` composable for calling SpacetimeDB procedures with full TypeScript support (#4999).

### Unity 6 WebGL Compatibility
C# modules and clients now support Unity 6's WebGL runtime, automatically selecting between `getWasmTableEntry` and `dynCall` as appropriate for the Unity version (#4961).

### Commitlog Performance and Operations
The durability layer gained several improvements:
- Configurable commitlog compression knobs for operational tuning (#5074)
- Compression deferred when under write load to prioritize throughput (#4974)
- Non-blocking compression that doesn't hold locks (#4981)
- Proper handling of empty tail segments on resumption (#4863)

### Rust `DbContext` Generics
Rust modules can now be generic over `DbContext`, enabling code reuse between client and server contexts while maintaining type safety (#4707).

## API Changes

- **Deprecated:** `ReducerContext::identity` is deprecated in favor of `database_identity` to clarify that this represents the module's identity, not the caller's (#4843)

## Bug Fixes

- Fixed a segfault in the V8 JavaScript runtime that could crash the server (#4986)
- Fixed connection lifecycle callbacks not firing correctly in all disconnection scenarios (#4935)
- Fixed panics during unsubscribe operations (#4938)
- Fixed view auto-migration when using canonical names (#4985)
- Eliminated unnecessary `msync` calls on the entire offset index file, improving write performance (#5018)
- Fixed directory fsync issues on Windows snapshots (#4939)
- Fixed auth error details leaking in debug output (#5000)
- Prepared statements are now properly rolled back on transaction failure (#4979)

## Infrastructure

- Client binaries are now distributed from AWS instead of DigitalOcean for improved reliability (#5077)
- Internal: `cargo ci dlls` renamed to `cargo regen csharp dlls` (#4972)

# What's Changed
* Remove old script by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4928
* CI - C# test scripts accept `SPACETIMEDB_SERVER_URL` override by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4929
* Add railway section to the docs by @aasoni in https://github.com/clockworklabs/SpacetimeDB/pull/4904
* fix: connection lifecycle callbacks by @onx2 in https://github.com/clockworklabs/SpacetimeDB/pull/4935
* [Rust] Add possibility to be generic over `DbContext` by @kistz in https://github.com/clockworklabs/SpacetimeDB/pull/4707
* fix(update): check version exists before confirming uninstall by @euxaristia in https://github.com/clockworklabs/SpacetimeDB/pull/4774
* Deprecate ReducerContext::identity in favor of database_identity by @Mr-Dust0 in https://github.com/clockworklabs/SpacetimeDB/pull/4843
* CI - Try to fix Internal Tests on `master` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4942
* CI - version upgrade check happens in `ci.yml` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4950
* fix: unsubscribe panics by @onx2 in https://github.com/clockworklabs/SpacetimeDB/pull/4938
* Fix some warnings in C# by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4956
* commitlog: Basic write throughput benchmarks by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/3838
* Minor docs additions based on a discussion in the public Discord by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4963
* Remove distributed benchmark harness by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4967
* Pipeline js module operations by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4962
* commitlog: Handle empty tail segments upon resumption by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4863
* Update keynote readme with updated benchmark figures by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4975
* Defer commitlog compression when under load  by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4974
* [C#] [Unity 6] Added logic to use either `getWasmTableEntry` or `dynCall` for C# WebGL by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4961
* Pipeline wasm module operations by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4973
* Compression stats and commitlog compression function by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4708
* `cargo ci dlls` -> `cargo regen csharp dlls` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4972
* CI - Fix `gen-quickstart` check by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4977
* Rollback prepared statements by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4979
* commitlog: Don't lock while compressing by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4981
* Fix segfault in v8 by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4986
* Use cli.toml for default start listen address by @0monish in https://github.com/clockworklabs/SpacetimeDB/pull/4900
* Do not defer commitlog compression by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4987
* snapshot: Don't fsync directories on Windows by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4939
* Docs: Update docs to new designs by @clockwork-tien in https://github.com/clockworklabs/SpacetimeDB/pull/4917
* LLM Benchmark Improvements + More Evals by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4740
* Avoid leaking auth error debug output by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/5000
* Abstract `SnapshotWorker` and `durability::Local` by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4982
* added useProcedure export to tanstack index file (#4957) by @ClemensWon in https://github.com/clockworklabs/SpacetimeDB/pull/4984
* Keynote 2 benchmark updates & refinements by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4997
* CI - enforce minimum pnpm package age by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5032
* Do not `msync` the entire offset index file on every transaction by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5018
* Pipeline the websocket send path by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5051
* Fix view auto-migrate with canonical names by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4985
* Add vue `useProcedure` hook by @kistz in https://github.com/clockworklabs/SpacetimeDB/pull/4999
* Client binaries from DigitalOcean -> AWS by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5077
* Add commitlog knobs to server config by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5074
* Batch websocket responses using the v3 protocol by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5061
* Undo `.npmrc` in templates by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5084
* chore: enable HTTP/2 support for backend server by @onx2 in https://github.com/clockworklabs/SpacetimeDB/pull/5027
* Drop serde_json arbitrary_precision from workspace by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/5001
* CI - `DOCKERHUB_PASSWORD` -> `DOCKERHUB_TOKEN` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5096
* Document Steam Session Tickets authentication with SpacetimeAuth by @JulienLavocat in https://github.com/clockworklabs/SpacetimeDB/pull/4908
* Revert recursive mounts from module def by @aasoni in https://github.com/clockworklabs/SpacetimeDB/pull/5098
* Docs: Fix double logos when docs loading by @clockwork-tien in https://github.com/clockworklabs/SpacetimeDB/pull/5101
* Godot SDK and Blackholio tutorial by @lisandroct in https://github.com/clockworklabs/SpacetimeDB/pull/4920
* Update broken links in csharp SDK README by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4952

## New Contributors
* @onx2 made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4935
* @euxaristia made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4774
* @Mr-Dust0 made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4843
* @0monish made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4900
* @ClemensWon made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4984
* @lisandroct made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4920

**Full Changelog**: https://github.com/clockworklabs/SpacetimeDB/compare/v2.2.0...v2.3.0