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::identityis deprecated in favor ofdatabase_identityto 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
msynccalls 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 dllsrenamed tocargo 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_URLoverride 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
DbContextby @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
masterby @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4942 - CI - version upgrade check happens in
ci.ymlby @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
getWasmTableEntryordynCallfor 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 dllsby @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4972- CI - Fix
gen-quickstartcheck 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
SnapshotWorkeranddurability::Localby @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
msyncthe 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
useProcedurehook 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
.npmrcin 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_TOKENby @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
