In this release, we've focused on optimization in SpiceDB, introducing new experimental features to optimize the way you plan and create queries, as well as a new keyword to simplify your schema. We've also added other enhancements to the zed CLI, our client libraries, and AuthZed Cloud.
The new spicedb postgres-fdw command exposes SpiceDB as a Postgres Foreign Data Wrapper, allowing users to write permission checks as SELECT statements and express relationship writes using standard SQL.
This is a work in progress and not yet recommended for production, but if you're interested in querying SpiceDB through your existing Postgres connection, we encourage you to experiment and provide feedback.
A new --experimental-query-plan flag enables SpiceDB's in-progress query planner. There's still work to do on statistics sources and optimization before it will provide consistent performance benefits, so we're not recommending it for production yet — but it's available if you want to explore how it works.
self Keyword in PermissionsSpiceDB v1.49.1 adds a self keyword to schema permissions. If you've ever needed to express "a user can view themselves," you previously had to create a relation and write a relationship from the user back to itself — an extra round-trip to the database and a relationship that needed to stay in sync.
With self, you can express this directly in your permission definition. It's less schema to maintain, fewer relationships to write, and no extra database lookup at check time.
zed CLIzed backup can now back up SpiceDB instances that don't expose the ExportBulk API — including very old versions and Serverless deployments. Several reliability fixes shipped alongside this:
use self Validation (v0.35.0)zed validate now understands the use self schema keyword, so schemas using it will validate correctly.
DiffSchema and ReflectSchema are now part of the public API, making it easier to build tooling that inspects or compares SpiceDB schemas from Python.
API usage examples were added to the library, covering common patterns and addressing frequently-asked questions. The library also picked up the new DATASTORE_NOT_MIGRATED error code from the upstream API, giving Go applications a clearer signal when SpiceDB hasn't been migrated yet.
Package compatibility checking via publint was added to the build pipeline. This catches compatibility issues before packages are published to npm, improving reliability for downstream consumers.
Metrics queries are no longer capped at a maximum time range. You can now query the full history available, which is useful when investigating longer-term performance trends or capacity planning.
The connect dialog now shows ready-to-use code snippets for Python, Go, Node.js, and other languages. When you're setting up a new application, you can copy working connection code directly from the console.
A Grafana dashboard example was contributed to the examples repo, providing a starting point for teams that want to visualize SpiceDB metrics in Grafana.