What clockworklabs/SpacetimeDB shipped
Written by FoxPlug from the repository's own releases; not affiliated with Spacetimedb. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/clockworklabs/SpacetimeDB; Spacetimedb did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- A system table now persists each table's cache policy and enables local disk paging, with tables staying in memory by default. Pull request #6443
- Tables can switch between memory and local disk storage when a module is republished, in both directions. Pull request #6497
- Rust, TypeScript and C# modules can now set a cache policy on table definitions. Pull request #6470
- A Rust shorthand macro declares an outbox table from module bindings with generated message ID, target and reducer argument columns. Pull request #6460
- Clear_table no longer double-counts rows that the same transaction already deleted. Pull request #6499
- Publication permission checks now run before a database name is reserved, so a rejected publish leaves the name available. Pull request #6457
- The TypeScript SDK uses a map for lookups by indexed columns in find and filter. Pull request #6416
- The TypeScript SDK on Node now fails the connection instead of crashing Node when a server message cannot be applied. Pull request #6010
- TypeScript bindings now resolve for consumers using NodeNext module resolution. Pull request #6009
- Committed index state is preserved during schema rollback, keeping duplicate-detection and uniqueness behavior intact. Pull request #6440
Why it matters
This week adds a persistent per-table cache policy plus migrations that let an existing table move between memory and local disk, and exposes that policy in the Rust, TypeScript and C# module APIs. Several fixes make publication, row clearing, transactions and the TypeScript SDK behave more predictably for people running modules.
Changelog entry
- Add a system table for table cache policies and enable local disk paging; tables default to staying in memory. Pull request #6443
- Add table cache policy migrations so a table can switch between memory and local disk when a module is republished. Pull request #6497
- Add cache policy to table definitions in the Rust, TypeScript and C# module APIs. Pull request #6470
- Track a pin count per blob so shared blobs cannot be evicted while a table still uses them. Pull request #6447
- Add a Rust outbox macro as shorthand for declaring an outbox table. Pull request #6460
- Fix
clear_tableto count only rows newly deleted rather than every committed row. Pull request #6499 - Check publication permissions before reserving a database name. Pull request #6457
- Use a map for indexed-column find and filter lookups in the TypeScript SDK. Pull request #6416
- Fail the TypeScript SDK connection instead of crashing Node on a message it cannot apply. Pull request #6010
- Make TypeScript SDK types resolve for NodeNext consumers. Pull request #6009
- Fix the TypeScript typecheck test and run it in CI. Pull request #6493
- Preserve committed index state when rolling back schema changes. Pull request #6440
This week: per-table cache policies with memory-to-disk migrations, cache policy in the Rust, TypeScript and C# module APIs, a Rust outbox macro, faster TypeScript find/filter, and fixes for clear_table, name reservation and Node connections.
This week's changes to SpacetimeDB: - A system table persists each table's cache policy, tables stay in memory by default, and a migration lets an existing table move between memory and local disk on republish. - Cache policy is available on table definitions in the Rust, TypeScript and C# module APIs. - A Rust outbox macro declares an outbox table from module bindings. - The TypeScript SDK uses a map for lookups by indexed columns in find and filter, and resolves for NodeNext consumers. - clear_table no longer double-counts deleted rows, and publication permission checks run before a name is reserved.
Week of October 26, 2026
What shipped
- Version 2.14.0 shipped with asynchronous inter-database communication, letting Rust and TypeScript modules call reducers in other databases through declared dependencies and generated receiver bindings. Release
- TypeScript receiver bindings and outbox declarations were added for inter-module reducer calls, covering reducer handles, argument types, signature hashes and dependency-specific identity types. Pull request #6327
- A Rust outbox macro now generates outbox declarations for inter-module reducer calls using generated receiver bindings. Pull request #6376
- Rust receiver bindings were added for inter-module reducer calls, including callback validation. Pull request #6375
- The module definition to RawModuleDefV10 round trip was fixed and outbox signature hashes for inter-database communication are now typed. Pull request #6364
- A Core Concepts page now documents asynchronous inter-database communication for database developers. Pull request #6424
- Prettify in the TypeScript SDK no longer rewrites Uuid or branded primitives, so a uuid column now infers as Uuid. Pull request #5971
- Twenty-six renamed docs URLs that were returning 404 now redirect, and the 1.12.0 docs are marked unmaintained. Pull request #6422
- The FAQ no longer describes modules as stored procedures, to correct the impression that modules are SQL routines. Pull request #6439
- A SpacetimeDB Standalone architecture diagram was added to the developer docs so contributors can see what runs inside a standalone instance. Pull request #6400
Why it matters
This week's release brings asynchronous inter-database communication to Rust and TypeScript modules, so modules can call reducers in other databases through declared dependencies. The supporting pieces landed alongside it: receiver bindings, outbox declarations, signature hashes and a Core Concepts page. Users also get a fix for Uuid inference in the TypeScript SDK and redirects for renamed documentation pages, which reduces dead links.
Changelog entry
- Release 2.14.0 with asynchronous inter-database communication for Rust and TypeScript modules. Release
- TypeScript receiver bindings and outbox declarations for inter-module reducer calls. Pull request #6327
- Rust outbox macro for inter-module reducer calls. Pull request #6376
- Rust receiver bindings for inter-module reducer calls. Pull request #6375
- Fix module definition round trip and type outbox signature hashes. Pull request #6364
- Tidy the TypeScript surface of async inter-database communication. Pull request #6411
- Document asynchronous inter-database communication in Core Concepts. Pull request #6424
- Document async inter-database communication in the agent skills. Pull request #6437
- TypeScript SDK: Prettify no longer rewrites Uuid and branded primitives. Pull request #5971
- Redirect 26 renamed docs URLs and mark the 1.12.0 docs unmaintained. Pull request #6422
- Stop describing modules as stored procedures in the FAQ. Pull request #6439
- Add a SpacetimeDB Standalone architecture diagram to developer docs. Pull request #6400
SpacetimeDB 2.14.0 is out. Async inter-database communication ships: Rust and TypeScript modules can call reducers in other databases via declared dependencies and generated receiver bindings. Also this week: a TypeScript SDK fix so Uuid columns infer as Uuid, and 26 dead docs li
SpacetimeDB 2.14.0 is out. The main addition is asynchronous inter-database communication: Rust and TypeScript modules can now call reducers in other databases through dependencies declared in spacetime.json, with generated receiver bindings and outbox declarations. Supporting work landed over the same period, including the TypeScript receiver bindings, the Rust outbox macro, and a Core Concepts page on async inter-database communication. Elsewhere, Prettify in the TypeScript SDK no longer rewrites Uuid or branded primitives, so uuid columns infer as Uuid, 26 renamed documentation URLs now redirect instead of returning 404, and a Standalone architecture diagram was added to the developer docs.
Week of October 19, 2026
What shipped
- SpacetimeDB v2.13.0 shipped with reusable TypeScript submodules providing scheduling, retry with exponential backoff, rate limiting, and cryptographic and encoding helpers. Release
- Views can now take arguments, queried from SQL as SELECT * FROM my_view(1, 'a'); a view with arguments can only be queried with SELECT *. Pull request #6324
- C# modules gained support for nested submodules, so multiple independent instances of the same module assembly can be mounted independently. Pull request #6112
- Is_internal() is now computed as ctx.sender() == ctx.database_identity() in every module library, and HTTP handlers now receive a sender. Pull request #5892
- CLI and spacetime.json configuration changes and spacetime dev changes needed for IDC receiver bindings were added. Pull request #6313
- An IDC actor that manages outbox streams concurrently was added; each stream processes one message at a time and streams continue independently. Pull request #6156
- Short how-to guides were added to the docs, each solving one problem with module code in TypeScript, C#, Rust and C++ plus client code. Pull request #6060
- How To Guides were promoted to top-level documentation so the recipes are easier to find, and Developer Resources links were flattened. Pull request #6343
- TypeScript codegen gained an --import-extension option for NodeNext and direct-TypeScript runtimes. Pull request #6097
- Generated TypeScript schemas now typecheck under exactOptionalPropertyTypes. Pull request #6096
Why it matters
Users get a new release with reusable TypeScript submodules and views that accept arguments, though views with arguments can only be queried with SELECT *. Module authors also get arg-typed views, nested C# submodules, and consistent is_internal() behavior across libraries.
Changelog entry
- Released v2.13.0 with reusable TypeScript submodules for scheduling, retry, rate limiting and encoding helpers. Release
- Views can take arguments, called from SQL as SELECT * FROM my_view(1, 'a'); argument views support only SELECT *. Pull request #6324
- Added C# nested submodule support, allowing independent mounting of the same module assembly. Pull request #6112
- Standardized is_internal() to mean ctx.sender() == ctx.database_identity() in all module libraries; HTTP handlers now get a sender. Pull request #5892
- Added CLI, spacetime.json config and spacetime dev changes for IDC receiver bindings. Pull request #6313
- Added an IDC actor that manages outbox streams concurrently. Pull request #6156
- Added short how-to guides to the docs with module code in TypeScript, C#, Rust and C++. Pull request #6060
- Promoted How To Guides to top-level documentation. Pull request #6343
- Added --import-extension to TypeScript codegen for NodeNext and direct-TypeScript runtimes. Pull request #6097
- Generated TypeScript schemas now typecheck under exactOptionalPropertyTypes. Pull request #6096
- Release process now detects crates.io rate-limit failures during crate publishing. Pull request #6354
- CI now installs updated rustup where needed. Pull request #6351
SpacetimeDB v2.13.0 is out with reusable TypeScript submodules for scheduling, retry, rate limiting and encoding helpers. Views can now take arguments, queried as SELECT * FROM my_view(1, 'a'). C# gains nested submodules, and is_internal() is now computed from the sender in every
SpacetimeDB v2.13.0 is out. TypeScript modules can use reusable submodules for cron-style and interval scheduling, retry with exponential backoff, fixed-window rate limiting, and cryptographic and encoding helpers. Views can now take arguments, called from SQL as SELECT * FROM my_view(1, 'a'); a view with arguments can only be queried with SELECT *. C# modules gained nested submodules, is_internal() is now computed from the sender in every module library, and HTTP handlers receive a sender. The docs also add short how-to guides and promote them to the top level.
Week of October 12, 2026
What shipped
- Release v2.12.0 shipped, adding persistent typed database environments so modules in Rust, TypeScript, C#, and C++ can declare and read configuration and secret values through their execution context. Release
- HTTP reducer calls with confirmed reads now return success only after the transaction is durable, so a caller no longer gets a 200 for a write that a crash could lose. Pull request #6154
- Under confirmed reads, withTx in procedures now waits for the transaction to be durable before returning. Pull request #6101
- TypeScript modules gained ctx.random.shuffle, an in-place Fisher-Yates shuffle that returns the same array. Pull request #6040
- TypeScript ctx.http.fetch no longer splits header values on commas and now handles unknown status codes. Pull request #6140
- The CLI gained a spacetime auth command that provides a management interface for SpacetimeAuth. Pull request #5251
- The TypeScript submodules for crypto, cron, rate-limit, retry, and resend can now be installed and built against the published 2.12 SDK. Pull request #6309
- Result typing is fixed so the correct error variant is serialized and the ok and err builder types match their serializers. Pull request #6148
- Module unit tests no longer panic when
with_txis used inside a procedure, and Rust module unit tests can now access env. Pull request #6302 - Resident tables again use directly owned page storage, while tiered tables keep the slot and frame implementation. Pull request #6311
Why it matters
This week brought the 2.12 release with typed database environments, and closed a gap where HTTP reducer calls could report success before a write was durable. TypeScript module authors also got a deterministic shuffle and fixes for header handling and submodule packaging, and module unit tests became more usable.
Changelog entry
- Release v2.12.0 with typed environment variables for configuration and secrets in modules. Release
- HTTP reducer calls with confirmed reads now return success only after the transaction is durable. Pull request #6154
- Procedures under confirmed reads now wait for durability before withTx returns. Pull request #6101
- Add ctx.random.shuffle to the TypeScript module API. Pull request #6040
- Fix comma splitting of header values and unknown status codes in TypeScript ctx.http.fetch. Pull request #6140
- Add the spacetime auth CLI command for managing SpacetimeAuth. Pull request #5251
- Make the TypeScript crypto, cron, rate-limit, retry, and resend submodules installable against the 2.12 SDK. Pull request #6309
- Fix result typing so the correct error variant is serialized and builder types match their serializers. Pull request #6148
- Fix module unit tests panicking on
with_txin procedures and allow env access in Rust module unit tests. Pull request #6302 - Restore direct page storage for resident tables while tiered tables keep slot and frame storage. Pull request #6311
- Add canonical reducer signature hashing on the async IDC receiver side. Pull request #6150
- Add a unit testing guide for Rust and TypeScript modules. Pull request #6245
SpacetimeDB 2.12 is out with typed database environments for Rust, TypeScript, C#, and C++ modules. HTTP reducer calls with confirmed reads now return success only after the write is durable. TypeScript modules get ctx.random.shuffle and fixes for header values and status codes i
SpacetimeDB v2.12.0 is out. Modules can now declare typed environment variables for configuration and secrets in Rust, TypeScript, C#, and C++, and read them through the execution context. HTTP reducer calls with confirmed reads now return success only once the transaction is durable, so a caller is no longer told a write succeeded before it can survive a crash. Procedures under confirmed reads likewise wait for durability in withTx. TypeScript modules gained ctx.random.shuffle, and ctx.http.fetch no longer splits header values on commas and handles unknown status codes. The CLI now has a spacetime auth command, and module unit tests no longer panic on with_tx inside a procedure.
Week of October 5, 2026
What shipped
- Module unit testing arrived for Rust and TypeScript module code, adding a test datastore API, new feature gates, and unit test APIs. Pull request #5558
- Core TypeScript submodules were added for cron, retry, rate-limit and crypto helpers, with scheduling, backoff, and run history support. Pull request #5903
- A Resend submodule was added for sending transactional email and tracking delivery state, with webhook signature verification and idempotent ingestion. Pull request #5904
- System tables for async inter-database communication were implemented as the first step of that series. Pull request #6084
- The IDC outbox was added to ModuleDef and RawModuleDefV10, wired through schema construction with validation. Pull request #6104
- The TypeScript SDK gained automatic reconnection built into DbConnection, keeping the connection, cache, table handles and callbacks usable across a reconnect. Pull request #5927
- The C# SDK gained automatic reconnection with WithAutomaticReconnect, avoiding replacement objects for applications. Pull request #5956
- Tokens signed with the symmetric HS256 algorithm are now rejected, since a public key cannot be fetched for that scheme. Pull request #6100
- PGWire authentication state is now isolated per connection, rejecting SQL execution without a session and adding regression coverage for isolation and failed logins. Pull request #6134
- HTTP/2 negotiation was enabled for procedure HTTPS requests over ctx.http.fetch by enabling the native-tls-alpn feature. Pull request #6012
Why it matters
This week added module unit testing plus four reusable TypeScript submodules, and extended automatic reconnection to both the TypeScript and C# SDKs. It also hardened authentication and connections: symmetric HS256 tokens are rejected and PGWire sessions are isolated per connection. The first async inter-database communication steps landed with system tables and outbox schema, alongside fixes to scheduled rows, schema validation reporting, and submodule codegen.
Changelog entry
- Add module unit testing for Rust and TypeScript with a test datastore API. Pull request #5558
- Add TypeScript submodules for cron, retry, rate-limit and crypto. Pull request #5903
- Add Resend submodule for transactional email with webhook verification. Pull request #5904
- Implement system tables for async inter-database communication. Pull request #6084
- Add IDC outbox to ModuleDef with validation. Pull request #6104
- Add automatic reconnection to the TypeScript SDK. Pull request #5927
- Add automatic reconnection to the C# SDK. Pull request #5956
- Reject tokens signed with the symmetric HS256 algorithm. Pull request #6100
- Isolate PGWire authentication state per connection and reject SQL without a session. Pull request #6134
- Negotiate HTTP/2 for procedure HTTPS requests. Pull request #6012
- Deduplicate pending scheduled row queue entries. Pull request #5951
- Report schema validation errors again in CLI commands. Pull request #6079
This week: module unit testing for Rust and TypeScript, TypeScript submodules for cron, retry, rate-limit and crypto, a Resend email submodule, automatic reconnection in the TypeScript and C# SDKs, HS256 token rejection, per-connection PGWire auth, and the first async IDC schema
This week in SpacetimeDB: module unit testing for Rust and TypeScript with a test datastore API, and four TypeScript submodules for cron, retry, rate-limit and crypto. A Resend submodule adds transactional email with webhook verification and idempotent ingestion. Both the TypeScript and C# SDKs gained automatic reconnection built into the connection object. On the security side, tokens signed with HS256 are rejected and PGWire authentication state is isolated per connection. The async inter-database communication work began with system tables and outbox schema. Smaller fixes cover duplicate scheduled rows, schema validation error reporting, Windows tsc detection, and submodule codegen.
Week of September 28, 2026
What shipped
- Released v2.10.2 with transparent compression for procedure HTTP requests, reducing transfer size and latency without requiring module changes. Release
- Improved error logging to print the full error chain on failed database updates instead of just the outer context. Pull request #6046
- Added comprehensive test suite for C# SDK following the same patterns as Rust and Unreal, and fixed three bugs: enums as primary keys, enum indexing, and subscription unsubscription. Pull request #5684
- Fixed spacetime init --template react-ts generating broken.env.local files with incorrect database names. Pull request #5941
- Fixed HTTP handler transaction contexts in Rust, C#, and C++ to correctly report external authority instead of internal for anonymous requests. Pull request #5978
- Fixed environment variable handling by moving from base64-encoded JSON payloads to header-based transmission and splitting environment-only publishing into separate endpoints. Pull request #5961
- Added CI check to reject newly added Bash and Python scripts, enforcing Rust-based tooling going forward. Pull request #6019
- Clarified documentation for --root-dir installation instructions. Pull request #6008
Why it matters
This week brings transparency improvements through better error reporting and HTTP compression, fixes critical bugs in the C# SDK and initialization templates, and strengthens security by ensuring HTTP handlers report correct authority levels. Infrastructure changes standardize on Rust tooling and improve CI reliability.
Changelog entry
- Transparent compression for procedure HTTP requests with gzip and Brotli support Release
- Full error chain logging on failed database updates Pull request #6046
- C# SDK test suite with fixes for enums as primary keys and index support Pull request #5684
- Fixed pending subscription unsubscription in C# SDK Pull request #5684
- Fixed spacetime init --template react-ts.env.local generation Pull request #5941
- HTTP handlers now correctly report external authority for anonymous requests Pull request #5978
- Environment variables moved to header-based transmission Pull request #5961
- CI now rejects new Bash and Python scripts Pull request #6019
- Improved --root-dir installation documentation Pull request #6008
- Added test coverage for multi-row INSERT with negative numeric literals Pull request #5932
V2.10.2 shipped with transparent HTTP compression for procedures, full error chain logging, C# SDK test coverage with bug fixes, and corrected environment variable handling.
V2.10.2 is out. This release adds transparent compression for HTTP procedure requests, improves error diagnostics with full error chains, expands C# SDK testing with three bug fixes, and fixes environment variable handling in initialization. Infrastructure updates enforce Rust tooling and improve CI stability.
Week of September 21, 2026
What shipped
- Version 2.11.0 released with updated BSL license date. Pull request #5942
- Reverted persistent typed database environments feature from v2.11.0. Release
- Spacetime describe command now supports human-readable output without requiring the --json flag. Pull request #5947
- Namespace names are now canonicalized, which breaks compatibility with modules using non-canonical names. Pull request #5967
- Sequences simplified by removing configuration options and non-transactional state, standardizing step to 1 and range to 1..=i128::MAX. Pull request #5880
- TypeScript SDK fixed to properly sequence async WebSocket decompression and prevent out-of-order frame delivery. Pull request #5845
- TypeScript bindings now share string codec instance and add ASCII fast path to reduce allocation overhead. Pull request #5783
- C++ JWT byte-source exhaustion handling fixed to preserve final chunk when read returns -1. Pull request #5977
- Test harness now gracefully recovers from lock poisoning in memoized! macro to prevent cascading test failures. Pull request #5846
- Documentation added for.NET 10 workaround on Mac using Linux VM or container. Pull request #5727
Why it matters
Version 2.11.0 introduces breaking changes with namespace canonicalization and simplified sequence behavior, while fixing critical bugs in C++ JWT handling, TypeScript WebSocket decompression, and test infrastructure. The CLI now provides better usability with human-readable output in the describe command.
Changelog entry
- Version bump to 2.11.0 Pull request #5942
- Reverted persistent typed database environments feature Release
- Namespace names are now canonicalized; breaks modules published with non-canonical names Pull request #5967
- Sequences no longer configurable; all sequences standardized with step 1 and range 1..=i128::MAX Pull request #5880
- Spacetime describe now outputs human-readable text without requiring --json flag Pull request #5947
- TypeScript SDK: fixed async WebSocket decompression sequencing to prevent out-of-order frame delivery Pull request #5845
- TypeScript bindings: shared string codec and ASCII fast path reduce allocation overhead Pull request #5783
- C++ JWT: fixed byte-source exhaustion handling to preserve final chunk Pull request #5977
- Test harness: graceful recovery from lock poisoning in memoized! macro Pull request #5846
- Documentation: removed nonexistent --force flag from CLI reference Pull request #5988
SpacetimeDB 2.11.0 is out. Namespace canonicalization, simplified sequences, fixed TypeScript decompression ordering, and CLI improvements for human-readable output.
SpacetimeDB v2.11.0 brings significant improvements: namespace names are now canonicalized (breaking change for non-canonical names), sequences are simplified with standardized parameters, TypeScript SDK WebSocket decompression is fixed to prevent out-of-order frames, and the CLI describe command now outputs human-readable text by default. C++ JWT handling and test infrastructure also received critical fixes.
Week of September 14, 2026
What shipped
- Released v2.10.1 with CLI commands now respecting the project's configured server in spacetime.json instead of falling back to global defaults. Release
- Added server-side auto-reconnect support allowing clients to send a stable, client-generated
session_idquery parameter for connection replacement. Pull request #5877 - Implemented persistent typed database environments with typed module accessors, persistent values, and support for undeclared values and explicit deletion. Pull request #5887
- Added compression support to ctx.http.fetch in TypeScript and ctx.http.send/get in Rust for outbound HTTP requests. Pull request #5698
- Fixed broken documentation links by adding redirects for old URLs and correcting in-repo links that pointed at moved pages. Pull request #5916
- Updated the railway deploy button in docs to follow railway's current requirements. Pull request #5948
Why it matters
This week brings improvements to client connection reliability with auto-reconnect support and typed environment variables for better configuration management. CLI commands now work consistently with project configuration files, and HTTP requests benefit from compression to reduce transfer overhead.
Changelog entry
- CLI: spacetime list, spacetime rename, and spacetime mcp now read server value from spacetime.json Release
- Server: Auto-reconnect support with connection replacement via client-generated
session_idPull request #5877 - Typed environment variables with persistent values and module accessors Pull request #5887
- HTTP: Compression support added to ctx.http.fetch (TypeScript) and ctx.http.send/get (Rust) Pull request #5698
- Docs: Redirects for old documentation URLs and corrected in-repo links Pull request #5916
- Docs: Updated railway deploy button to follow railway's requirements Pull request #5948
V2.10.1 released: CLI now respects project server config, auto-reconnect support added server-side, typed environments implemented, and HTTP compression enabled.
This week's SpacetimeDB updates focus on reliability and efficiency. v2.10.1 fixes CLI server configuration consistency, auto-reconnect support enables seamless client reconnections, typed database environments provide persistent configuration management, and HTTP compression reduces transfer sizes for outbound requests.