v2.9.0
clockworklabs/SpacetimeDBv2.9.0Sep 1, 2026by rekhoff
AI Summary
v2.9.0 introduces configuration to disable outbound HTTP requests from modules, improves .NET version compatibility across OS platforms, and fixes critical durability issues in commitlog rotation and compression.
Key Highlights
- Disable outbound HTTP requests from modules via configuration setting
- Improved .NET version and host OS handling (10 on Win/Linux, 8 on macOS)
- Fixes transaction durability across commitlog rotation and compression
- Preserves TypeScript client identity tokens during automatic reconnect
- Improved WebSocket liveness and idle timeout handling
New Features
- Module HTTP request blocking configuration
- Improved .NET compatibility
- Transaction durability guarantee
- TypeScript identity persistence
- WebSocket idle timeout handling
Full Release Notes
## Features ### Disable outbound HTTP requests from modules Standalone operators can now disable module-originated HTTP requests with the `[module-http] enabled = false` configuration setting. This provides an explicit deployment-level control for environments where modules should not be allowed to access external HTTP services. ([#5774](<https://github.com/clockworklabs/SpacetimeDB/pull/5774>)) ### Improved .NET version and host OS handling `spacetime init` and `spacetime dev` now choose a compatible .NET target based on the host OS: .NET 10 on Windows and Linux, and .NET 8 on macOS. C# build, generation, development, and publish commands now report incompatible host and .NET combinations clearly. This also fixes duplicate package references in .NET 8 NativeAOT module projects. ([#5571](<https://github.com/clockworklabs/SpacetimeDB/pull/5571>)) ## Bug Fixes ### Preserve acknowledged transactions across commitlog maintenance Commitlog segment rotation and compression now durably sync newly installed segment files and their containing directory. Previously, a power loss in a narrow window after a segment was renamed could lose transactions that had already been acknowledged as durable; compression could similarly replace a durable segment without fully persisting the replacement. The updated persistence path preserves the confirmed-read durability guarantee across crashes. ([#5785](<https://github.com/clockworklabs/SpacetimeDB/pull/5785>)) ### TypeScript SDK preserves identity during automatic reconnect The TypeScript SDK now reuses the identity token issued during a first-time anonymous connection when automatically reconnecting. Previously, if the initial connection was created without a stored token, a later reconnect could request a new anonymous identity and silently lose access to data associated with the original identity. Explicit connection rebuilds can still change identity as intended. ([#5761](<https://github.com/clockworklabs/SpacetimeDB/pull/5761>)) ### Improve WebSocket liveness and idle timeout handling Any client data now counts as WebSocket activity and extends the idle deadline, rather than requiring a pong specifically. Idle connections are closed with a proper close handshake and an `idle timeout` reason, with a grace period before forced teardown. This improves liveness detection and gives clients a clear reason for disconnection. ([#5517](<https://github.com/clockworklabs/SpacetimeDB/pull/5517>)) ### Fix C++ index queries with three or more columns C++ multi-column index scans now correctly support exact prefixes followed by an optional terminal range across indexes with three or more columns. Invalid queries with a non-terminal range are rejected at compile time, and index iterator buffering now handles large result payloads correctly. ([#5565](<https://github.com/clockworklabs/SpacetimeDB/pull/5565>)) ### Fix Unity static state reset and WebGL builds The C# SDK now resets generated generic table-handle static state through a non-generic Unity initialization path, fixing Play Mode behavior when domain reload is disabled. The missing `IEnumerator` import used by Unity WebGL message parsing has also been restored. ([#5738](<https://github.com/clockworklabs/SpacetimeDB/pull/5738>), [#5792](<https://github.com/clockworklabs/SpacetimeDB/pull/5792>)) ### Clean up SDK state after errors and disconnections The C# SDK now clears outstanding request tracking and pending operations when connections fail, removes failed subscriptions, and rejects one-off queries immediately when disconnected. This prevents stale state and memory from accumulating across error and reconnect paths. ([#5794](<https://github.com/clockworklabs/SpacetimeDB/pull/5794>)) ## What's Changed - Add configuration for disabling module outbound HTTP requests in [#5774](<https://github.com/clockworklabs/SpacetimeDB/pull/5774>) - Improve WebSocket liveness checks and idle timeout handling in [#5517](<https://github.com/clockworklabs/SpacetimeDB/pull/5517>) - Preserve acknowledged transactions across commitlog rotation and compression in [#5785](<https://github.com/clockworklabs/SpacetimeDB/pull/5785>) - Improve .NET version and host OS handling in [#5571](<https://github.com/clockworklabs/SpacetimeDB/pull/5571>) - Preserve TypeScript client identity tokens during automatic reconnect in [#5761](<https://github.com/clockworklabs/SpacetimeDB/pull/5761>) - Fix Unity static state resetting for generic types in [#5738](<https://github.com/clockworklabs/SpacetimeDB/pull/5738>) - Fix Unity WebGL `IEnumerator` import in [#5792](<https://github.com/clockworklabs/SpacetimeDB/pull/5792>) - Clean up C# SDK state after errors and disconnections in [#5794](<https://github.com/clockworklabs/SpacetimeDB/pull/5794>) - Fix C++ multi-column queries with three or more columns in [#5565](<https://github.com/clockworklabs/SpacetimeDB/pull/5565>) **Full Changelog**: [v2.8.3...v2.9.0](<https://github.com/clockworklabs/SpacetimeDB/compare/v2.8.3...release/candidate/v2.9.0>)