github clockworklabs/SpacetimeDB v2.9.0
Release v2.9.0

5 hours ago

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)

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)

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)

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)

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)

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)

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, #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)

What's Changed

  • Add configuration for disabling module outbound HTTP requests in #5774
  • Improve WebSocket liveness checks and idle timeout handling in #5517
  • Preserve acknowledged transactions across commitlog rotation and compression in #5785
  • Improve .NET version and host OS handling in #5571
  • Preserve TypeScript client identity tokens during automatic reconnect in #5761
  • Fix Unity static state resetting for generic types in #5738
  • Fix Unity WebGL IEnumerator import in #5792
  • Clean up C# SDK state after errors and disconnections in #5794
  • Fix C++ multi-column queries with three or more columns in #5565

Full Changelog: v2.8.3...v2.9.0

Don't miss a new SpacetimeDB release

NewReleases is sending notifications on new releases.