v2.5.0

2FastLabs/agent-squadv2.5.0Jun 11, 2026by rekhoff

AI Summary

This release graduates procedures to stable availability, improves billing metric accuracy, and includes various CLI usability fixes.

Key Highlights

  • Procedures (scheduled, transaction-capable) are now stable and available without the unstable feature flag.
  • Primary key support for procedural views is added to C# modules.
  • Layout-altering automigrations are now supported for event tables.
  • Billing metric `wasm_memory_bytes` is now accurately reported for all Wasmtime instances.
  • CLI improvements include support for hex Identity arguments and config fallback.

New Features

  • Stable procedures for Rust, C++, and C#
  • Primary keys on procedural views in C#
  • Layout-altering automigrations for event tables
  • Deterministic row insertion with BTreeSet storage
  • CLI `call` command accepting hex strings for Identity parameters

Full Release Notes

2.5.0 graduates procedures to stable availability, improves billing metric accuracy, and includes CLI usability fixes.

---

### Features

#### **Procedures are now stable** (Ungated from `unstable`)
Procedures-scheduled, transaction-capable server-side functions-and the outgoing HTTP client (`ctx.http`) are now available without opting into unstable features ([#5164](https://github.com/clockworklabs/SpacetimeDB/pull/5164)).

- **Rust**: The `#[spacetimedb::procedure]` macro, `ProcedureContext`, `with_tx`/`try_with_tx`, and scheduled procedures now work without `features = ["unstable"]`.
- **C#**: `[Experimental("STDB_UNSTABLE")]` removed from `ProcedureContext.WithTx/TryWithTx`.
- **C++**: Procedure ABI, transaction execution, and outgoing HTTP client are now available without `SPACETIMEDB_UNSTABLE_FEATURES`.

HTTP handlers/webhooks, views, and RLS (`client_visibility_filter`) remain gated behind unstable.

#### **Primary key support for procedural views (C#)**
Following Rust and TypeScript support in v2.4.1, C# modules can now declare primary keys on procedural views, enabling clients to receive `OnUpdate` events when subscribed to them ([#5246](https://github.com/clockworklabs/SpacetimeDB/pull/5246)).

#### **Layout-altering automigrations for event tables**
Event tables now support a broader set of schema- and layout-altering automigrations, including column removal, reordering, and type changes that would be rejected for regular tables ([#5269](https://github.com/clockworklabs/SpacetimeDB/pull/5269)). This enables more flexible schema evolution for event-only tables without requiring manual migration.

---

### Performance & Correctness

- **Deterministic row insertion with BTreeSet storage** ([#5071](https://github.com/clockworklabs/SpacetimeDB/pull/5071)): Non-full pages are now stored in a `BTreeSet` sorted by available var-len granules rather than an unsorted `Vec`. This fixes accidentally-quadratic behavior during bulk inserts and ensures **deterministic row insertion locations across datastore restarts**

---

### Bug Fixes

- **`wasm_memory_bytes` metric accuracy** ([#5131](https://github.com/clockworklabs/SpacetimeDB/pull/5131)): The metric now correctly reports memory for all Wasmtime instances (cooperatively updated via increment/decrement) and no longer includes V8 instances. **Billing impact**: billing code should now charge for the sum of `wasm_memory_bytes` + `v8_used_heap_size_bytes`. Expect recorded usage per database to increase as we now account for all instances, not just one.
- **Template version constraints** ([#5228](https://github.com/clockworklabs/SpacetimeDB/pull/5228)): All templates now consistently use `major.minor` version constraints. Previously, inconsistent version constraints could cause the CLI to initialize templates expecting versions that did not exist.
- **CLI `publish --delete-data` config fallback** ([#5256](https://github.com/clockworklabs/SpacetimeDB/pull/5256)): Removes the forced positional database name requirement, allowing `spacetime.json` to provide the database name.
- **CLI `call` with hex Identity arguments** ([#5254](https://github.com/clockworklabs/SpacetimeDB/pull/5254)): The `call` command now accepts hex strings for `Identity` parameters without requiring full JSON tuple syntax.

## What's Changed
* CI - fix LLM benchmark workflows by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/5181
* Ungate procedures from the `unstable` feature by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/5164
* docs: consolidate outstanding docs fixes by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/5166
* Fix durability test flake by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5233
* Fix confirmed reads test flake by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5237
* Add CLA Assistant retry workflow by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/5234
* Fix publish --delete-data config fallback by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/5256
* Improve accuracy and change semantics of metric `wasm_memory_bytes` by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/5131
* cli: Accept hex-ish strings as Identity parameters for call by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/5254
* Store non-full pages in a `BTreeSet`, not a `Vec` by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/5071
* Add some tests of procedure concurrency by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4955
* Add primary keys to procedural views in C# by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/5246
* LLM Benchmark: Sequential Upgrades Test by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4817
* Remove `cargo bump-versions` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5157
* Consolidate template versions by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/5228
* Allow layout-altering automigrations of event tables by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/5269

## New Contributors
* @MAST1999 made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/5052

**Full Changelog**: https://github.com/clockworklabs/SpacetimeDB/compare/v2.4.1...v2.5.0