3.0.5
Released on Mar 27, 2026
Bug fixes:
Fixed computed fields being eagerly evaluated when not selected in
SELECTqueriesFixed
$parentresolving toNONEinside graph traversalWHEREclausesFixed
LIMITpushdown, plan-time parameter resolution, and computed field dependency analysisFixed
count()returning1for sets instead of counting items and added missing set function paths
Features & improvements:
Upgrade or install
Get SurrealDB v3.0.5
Pick how you want to install or upgrade. Surrealist can update connected instances in place, or choose a platform below to copy a CLI command for v3.0.5.
You can upgrade your SurrealDB Cloud instance to v3.0.5 effortlessly through the Surrealist app.
- Open the Surrealist app
- Select your organisation and instance
- On the dashboard, click on the "Upgrade" button
- Your instance will be updated and restarted automatically
3.0.4
Released on Mar 13, 2026
Newer patch available
Upgrade to 3.0.5
You are viewing the 3.0.4 changelog. A newer patch in this release line is available - we recommend running 3.0.5 for the latest fixes and improvements.
3.0.3
Released on Mar 10, 2026
Bug fixes:
Fixed
STARTclause performance regression with pushdown KV skippingFixed
SurrealValue::from_valuefor allserde_json::ValuevariantsFixed BM25
search::score()returning 0 after index compactionPropagated actual query errors instead of misleading
Connection uninitialisedFixed
UPSERT SETwithIFexpressions always evaluating to theELSEbranch on existing recordsFixed
LIMITproducing fewer rows whenWHEREis only partially resolved by the indexFixed subqueries not respecting nested fields with
AS key.keyFixed index compaction
KeyAlreadyExistsandTransactionConflicterrors
Features & improvements:
Newer patch available
Upgrade to 3.0.5
You are viewing the 3.0.3 changelog. A newer patch in this release line is available - we recommend running 3.0.5 for the latest fixes and improvements.
3.0.2
Released on Mar 3, 2026
Bug fixes:
Returned
Nonefor records that don't exist instead of a confusing errorFixed write-write conflicts on IP keys during IndexAppending
Features & improvements:
Newer patch available
Upgrade to 3.0.5
You are viewing the 3.0.2 changelog. A newer patch in this release line is available - we recommend running 3.0.5 for the latest fixes and improvements.
3.0.1
Released on Feb 24, 2026
Newer patch available
Upgrade to 3.0.5
You are viewing the 3.0.1 changelog. A newer patch in this release line is available - we recommend running 3.0.5 for the latest fixes and improvements.
3.0.0
Released on Feb 17, 2026
After numerous alpha and beta releases over more than a year of development, we are releasing SurrealDB v3.0.0! 🎉. The changes for this release pertain to those over all the alpha and beta versions before 3.0.0, starting with 3.0.0-alpha.1 and the last 3.0.0-beta.4 and finally the changes between the final beta version and stable 3.0.0.
Items in the release notes marked as 🆕 are the newest changes from the final beta and 3.0.0.
To migrate from a 2.x version to 3.0, please see the following page which goes into further detail on the breaking changes and how to use migration diagnostics to obtain a list of actions for your particular schema.
Performance and optimisations:
🆕 Add support for skipping keys and values at storage engine layer
Improved edge lookups: Only fetch edge keys when values are unused
Optimise index scans (descending) order and limit batch sizes
Invert expression value relation and move ast types out of value.
Enable query planner on DELETE, UPDATE and UPSERT statements
Added support for multiple writers in Full-Text search implementation
Added support for range scans on compound indexes (prefix + range)
Optimised START/LIMIT execution: correct semantics with WHERE/ORDER and early-stop iteration
Removed Force Index mechanism and unify index building across all platforms
Features, additions and syntax improvements:
Added support for filtering down graph selections with a range selection
Added support for converting to/from protobufs and flatbuffers
Added Support of standard deviation and variance in foreign tables
Use
surrealdb_types::*in SDK and as core's public interface.Memory-bounded LRU cache for HNSW vectors; remove deprecated MTREE index
Moved strict mode to DB definition, added strict object type
Added
ALTER INDEXstatement withPREPARE REMOVEfor safe index decommissioning
Bug fixes:
🆕 Fix schemafull index validation for sub-field paths on structured field types
🆕 Fix count() AS optimisation ignoring field aliases with GROUP ALL
🆕 Fix WebSocket client memory leak in pending request cleanup
Fixed async event retries to correctly roll back failed executions
Fixed concurrent index builds dropping updates under heavy write load
Fixed backwards compatibility issues in authentication limits
Fixed INSERT RELATION preserving extra fields when using table variants
Fixed Linux Docker builder issues with OpenSSL and ONNX Runtime linking
Ensured
api::invokeomits execution context where appropriateFixed race condition in Scanner causing duplicate range fetches
Fixed panic in HNSW vector cache eviction under async contexts
Fixed GraphQL parsing:
excludedincorrectly treated asincludedImproved
ALL/ANYINSIDEbehaviour with strings and arrays of stringsImproved over-fetch documents when LIMIT and START used together
[Fixed a bug with conversions to union types like `array | bool`](https://github.com/surrealdb/surrealdb/pull/5685)
Fixed memory usage and performance of Garbage Collection on old databases
Replaced BTreeDocIds with SeqDocIds in M-Tree, remove ANALYSE, use Strand for RecordKey::String
Enabled referencing fields in default value for defined fields.
Removed dec when casting decimal to a string, allow string casting from None and Null
Fixed incorrect ORDER BY LIMIT results on multi-column index scans
Added notification for caller when a connection is dropped in Rust SDK
Fixed ignored insert with unique index creating a record when index violated
Fixed WebSocket limits configurable and enforce max message size
Fixed invalid formatting of statement expressions within general expressions
Added
CONTAINS/INSIDEplanning consistent with substring semanticsEnsured destructuring with computed fields returns correct output
Improve behaviour of group by and improve performance and robustness of views
Fixed SELECT with SPLIT so ORDER BY and START/LIMIT apply after splitting
Fixed OOM crash in COUNT index on large datasets by batching key retrieval
Fixed provided vars not being attached to context in surrealism 'sql_with_vars' function
Workflow, observability and developer experience improvements:
Improve context cancellation checking with adaptive back-off strategy for better OOM protection
Added support for log files, json log format, and advanced log span filtering
Storage/index format and protocol:
Security/networking:
Newer patch available
Upgrade to 3.0.5
You are viewing the 3.0.0 changelog. A newer patch in this release line is available - we recommend running 3.0.5 for the latest fixes and improvements.
Our newsletter
Get tutorials, AI agent recipes, webinars, and early product updates in your inbox every two weeks