v2.0.1
clockworklabs/SpacetimeDBv2.0.1Feb 20, 2026by jdetter
AI Summary
Major 2.0 release with TypeScript/JavaScript leaving beta, web framework integrations, Unreal Engine/C++ support, incredible performance improvements, and many new features.
Key Highlights
- TypeScript/JavaScript support leaving beta with updated API
- Web framework integrations (Angular, React, Nuxt, Vue, Next.js, Node, Deno, TanStack, Remix, Svelte, Bun)
- Unreal Engine 5 and C++ module support
- Procedure Functions with HTTP calls for external API integration
- SpacetimeAuth first-party authentication solution
Breaking Changes
- Removed sender field from ReducerContext/ViewContext/ProcedureContext
- Made connection_id a method on ReducerContext
- Private tables not generated by default (--include-private flag added)
- C# client SDK updated for V2 WebSocket format
- Rust client SDK updated for V2 WebSocket format
- name field renamed to accessor in Rust table macro
New Features
- View Functions for sophisticated read permissions
- Typed Query Builder for type-safe queries
- Event Tables for short-lived event information
- spacetime.json configuration file
- spacetime dev command for streamlined development
- All new dashboard and metrics
- Project collaborators and organizations
- Postgres Wire Protocol Compatibility (beta)
- LLM-optimized tools and benchmarks
Full Release Notes
# SpacetimeDB 2.0 is finally here! 🌟
<p align="center">
<img width="640" height="466" alt="image" src="https://github.com/user-attachments/assets/f9ffaf26-fa29-4cb3-b08b-3b97b93f6f16" />
</p>
Today we're announcing SpacetimeDB! SpacetimeDB 2.0 has some big changes, so buckle up! Get ready for web development at the speed of light!
To find out in detail how to update your applications for 2.0 see our [Migration Guide](https://spacetimedb.com/docs/upgrade/).
## TypeScript/JavaScript Support
In October we launched beta support for TypeScript and JavaScript, and we're happy to announce that with the release of 2.0 TypeScript support is leaving beta! We also have a bunch of updates to the API that being much needed consistency to the APIs.
## Web framework integration
Along with TypeScript and JavaScript support, we've built integrations and templates with all your favorite frameworks including:
- [Angular](https://spacetimedb.com/docs/quickstarts/angular)
- [React](https://spacetimedb.com/docs/quickstarts/react)
- [Nuxt](https://spacetimedb.com/docs/quickstarts/nuxt)
- [Vue](https://spacetimedb.com/docs/quickstarts/vue)
- [Next.js](https://spacetimedb.com/docs/quickstarts/nextjs)
- [Node](https://spacetimedb.com/docs/quickstarts/nodejs)
- [Deno](https://spacetimedb.com/docs/quickstarts/deno)
- [TanStack](https://spacetimedb.com/docs/quickstarts/tanstack)
- [Remix](https://spacetimedb.com/docs/quickstarts/remix)
- [Svelte](https://spacetimedb.com/docs/quickstarts/svelte)
- [Bun](https://spacetimedb.com/docs/quickstarts/bun)
## Unreal Engine/C++ Support
For all those who have been waiting for official Unreal Engine 5 support, [it's here](https://spacetimedb.com/docs/tutorials/unreal)! Alongside C++ modules as well!
## Incredible performance
SpacetimeDB 2.0 delivers eye watering throughput even for tiny transactions with high contention. Well over 100k transactions per second for TypeScript modules and up to 170k transactions per second for Rust modules!
<img width="2443" height="1248" alt="image" src="https://github.com/user-attachments/assets/6c11ac37-8f98-4c98-b3fd-cb0073a5a7ed" />
See how it compares to other databases in our new [keynote presentation](https://www.youtube.com/watch?v=C7gJ_UxVnSk)!
## A new Maincloud FREE tier and all new pricing!
With 2.0, we're also announcing a brand new, simpler pricing scheme along with a free tier for users who want to try out Maincloud!
This new simplified pricing makes it easier than ever to predict your costs. Check out our pricing calculator on the [pricing page](https://spacetimedb.com/pricing).
### Spacerace Referral Program
Alongside our new pricing, we're introducing the [Spacerace Referral Program](https://spacetimedb.com/space-race) where you can get up to 400x more free credits per month by referring friends to the platform.
<img width="3840" height="2160" alt="image" src="https://github.com/user-attachments/assets/d92571bc-c981-4318-a7b3-34012121ac2d" />
## Procedures and HTTP calls
With 2.0 your SpacetimeDB modules are getting a big boost in capability too. For the first time, your modules can now access the outside world with Procedure Functions. Procedure functions give you the ability to make HTTP calls from within your module, letting you integrate directly with external APIs. This is how easy it is to call ChatGPT's API from within your module:
```ts
export const ask_ai = spacetimedb.procedure(
{ prompt: t.string(), apiKey: t.string() },
t.string(),
(ctx, { prompt, apiKey }) => {
// Make the HTTP request to OpenAI
const response = ctx.http.fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${apiKey}`,
},
body: JSON.stringify({
model: 'gpt-4',
messages: [{ role: 'user', content: prompt }],
}),
// Give it some time to think
timeout: TimeDuration.fromMillis(3000),
});
if (response.status !== 200) {
throw new SenderError(`API returned status ${response.status}`);
}
const data = response.json();
const aiResponse = data.choices?.[0]?.message?.content;
if (!aiResponse) {
throw new SenderError('Failed to parse AI response');
}
// Store the conversation in the database
ctx.withTx(txCtx => {
txCtx.db.aiMessage.insert({
user: txCtx.sender,
prompt,
response: aiResponse,
createdAt: txCtx.timestamp,
});
});
return aiResponse;
}
```
Read more about [Procedure Functions](https://spacetimedb.com/docs/functions/procedures).
## SpacetimeAuth (and Clerk and Auth0)
And to help you avoid needing to set up additional sidecars and services alongside SpacetimeDB we've also introduced [SpacetimeAuth](https://spacetimedb.com/docs/spacetimeauth/), our first party auth solution. SpacetimeAuth is completely free to use with SpacetimeDB Maincloud!
We've also built tutorials for how to integrate with other auth providers like Clerk and Auth0!
## View Functions
In SpacetimeDB 2.0, adding sophisticated read permissions to expose portions of your data to users is as simple as creating a function:
```ts
export const players_for_level = spacetimedb.anonymousView(
{ name: 'players_for_level', public: true },
t.array(playerAndLevelRow),
(ctx) => {
const out: Array<{ id: bigint; name: string; level: bigint }> = [];
for (const playerLevel of ctx.db.playerLevels.level.filter(2n)) {
const p = ctx.db.players.id.find(playerLevel.player_id);
if (p) out.push({ id: p.id, name: p.name, level: playerLevel.level });
}
return out;
}
);
```
You can think of view functions as a table that is backed by a reducer. From the client, they look just like any other table in your database, but in the module they're represented as a function that returns rows that you want to expose to clients. Better yet, the table is automatically parameterized by the identity of the viewing client, allowing different clients to see different data when viewing the same table.
Views can also return custom types allowing you to not only filter rows, but also columns. Views are an elegant way of solving read permissions without introducing a single new concept!
Read more about [View Functions](https://spacetimedb.com/docs/functions/views).
## Typed Query Builder
In SpacetimeDB 2.0, you can kiss your stringly-typed queries goodbye! With our 2.0 SDK and code generation, we generate beautifully typed query builder APIs that allows your clients to build arbitrary queries over the data.
```ts
ctx.subscriptionBuilder().subscribe([tables.user.where(user => user.name.eq("Tyler")), tables.message]);
```
Never worry about runtime errors with your queries again! And the strongly typed queries also help LLMs succeed more often as well.
Even better, you can access this same query builder API inside your view functions to return queries from your views so they can be optimized by our incremental evaluation query engine!
```ts
export const high_scorers = spacetimedb.anonymousView(
{ name: 'high_scorers', public: true },
t.array(players.rowType),
(ctx) => {
return ctx.from.players
.where(p => p.score.gte(1000n))
.where(p => p.name.ne('BOT'));
}
);
```
## Event Tables
Event tables are also all new in SpacetimeDB 2.0. Event tables allow you to publish short lived event information to clients without needing to clean up your tables later on. Event tables act like regular tables, but the rows are automatically deleted by SpacetimeDB at the end of a transaction. This both saves you storage costs and also bandwidth, as the database needs to synchronize less state!
Publishing an event to clients is as simple as inserting into a row into the event table, and subscribing to it like any other table.
```ts
// server
const damageEvent = table({
public: true,
event: true,
}, {
entity_id: t.identity(),
damage: t.u32(),
source: t.string(),
});
export const attack = spacetimedb.reducer(
{ target_id: t.identity(), damage: t.u32() },
(ctx, { target_id, damage }) => {
// Game logic...
// Publish the event
ctx.db.damageEvent.insert({
entity_id: target_id,
damage,
source: "melee_attack",
});
}
);
// client
conn.db.damageEvent.onInsert((ctx, event) => {
console.log(`Entity ${event.entityId} took ${event.damage} damage from ${event.source}`);
});
```
Read more about [Event Tables](https://spacetimedb.com/docs/tables/event-tables).
## `spacetime.json` configuration
With 2.0, we're also introducing a new config file to make it easier to interact with your databases. Now with `spacetime.json` you can save all your database configuration in a single file that you check in to git, so instead of this:
```sh
spacetime generate --lang typescript --out-dir src/module_bindings
spacetime publish --server maincloud --module-path spacetimedb my-database
```
You can now just type this:
```sh
spacetime generate
spacetime publish
```
## `spacetime dev`
Development is getting simpler too, with our new `spacetime dev` command. This command is your one stop shop for development. It:
1. Watches for changes in your module code
2. Compiles your module
3. Generates your client module bindings
4. Publishes your module
5. Runs your client
Now all you have to do is change your code and your whole app updates instantly!
## All new dashboard and metrics
We've also added beautiful new dashboards and analytics so you can monitor your apps and data in real-time! And they update in real-time too! It's incredible to see tables updating live, trust us!
## Better LLM tools and benchmarks
SpacetimeDB is now also optimized for LLMs as well, both to help you understand SpacetimeDB and also to help you write your SpacetimeDB apps. New projects automatically ship with the appropriate AGENT.md files to help you get started immediately.
## Project collaborators and organizations
For groups and teams, we've introduced project collaborators and organizations. With project collaborators you can invite your friends and colleagues to build and publish modules with you.
Larger organizations can sign up for our Maincloud Team tier to reserve their team name and get advanced features for permissions management.
## Postgres Wire Protocol Compatibility
If you've got existing tools that work with Postgres, they might work with SpacetimeDB now too! SpacetimeDB 2.0 supports the Postgres Wire Protocol, meaning you can use `psql` and other Postgres tools to query SpacetimeDB directly.
SpacetimeDB does not yet support the full suite of Postgres features, but this is the beginning of a long effort to make SpacetimeDB fully Postgres compatible.
## Much much more
Over the past several months we've merged literally hundreds of bug fixes, UX improvements, and performance improvements. If you haven't tried SpacetimeDB out, now is an excellent time to try!
## What's Changed
* Rework `JobCores` in order to core-pin v8 instance threads by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4128
* Fix for `cargo ci dlls` missing some `.meta` files by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4178
* [TS] Implement de/serialization as a tree of closures by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/3957
* Add context about maincloud publishing being free of charge by @aasoni in https://github.com/clockworklabs/SpacetimeDB/pull/4174
* implement TryFrom for V10 by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4190
* Reorganize TS sdk by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/3915
* `write-nuget-config.sh` resolves paths properly by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4193
* gitignore - properly ignore nuget config files by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4192
* Update 00250-zen-of-spacetimedb.md by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4145
* Update README.md by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4119
* Bump esm (gzip) size limit by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4198
* Update `librusty_v8.nix` for our new V8 dependency version. by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4202
* Identifiers: Refactor + Improve type-safety & performance by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/4177
* Translate smoketests from Python to Rust by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4102
* Pass Reducer/ProcedureContext by reference by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/4203
* `RawModuleDefV10` Scheduled functions should not be callable by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4179
* CI - csharp-testsuite v8 dance done properly by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4209
* add missing TypeScript language for 'Module can be written in' by @ExpLuuk in https://github.com/clockworklabs/SpacetimeDB/pull/4205
* [TS] Introduce v2 JS abi, with memory allocated by the caller by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4186
* [2.0 Breaking]: Remove sender field from [Reducer|View|Procedure]Context by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4208
* Smoketests - Collapse one directory level by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4184
* Moved C# SDK's `packages` ignore from SDK's `.gitignore` to project root by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4211
* [TS] Module-side performance improvements by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4187
* CI - Merge `xtask-smoketest` into `cargo ci smoketests` by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4185
* [2.0 Breaking] Make `connection_id` a method on `ReducerContext` by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4215
* [TS] Make ProcedureCtx a class by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4210
* Bump Rust to 1.93.0 by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4180
* CI - Fix v8 in debug and release by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4223
* Add C++ Bindings by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/3544
* [2.0 Breaking] Expose `RawModuleDefV10` from WASM modules by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4216
* core: Add context about which database got a durability panic by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4221
* CI - Fix cargo-related errors by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4242
* cli: Avoid empty error message by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4230
* Add index benchmarks for composites of primitives by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/4248
* Docs Update for C++ [1/4] by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4118
* Docs Update for C++ [3/4] by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4163
* Add code owners for CI stuff by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4245
* Docs Update for C++ [4/4] (Blackholio) by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4169
* Docs Update for C++ [2/4] by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4129
* [C#] Module bindings for Typed Query Builder by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4159
* RawModuleDefV10 from V8 modules. by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4194
* Block procedures from requesting private ip ranges by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4243
* Remove `__decribe_module_v10__` by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4246
* feat: Quickstart and client for Plain JS Script Tags by @clockwork-tien in https://github.com/clockworklabs/SpacetimeDB/pull/4161
* Reorganize types generated for typescript clients by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4258
* [TS] Bundle ICU data by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4253
* Quickstart bun by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4154
* Fix release for GLIBC_2.38 issue by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4268
* Quickstart nodejs by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4112
* Quickstart nextjs by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4097
* LLM Oneshot Prompts, Oneshotted Apps, and Cursor Rules (C#/Rust/TS) by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4032
* Added C++ smoketest for quickstart-chat + updated chat doc by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4109
* Quickstart remix by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4113
* Add warning prompt for 1.0 -> 2.0 module upgrade path by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4247
* Fix docker unauthenticated pull rate limit issue in CI by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4272
* [2.0 Breaking] Add --include-private and default private tables to not generate by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4241
* Keynote Spacetime simulation comparisons by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4072
* feat: Quickstart and client for Nuxt by @clockwork-tien in https://github.com/clockworklabs/SpacetimeDB/pull/4176
* Deno quickstart by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4191
* [TS] Export reducers, etc from a module by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4220
* TypeScript modules: Expose hash indices by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/4233
* Rename `with_module_name` -> `with_database_name` by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4267
* Download from Digital Ocean if Github download fails by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4265
* Add missing query builder docs by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4196
* [TS] Throw error objects from syscalls by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4260
* Bump rolldown to 1.0.0-rc.3 by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4259
* client-api: Resolve organization names via the tld, not the dns table by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4266
* feat: Quickstart and client for TanStack Start by @clockwork-tien in https://github.com/clockworklabs/SpacetimeDB/pull/4107
* Version upgrade to 2.0 by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4252
* websocket format: use `RawIdentifier` by @Centril in https://github.com/clockworklabs/SpacetimeDB/pull/4181
* CI - Fix smoketests using wrong binary path by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4280
* Expand and correct docs on `procedure_http_request` ABI function by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/3950
* Sort version output of `spacetime version list` by @aasoni in https://github.com/clockworklabs/SpacetimeDB/pull/4250
* Implement server-side support for the v2 websocket protocol by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4213
* [TS] Remove fast-text-encoding polyfill by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4283
* Typescript v2 API by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/4271
* Limit update() to only work on primary keys by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4279
* Update Rust client SDK for V2 WebSocket format by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4257
* [TS] Pretty-print objects passed to console.log by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4285
* [V8 host] Fix panic when client disconnects by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4286
* Event tables: datastore tests, migration validation, and bootstrap fix by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4251
* Standardize query builder syntax across Rust, TypeScript, and C# (Server/Client) by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4261
* [C#] Adding RawModuleDefV10 to C# Module Bindings by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4288
* [TS] schema() takes an object by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4273
* Append commit instead of individual transactions to commitlog by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4140
* Revert "Append commit instead of individual transactions to commitlog (#4140)" by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/4292
* Fix Unreal Blackholio Tutorial for project rename by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4044
* Set name of network thread in C# SDK by @SteveGibsonCL in https://github.com/clockworklabs/SpacetimeDB/pull/4090
* [2.0 Breaking] Update C# client SDK for V2 WebSocket format by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/4293
* Add `ws_schema.json` to gitignore by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/2745
* CI - Check smoketests for changes by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4282
* Add GREMLINS.md documenting repo bots and agents by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/4290
* Case conversion Raw Def changes by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4294
* Implement event tables (server, Rust/TS/C# codegen + client SDKs) by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4217
* `spacetime.json` config implementation by @drogus in https://github.com/clockworklabs/SpacetimeDB/pull/4199
* Add Angular integration by @JulienLavocat in https://github.com/clockworklabs/SpacetimeDB/pull/4139
* Rust: macro change `name` -> `accessor` by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4264
* TS Quickstart: Store different auth tokens for different servers/modules by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/3252
* Trigger view refresh when a WASM procedure commits a transaction by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4301
* Don't call init reducer in spacetime generate by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4312
* Fix metadata version check for 2.0 by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4313
* Updated C# `Name` attribute to `Accessor` by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4306
* docs: expand Maincloud deployment page by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/4316
* Docs: Expand FAQ for 2.0 launch by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/4314
* SQL alias by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4304
* Trigger view refresh when a V8 procedure commits a transaction by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4302
* [TS] Fix ArrayBuilder.{name,default} by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4321
* Minor fixes to examples in event tables document by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4322
* Add `accessor_name` field in `ModuleDef` by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4323
* Improve `spacetime build` for typescript by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4330
* Pinning C++ and Unreal to 1.12.0 by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4328
* [TS] better build followup by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4334
* Fix hash index round-trip through st_indexes by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/4336
* [Docs] Revisions to Chat App doc for 2.0 release by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4335
* Add migration-focused diagnostics to Rust table macro by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4342
* Small fixes for the Blackholio tutorial by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4343
* Fix query optimization for semijoins by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4287
* Fix CI error stemming from `cargo update` by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4341
* `spacetime.json` related fixes and improvements by @drogus in https://github.com/clockworklabs/SpacetimeDB/pull/4332
* Rust docs updated for `name` to `accessor` by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4344
* Return ModuleInfo from check_module_validity by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4339
* [C#] Spacetime 2.0 Query Builder behavior validation by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4333
* Fixes for procedure example in docs by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4346
* Docs - add shared C++ version notice inside first C++ tab across docs by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4348
* Add smoketests for template generation by @drogus in https://github.com/clockworklabs/SpacetimeDB/pull/4000
* Add more tests for typescript client and fix some bugs by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/4307
* Update subscription and query builder docs by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4329
* [TS] Improve autogen autocompletion and typing by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4309
* Add ConnectionManager for robust React lifecycle handling by @douglance in https://github.com/clockworklabs/SpacetimeDB/pull/4028
* Update to generated C# template package version by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4349
* Fix publishing and generating from subdirs if config is present by @drogus in https://github.com/clockworklabs/SpacetimeDB/pull/4351
* Remove database names in quickstarts by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4354
* Fix warnings in regen-cpp-moduledef by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4355
* Update benchmark docs by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4345
* Warn about publishing DBs from non-local/non-dev spacetime.json in dev by @drogus in https://github.com/clockworklabs/SpacetimeDB/pull/4350
* Fix `spacetime dev` watch filtering and improve quickstart copy-paste experience by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4317
* [TS] Improve how exceptions get rendered in messages by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4347
* Make Rust test clients listen for reducer errors by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4359
* Fix template `global.json` under Windows by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4357
* Add more debug logging to the typescript client by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/4356
* gitignore AI agent config dirs by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4365
* [C#] Cononical Names and Casing Settings in ModuleDef by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4368
* Case conversion by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4263
* Fix various TS templates by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4360
* Add #[spacetimedb::settings] for module-level configuration by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/4366
* Allow skipping DB if the config file is available by @drogus in https://github.com/clockworklabs/SpacetimeDB/pull/4358
* typescript: canonical naming for reducer and procedure. by @Shubham8287 in https://github.com/clockworklabs/SpacetimeDB/pull/4371
* Change deno quickstart to use package.json instead of deno.json by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4374
* Don't shadow Math.random() in typescript by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4375
* fix: Additional fixes for templates by @clockwork-tien in https://github.com/clockworklabs/SpacetimeDB/pull/4372
* Rename UnknownTransaction event to Transaction by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/4377
* Move CaseConversionPolicy to public SpacetimeDB namespace by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/4382
* Add doc versioning by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/4381
* Template packages -> workspace instead of 1.* by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4373
* Fix view macro to keep original visibility by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4387
* Docs: SpacetimeDB 2.0 migration guide by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4383
* fix: Handle empty HTTP response body in procedure bindings by @Ludv1gL in https://github.com/clockworklabs/SpacetimeDB/pull/4386
* Close the connection on errors for applied subscriptions by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/4378
* TS quickstart template fixes (nextjs + nodejs) by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4380
* commitlog: Improve `committed_meta` by @kim in https://github.com/clockworklabs/SpacetimeDB/pull/4338
* [C#] Removes `Query<TRow>` and `.Build()` in favor of `IQuery<TRow>` by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4393
* Use the query type in the useTable of vue and svelte by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/4400
* Fix `spacetime logout` failing when offline by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/4361
* Docs: Add links to all quickstart guides on Getting Started page by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4395
* Remove query builder's `.build()` from llm docs by @joshua-spacetime in https://github.com/clockworklabs/SpacetimeDB/pull/4398
* CI - Fail properly if `psql` failed to install by @jdetter in https://github.com/clockworklabs/SpacetimeDB/pull/4399
* `sql_parts` does not conflict with `interactive` in CLI `sql` subcommand by @gefjon in https://github.com/clockworklabs/SpacetimeDB/pull/4402
* Bump versions to 2.0.1 by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4403
* Fix version upgrade check for prerelease versions by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4407
* [TS] Add typescript dependency to typescript templates by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4409
* Update default doc version to 2.0.0 by @jsdt in https://github.com/clockworklabs/SpacetimeDB/pull/4411
* LLM Benchmark Results - Feb 26 by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4388
* Fix keynote-2 module by @coolreader18 in https://github.com/clockworklabs/SpacetimeDB/pull/4412
* [Docs] Updates to `00600-c-sharp.md` to work in 2.0 by @rekhoff in https://github.com/clockworklabs/SpacetimeDB/pull/4415
* C++ Quickstart - spacetime dev not working by @JasonAtClockwork in https://github.com/clockworklabs/SpacetimeDB/pull/4414
* Enable confirmed reads by default by @clockwork-labs-bot in https://github.com/clockworklabs/SpacetimeDB/pull/4390
* LLM Benchmark docs updates from testings by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4416
* Confirmed reads default only for v2 connections by @bfops in https://github.com/clockworklabs/SpacetimeDB/pull/4419
* Keynote fixes/refinements by @bradleyshep in https://github.com/clockworklabs/SpacetimeDB/pull/4418
* Fix `spacetime dev` template issues and clean up CLI by @cloutiertyler in https://github.com/clockworklabs/SpacetimeDB/pull/4396
## New Contributors
* @ExpLuuk made their first contribution in https://github.com/clockworklabs/SpacetimeDB/pull/4205
**Full Changelog**: https://github.com/clockworklabs/SpacetimeDB/compare/v1.12.0-hotfix1...v2.0.1