Additions, deprecations, removals, and compatibility
Cypher® is a language that is constantly evolving. New features are added to the language continuously, and occasionally, some features become deprecated and are subsequently removed. All changes to Cypher are introduced in Neo4j versions.
This section lists all of the features that have been removed, deprecated, added, or extended in different versions of Neo4j. Replacement syntax for deprecated and removed features are also indicated.
|
Cypher 25 was introduced in Neo4j 2025.06 and can only be used on Neo4j 2025.06+ databases. From this release onward, no new features will be added to Cypher 5. Users of Cypher 5 must migrate their queries to Cypher 25 in order to access new features. For more information, see: |
Neo4j 2026.06
Deprecations
| Feature | Details |
|---|---|
Functionality Deprecated
|
The vector index configuration setting |
Updates
| Feature | Details |
|---|---|
Updated Preview
|
Vector indexes now support binary quantization ( For more details, see Vector index configuration settings → |
Neo4j 2026.02
Updates
| Feature | Details |
|---|---|
Updated
|
The |
Updated
|
The |
Neo4j 2025.09
New
| Feature | Details |
|---|---|
New New operator: |
Introduced |
Neo4j 2025.08
Updates
| Feature | Details |
|---|---|
Updated
|
Cypher can now leverage token lookup indexes when planning queries with dynamic labels and relationship types.
This is enabled by the introduction of three new query plan operators: |
Neo4j 2025.06
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
Graph references with separately backticked name parts ( For more information, see the Operations Manual → Show and terminate transactions. |
Deprecated
|
Graph references with separately backticked name parts ( |
New
| Feature | Details |
|---|---|
New
|
Set the default Cypher version for a standard or composite database when creating it.
The available versions are |
New
|
Set the default Cypher version for a remote database alias when creating it.
The available versions are |
New
|
Alter the default Cypher version of an existing standard or composite database.
The available versions are |
New
|
Alter the default Cypher version of a remote database alias.
The available versions are |
New
|
The new return column |
New
|
The new return column |
New
|
New query option: |
Neo4j 2025.04
New
| Feature | Details |
|---|---|
New
|
Property-based access control for relationships is now supported in Enterprise Edition. For more information, see Property-based access control. |
Neo4j 2025.03
New
| Feature | Details |
|---|---|
New
|
New error handling option for |
Neo4j 2025.01
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
The Cypher query option |
Neo4j 5.26
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
Specifying an index provider in the This also means that the vector index index provider, |
Deprecated
MATCH (...)-[where {...}]->()
|
The variable named
|
Deprecated
... + n:A&B ... + n:A&B|C |
Using an unparenthesized label expression predicate as the right-hand side operand of |
Deprecated
|
Using a variable named |
Deprecated
CASE x ... WHEN contains - 1 THEN ... END |
Using a variable named
|
Deprecated
CASE x ... WHEN in["abc"] THEN ... END |
Using the
|
Deprecated
|
The column |
Deprecated
|
The |
Deprecated
|
The |
Deprecated
|
The use of unquoted This is because the previous quoting rules were inconsistent and ambiguous. The rules have been clarified and improved in Cypher 25. For more information, see the Cypher 25 Manual → Additions, deprecations, removals, and compatibility. |
Updates
| Feature | Details |
|---|---|
Updated
|
|
Updated
|
The |
Updated
|
Property-based access control now supports spatial and temporal values. |
Updated
|
Using differently ordered return items in a |
New
| Feature | Details |
|---|---|
New
|
Added the ability to dynamically reference node labels and relationship types in |
Neo4j 5.25
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
The |
Updates
| Feature | Details |
|---|---|
Updated
|
Neo4j’s block format now implements GQL’s limit on the maximum length of identifiers. The maximum limit is set to 16,383 characters in an identifier. This means that node labels, relationship types, and property keys cannot include more than 16,383 characters. |
New
| Feature | Details |
|---|---|
New
|
The option |
Neo4j 5.24
New
| Feature | Details |
|---|---|
New
|
Introduced |
New
|
Introduced See |
New
|
Introduced GQL conformant standalone |
New
|
Added the ability to dynamically reference labels in SET and REMOVE clauses. |
New
|
Added the ability to dynamically reference properties in SET and REMOVE clauses. |
New
|
Added the ability to drop database aliases while deleting a database. This will affect local database aliases targeting the database and constituent database aliases belonging to the composite database. For more information, see Delete a database with local database aliases targeting it and Delete a composite database with constituent database aliases. |
New
|
Extension of the LOAD CSV clause to allow loading CSV files from Azure Cloud Storage URIs. |
New
|
Added the ability set which auth providers apply to a user (Enterprise Edition). Administration of the native (username / password) auth via the new syntax is also now supported (Community Edition). |
New
|
Added the ability add and remove user auth providers via the Setting the native (username / password) auth provider via this new syntax is also supported (Community Edition), but removing any auth provider or setting a non-native auth provider is only supported in Enterprise Edition. |
New
|
New support for |
New
|
New privilege that allows a user to modify user auth providers.
This is a sub-privilege of the |
Neo4j 5.23
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
Using the |
Updates
| Feature | Details |
|---|---|
Updated
|
Introduced new GQL conformant aliases to duration types: See types and their synonyms for more. |
New
| Feature | Details |
|---|---|
New
|
Introduced a new variable scope clause to import variables in |
New
|
Introduced the following configuration settings for vector indexes:
Additionally, as of Neo4j 5.23, it is no longer mandatory to configure the settings |
Neo4j 5.21
Updates
| Feature | Details |
|---|---|
Updated
|
Introduced a The column is a |
New
| Feature | Details |
|---|---|
New
|
Introduction of property-based access control for read privileges. The ability to read, traverse and match nodes based on node property values is now supported in Enterprise Edition. |
New
|
Extension of the LOAD CSV clause to allow loading CSV files from Google Cloud Storage URIs. |
New
|
Introduction of |
New
|
Introduction of a lower() and upper() function. These are aliases of the toLower() and toUpper() functions. |
New
|
Introduced CALL { … } IN CONCURRENT TRANSACTIONS, which uses multiple CPU processors simultaneously to execute batched inner transactions concurrently. |
New
|
Introduced new graph pattern matching keywords to find variations of the shortest paths between nodes. |
Introduced new operators to solve |
|
New
|
Introduced the ability to prepend queries with |
Neo4j 5.20
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
Merging a node or relationship entity, and then referencing that entity in a property definition in the same |
New
| Feature | Details |
|---|---|
New
|
Introduced btrim() function, which returns the given |
Neo4j 5.19
New
| Feature | Details |
|---|---|
New
|
Added a new |
New
|
New FINISH clause, which can be optionally used to define a query that returns no result. |
New
|
The keyword |
New
|
Extension of the LOAD CSV clause to allow loading CSV files from AWS S3 URIs. |
New
|
Added support for more Vertex AI vector encoding models in GenAI plugin.
Also added support for Vertex AI |
Neo4j 5.18
New
| Feature | Details |
|---|---|
New
|
Added a new keyword INSERT, which can be used as a synonym to |
New
|
Extension of the simple |
New
|
Added command to create relationship vector indexes.
The index configuration settings |
New
|
Introduction of vector similarity functions.
These functions return a |
Neo4j 5.17
Updates
| Feature | Details |
|---|---|
Updated
|
When attempting to create an index using |
Updated
|
When attempting to create a constraint using |
Updated
|
When attempting to drop a non-existing index using |
Updated
|
When attempting to drop a non-existing constraint using |
New
| Feature | Details |
|---|---|
New
|
Introduction of a normalize() function.
This function normalizes a |
New
|
Introduction of an IS NORMALIZED operator.
The operator can be used to check if a |
New New operators: |
Introduction of partitioned operators used by the parallel runtime. These operators segment the data and operate on each segment in parallel |
Neo4j 5.16
Updates
| Feature | Details |
|---|---|
Updated
|
Added the ability to use parameters for the index name in the |
Updated
|
Added the ability to use parameters for the constraint name in the |
New
| Feature | Details |
|---|---|
New
|
Added the ability to grant or deny |
Neo4j 5.15
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
The Unicode character `\u0085` is deprecated for identifiers not quoted in backticks and will be considered as a whitespace character in the future. To continue using it, quote the identifier with backticks. This applies to all identifiers in Cypher, such as label expressions, properties, variable names or parameters. In the given example, the quoted identifier would be `my�identifier`. |
Deprecated
|
The character with the Unicode representation `\u0024` is deprecated for identifiers not quoted in backticks and will not be supported in the future. To continue using it, quote the identifier with backticks. This applies to all identifiers in Cypher, such as label expressions, properties, variable names or parameters. In the given example, the quoted identifier would be `my$identifier`. The following Unicode Characters are deprecated in identifiers: '\u0000', '\u0001', '\u0002', '\u0003', '\u0004', '\u0005', '\u0006', '\u0007', '\u0008', '\u000E', '\u000F', '\u0010', '\u0011', '\u0012', '\u0013', '\u0014', '\u0015', '\u0016', '\u0017', '\u0018', '\u0019', '\u001A', '\u001B', '\u007F', '\u0080', '\u0081', '\u0082', '\u0083', '\u0084', '\u0086', '\u0087', '\u0088', '\u0089', '\u008A', '\u008B', '\u008C', '\u008D', '\u008E', '\u008F', '\u0090', '\u0091', '\u0092', '\u0093', '\u0094', '\u0095', '\u0096', '\u0097', '\u0098', '\u0099', '\u009A', '\u009B', '\u009C', '\u009D', '\u009E', '\u009F', '\u0024', '\u00A2', '\u00A3', '\u00A4', '\u00A5', '\u00AD', '\u0600', '\u0601', '\u0602', '\u0603', '\u0604', '\u0605', '\u061C', '\u06DD', '\u070F', '\u08E2', '\u180E', '\u200B', '\u200C', '\u200D', '\u200E', '\u200F', '\u202A', '\u202B', '\u202C', '\u202D', '\u202E', '\u2060', '\u2061', '\u2062', '\u2063', '\u2064', '\u2066', '\u2067', '\u2068', '\u2069', '\u206A', '\u206B', '\u206C', '\u206D', '\u206E', '\u206F', '\u2E2F', '\uFEFF', '\uFFF9', '\uFFFA', '\uFFFB' |
Updates
| Feature | Details |
|---|---|
Updated
|
Extended |
Updated
|
|
New
| Feature | Details |
|---|---|
New
|
Added a new keyword ALL, explicitly defining that the aggregate function is not |
New
|
Added command to create node vector indexes, replacing the |
Neo4j 5.14
Updates
| Feature | Details |
|---|---|
Updated
|
Extended type syntax to allow an exclamation mark |
New
| Feature | Details |
|---|---|
New
|
Introduction of a nullIf() function. This function returns null if the two given parameters are equivalent, otherwise returns the value of the first parameter. |
New
|
Added a new keyword NODETACH, explicitly defining that relationships will not be detached and deleted.
This is a mirror of the already existing keyword |
Neo4j 5.13
Updates
| Feature | Details |
|---|---|
Updated
|
Updated the Procedure signatures now follow the pattern:
The signature for procedures with no return columns now follows the pattern:
Function signatures now follow the pattern:
For all available Cypher types, see the section on types and their synonyms. |
New
| Feature | Details |
|---|---|
New Beta
|
Introduction of the Change Data Capture (CDC) feature. For details, see Change Data Capture. |
New
|
Introduction of a valueType() function.
This function returns a |
New
|
Introduction of a char_length() function.
This function returns the number of Unicode characters in a |
New
|
Introduction of a character_length() function.
This function returns the number of Unicode characters in a |
New New privilege:
|
New privilege that controls a user’s ability to load data.
Unlike other privileges, these are not granted, denied, or revoked on graphs, databases, or the DBMS, but instead on |
New
|
New graph function, graph.byElementId(), that resolves the constituent graph to which a given element id belongs. |
New CYPHER runtime = parallel |
Introduction of the parallel runtime. This runtime is designed for analytical, graph-global read queries run on machines with several available CPUs. |
Neo4j 5.12
New
| Feature | Details |
|---|---|
New
|
New database function to return database names from element ids. |
Neo4j 5.11
Updates
| Feature | Details |
|---|---|
Updated
|
Introduced a new column The column returns the name of the composite database that the alias belongs to, or |
Updated
|
Extended type predicate expressions.
Closed dynamic union types (
|
Updated
|
Extended node and relationship property type constraints.
Closed dynamic union types (
|
Updated
|
This command now auto-commits even when executed inside an explicit transaction. |
Neo4j 5.10
Updates
| Feature | Details |
|---|---|
Updated
|
Extended type predicate expressions. The newly supported types are:
|
Updated
|
Extended node and relationship property type constraints. The new supported types are:
|
Neo4j 5.9
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
Creating a node or relationship entity,
and then referencing that entity in a property definition in the same |
Updates
| Feature | Details |
|---|---|
Updated
|
Introduced an The column is true if the setting/function/procedure is deprecated and false otherwise. |
Updated
|
Introduced an The field is true if the argument/return value is deprecated and false otherwise. |
Updated
|
Introduced |
New
| Feature | Details |
|---|---|
New
|
Introduction of quantified path patterns - a new method in graph pattern matching for matching paths of a variable length. More information can be found here. |
New New operator: |
The |
New
|
Added type predicate expressions. The available types are:
|
New
|
Added node and relationship property type constraints. The available property types are:
|
New
|
Added filtering for the new property constraints to |
New
|
Show supported privileges on the current server. |
Neo4j 5.8
Updates
| Feature | Details |
|---|---|
Updated
|
Introduced The |
New
| Feature | Details |
|---|---|
New New operator: |
The |
Neo4j 5.7
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
The Cypher query option |
Updates
| Feature | Details |
|---|---|
Updated
|
New sub-clause |
New
|
Added relationship key and property uniqueness constraints. |
New
|
Added filtering for the new constraint types to The existing |
New
| Feature | Details |
|---|---|
New
|
New fine-grained control mechanism to control how an inner transaction impacts subsequent inner and/or outer transactions.
|
Neo4j 5.6
New
| Feature | Details |
|---|---|
New
|
New functionality to change tags at runtime via |
New
|
New expression which returns the results of a subquery collected in a list. |
New
|
Show configuration settings on the current server. The |
New
|
New privilege that controls a user’s access to desired configuration settings. |
Neo4j 5.5
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
Using differently ordered return items in a
|
New
| Feature | Details |
|---|---|
New New operator: |
The |
Neo4j 5.3
Updates
| Feature | Details |
|---|---|
Updated
|
Changes to the visibility of databases hosted on offline servers. For such databases:
|
Updated
|
An |
Updated
|
A |
Updated
|
The property uniqueness constraint type filter now allow both |
New
| Feature | Details |
|---|---|
New New operator: |
The |
Neo4j 5.2
Updates
| Feature | Details |
|---|---|
Updated
|
Creating composite databases now allows for an empty options clause. There are no applicable option values for composite databases. |
New
|
To preview of the result of either |
Neo4j 5.1
Neo4j 5.0
Removals
| Feature | Details |
|---|---|
Removed
|
Replaced by:
|
Removed
|
Replaced by:
|
Removed
|
Replaced by:
|
Removed
|
Replaced by:
|
Removed
|
Replaced by:
|
Removed
|
Replaced by:
|
Removed
|
Replaced by:
|
Removed
Removed
|
B-tree indexes are removed. B-tree indexes used for
B-tree indexes used for spatial queries are replaced by:
B-tree indexes used for general queries or property value types are replaced by:
These new indexes may be combined for multiple use cases. |
Removed
|
B-tree indexes are removed. Replaced by:
|
Removed
|
B-tree indexes are removed. Replaced by:
|
Removed
|
Node key and property uniqueness constraints backed by B-tree indexes are removed. Replaced by:
Constraints used for |
Removed
|
The The new column |
Removed
|
The |
Removed
|
Replaced by:
|
Removed
|
Replaced by:
|
Removed
|
The |
Removed
|
Replaced by:
|
Removed
|
Replaced by:
|
Removed
|
Replaced by |
Removed
|
Only |
Removed
|
Remaining support for repeated relationship variables is removed. |
Removed
|
Automatic coercion of a list to a boolean is removed. Replaced by:
|
Removed
|
Replaced by:
|
Removed
|
The ability to use operators
|
Removed
|
Replaced by:
|
Removed
|
It is no longer allowed to have |
Removed
|
Unaliased expressions are no longer supported in subquery
|
Removed
|
Pattern expressions producing lists of paths are no longer supported, but they can still be used as existence predicates, for example in
|
Removed
|
Implied grouping keys are no longer supported. Only expressions that do not contain aggregations are still considered grouping keys. In expressions that contain aggregations, the leaves must be either:
|
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
Use the
|
Deprecated
|
|
Deprecated
|
Creating a database with dots in the name was deprecated in 5.0. However, this deprecation was withdrawn in 2025.06, and replaced by two new deprecations in Cypher 5: This because the previous quoting rules were inconsistent and ambiguous. The rules have been clarified and improved in Cypher 25. For more information, see the Cypher 25 Manual → Additions, deprecations, removals, and compatibility. |
Deprecated
|
Replaced by:
|
Updates
| Feature | Details | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Updated
|
The default index type is changed from B-tree to range index. |
|||||||||||||||
Updated
|
The new column |
|||||||||||||||
Updated
|
The new column |
|||||||||||||||
Updated
|
New columns for the current query are added:
These columns are only returned in the full set (with |
|||||||||||||||
Updated
|
Terminate transaction now allows |
|||||||||||||||
Updated
|
|
|||||||||||||||
Updated
|
The When the command is not in standalone mode, the
|
|||||||||||||||
Updated
|
Not a syntax change but a semantic one.
The |
|||||||||||||||
Updated
|
Privileges can be specified as |
|||||||||||||||
Updated
|
|
|||||||||||||||
Updated
|
Changes to the default columns in the result:
The following columns have been added to the full result set (with
|
|||||||||||||||
Updated
|
Previously, if This is a semantic change only.
Since If matching on
|
|||||||||||||||
Updated
|
Rounding infinity and NaN values will now return the original value instead of returning an integer approximation for precision 0 and throwing an exception for precision > 0:
To get an integer value use the |
|||||||||||||||
Updated
|
The alias commands can now handle aliases in composite databases. |
|||||||||||||||
Updated
|
|
|||||||||||||||
Updated
|
The alias commands can now handle aliases in composite databases. |
|||||||||||||||
Updated
|
|
New
| Feature | Details |
|---|---|
New
|
New Cypher command for creating and dropping composite databases. |
New
|
New privileges that allow a user to |
New
|
Cypher now supports number literals with underscores between digits. |
New
|
New function which returns whether the given number is |
New
|
Cypher now supports float literals for the values |
New
|
New expression which returns the number of results of a subquery. |
New
|
New sub-clause for |
New
|
New sub-clause for |
New
|
New Cypher command for enabling servers. |
New
|
New Cypher command for setting options for a server. |
New
|
New Cypher command for changing the name of a server. |
New
|
New Cypher command for re-balancing what servers host which databases. |
New
|
New Cypher command for moving all databases from servers. |
New
|
New Cypher command for dropping servers. |
New
|
New Cypher command for listing servers. |
New
|
New privileges that allow a user to create, modify, reallocate, deallocate, drop and list servers. |
New
|
New concise syntax for expressing predicates for which labels a node may have, referred to as label expression. |
New
|
New concise syntax for expressing predicates for which relationship types a relationship may have, referred to as relationship type expression. |
New
|
New syntax that enables inlining of |
Neo4j 4.4
Deprecations
| Feature | Details |
|---|---|
Deprecated
|
Implied grouping keys are deprecated. Only expressions that do not contain aggregations are still considered grouping keys. In expressions that contain aggregations, the leaves must be either:
|
Deprecated
|
Replaced by:
|
Deprecated
|
|
Deprecated
|
Replaced by:
|
Deprecated
|
B-tree indexes are deprecated. B-tree indexes used for string queries are replaced by:
B-tree indexes used for spatial queries are replaced by:
B-tree indexes used for general queries or property value types are replaced by:
These new indexes may be combined for multiple use cases. |
Deprecated
|
|
Deprecated
|
B-tree indexes are deprecated. Replaced by:
|
Deprecated
|
B-tree indexes are deprecated. Replaced by:
|
Deprecated
|
Node key and property uniqueness constraints with B-tree options are deprecated. Replaced by:
Constraints used for string properties will also require an additional text index to cover the string queries properly. Constraints used for point properties will also require an additional point index to cover the spatial queries properly. |
Deprecated
|
Replaced by:
|
Deprecated
|
The ability to use the inequality operators
|
Deprecated
|
Currently, if Please use
|
New
| Feature | Details |
|---|---|
New
|
New clause for evaluating a subquery in separate transactions. Typically used when modifying or importing large amounts of data. See CALL { ... } IN TRANSACTIONS. |
New
|
New syntax for creating constraints, applicable to all constraint types. |
New
|
Property uniqueness constraints now allow multiple properties, ensuring that the combination of property values are unique. |
New Deprecated
|
Property uniqueness constraints now allow multiple properties. Replaced by:
|
New
|
Existence constraints now allow an |
New
|
Token lookup indexes now allow an |
New
|
Allows creating text indexes on nodes or relationships with a particular label or relationship type, and property combination. They can be dropped by using their name. |
New
|
Allows creating range indexes on nodes or relationships with a particular label or relationship type, and properties combination. They can be dropped by using their name. |
New
|
Allows creating node key and property uniqueness constraints backed by range indexes by providing the range index provider in the |
New
|
Allows creating point indexes on nodes or relationships with a particular label or relationship type, and property combination. They can be dropped by using their name. |
New
|
New privilege that allows a user to assume privileges of another one. |
New
|
Show transactions on the current server. The This replaces the procedures |
New
|
Terminate transactions on the current server. The This replaces the procedures |
New
|
New Cypher command for modifying a database by changing its access mode. |
New
|
New privilege that allows a user to modify databases. |
New
|
New privilege that allows a user to modify database access mode. |
New
|
New Cypher command for creating an alias for a database name. Remote aliases are only supported from Neo4j 4.4.8. |
New
|
New Cypher command for creating or replacing an alias for a database name. Remote aliases are only supported from Neo4j 4.4.8. |
New
|
New Cypher command for altering an alias. Remote aliases are only supported from Neo4j 4.4.8. |
New
|
New Cypher command for dropping a database alias. |
New
|
New Cypher command for listing database aliases. Only supported since Neo4j 4.4.8. |
New
|
New privilege that allows a user to create, modify, delete and list aliases. Only supported since Neo4j 4.4.8. |
New
|
New privilege that allows a user to create aliases. Only supported since Neo4j 4.4.8. |
New
|
New privilege that allows a user to modify aliases. Only supported since Neo4j 4.4.8. |
New
|
New privilege that allows a user to delete aliases. Only supported since Neo4j 4.4.8. |
New
|
New privilege that allows a user to show aliases. Only supported since Neo4j 4.4.8. |
New
|
New syntax that enables inlining of |