Release Date: 2 July 2025
Release Note for Neo4j 2025.06 (2 July 2025)
Cypher
Cypher versioning
- IMPORTANT: Introduction of query language versioning. From this release, the Neo4j DBMS supports two Cypher versions: the backwards-compatible Cypher 5 version, which is frozen in time, with no new features added but only bug fixes and security updates, and the evolving Cypher 25 version. The query language can be managed per database. You can specify a query language on database creation and with the Cypher command to ALTER a database. The setting db.query.default_language controls the default language used for new databases that do not specify an explicit version as part of creation. Individual queries can override the language with the CYPHER <version> prefix. Existing and new databases will default to CYPHER 5. Using CYPHER 25 requires user action. See the Cypher Manual: Select Cypher version and Operations documentation.
Cypher 25
- Introduction of WHEN/ELSE branches, which enable the composition of conditional queries, similar to the IF statement in other programming languages. See the Cypher Manual: Conditional queries (WHEN).
- Graph Pattern matching. Added support for walk semantics (relationships can be repeated) with the new REPEATABLE ELEMENTS match mode. Trail semantics (relationships are not repeated) is still the default match mode, and can now also be explicitly specified with MATCH DIFFERENT RELATIONSHIPS. See the Cypher Manual: Match modes.
- Introduction of the FILTER clause, which allows mid-query filtering with a dedicated standalone clause. See the Cypher Manual: FILTER.
- Introduction of the LET clause, which allows mid-query projection of additional variables with a dedicated standalone clause. See the Cypher Manual: LET.
- Introduction of a new NEXT clause used for the linear composition of queries. See the Cypher Manual: Sequential queries (NEXT).
- The WITH statement between writing and reading clauses is no longer required. See the Cypher Manual: WITH..
- Introduction of 4 new hyperbolic trigonometric functions: coth(), cosh(), sinh(), and tanh(). See the Cypher Manual: Trigonometric functions.
- Allow optional keyword PROPERTY to the uniqueness constraint filtering for SHOW CONSTRAINTS, SHOW [NODE|REL[ATIONSHIP]] [PROPERTY] UNIQUE[NESS] CONSTRAINTS. This also updates the returned constraint types for the uniqueness constraints to include the property keyword, NODE_PROPERTY_UNIQUENESS and RELATIONSHIP_PROPERTY_UNIQUENESS. See the Cypher Manual: SHOW CONSTRAINTS.
- Support for UNION [ALL] with different ordering of return items has been un-deprecated.
- The keyword ALL can now be added after a RETURN and WITH as the explicit form of the clause without duplicate removal. See the Cypher Manual: RETURN ALL and WITH ALL.
- The replace() function has been extended with an optional limit argument. See the Cypher Manual: replace().
- Parameters can now be used in SHORTEST and ANY path patterns. Documentation is available here.
- Add new syntax from GQL for enclosing certain queries in curly braces (either top-level queries or argument queries to a composite query such as UNION or UNION ALL). See the Cypher Manual: top-level braces with UNION and top-level braces with conditional queries.
- Allow parameters to begin with a few more characters not available before, formally implementing the extended identifier character set specified by GQL. See the Cypher Manual: Parameters.
- CREATE DATABASE will accept parameters of type Long (java.Long) in addition to the previously accepted Int (java. Int).
- Added the option seedSourceDatabase to CREATE DATABASE, used to filter the backup artifacts that need to be restored.
- Removals and changes incompatible with Cypher 5
-
- The SHOW TRANSACTION columns startTime and currentQueryStartTime change type to ZONED DATETIME (from STRING). Update the default value when unavailable to null for several columns: clientAddress, outerTransactionId, currentQuery, currentQueryId, parameters, planner, runtime, indexes, currentQueryStartTime, currentQueryElapsedTime, currentQueryCpuTime, currentQueryIdleTime, and currentQueryStatus. See the Cypher Manual: SHOW TRANSACTIONS.
- The seedCredentials option to CREATE DATABASE has been removed. Credentials for seeding from cloud buckets are now loaded via the cloud providers’ built-in mechanisms.
- An error is now thrown when trying to revoke a privilege that can not exist.
- Removed the CREATE DATABASE option existingDataSeedInstance. It is replaced by the new option existingDataSeedServer.
- Administration commands using WAIT will return the cluster state as notifications instead of as a result.
- The indexProvider option has been removed from the create index and constraint commands. See the Cypher Manual: Removed features.
- The column propertyTypes returned by the procedures db.schema.nodeTypeProperties() and db.schema.relTypeProperties() previously returned a list of strings representing the potential Java types for a given property. It now returns a list of strings representing the possible Cypher Types the given property has. See the Operations Manual: db.schema.relTypeProperties() and db.schema.nodeTypeProperties().
- Remove support for allowing Nodes or Relationships on the right hand side of a SET properties clause. See the Cypher Manual: Removed features.
- String graph references (names of graphs) changes – can impact graph names that use the character . (dot).
- Graph references in graph function arguments containing additional dots apart from the dot separating the composite database and the alias making up a constituent require no quotes of the name part containing dots in Cypher 25, e.g.: USE graph.byName(“composite.with.dot.constituent”). See the Cypher Manual: Graph references.
- Graph reference resolution: In Cypher 25 graph reference resolution has been unified across admin cypher literals, admin cypher parameters, procedures and functions. It is no longer allowed to specify composite and constituent as separate parts (`compdb`.`constituent`). Instead, the entire graph reference should be specified as a single symbolic name (compdb.constituent). Whether ‘compdb’ should be interpreted as a composite or as part of a local alias name is inferred by the existence of a composite with that name. See the Cypher Manual: Graph references.
- Subquery expressions. Imported variables were previously included as grouping keys inside aggregations within COLLECT, COUNT, and EXISTS subquery expressions, causing the aggregation to produce no results when no rows matched. This has been fixed in Cypher 25; imported variables are now handled as constants inside subquery expressions. Cypher 5 maintains the original behaviour, since existing applications might rely on it.
- The character \u0085 (next line) is considered whitespace and not allowed in identifiers. See the Cypher Manual: Removed features.
- Disallow use of previously deprecated characters in identifiers, see documentation for the full list. See the Cypher Manual: Removed features.
- The existingData option to CREATE DATABASE is deprecated and has been made optional.
Changes for both Cypher 5 and Cypher 25
- Ambiguous graph references (database name, alias name and composite constituent names) are now disallowed. Previous versions of Neo4j considered the references ‘alias’ within ‘comp’ different from ‘comp.alias’ even though they are both referred to as ‘comp.alias’. Attempting to create an ambiguous reference now results in a ‘Graph reference already exists’ exception. See the Cypher Manual: Graph references
Neo4j Server
Configuration
- cluster.internal.* is removed from the default value list in metrics settings. These metrics were not intended for customer use. Documentation is available here.
- db.query.default_language – This setting determines the default language used for new (and initial) databases unless specified as part of CREATE or ALTER database statement.
Cypher-shell
- Cypher Shell changed the default value of –error-format to gql.
Fixes
- Server
- Fixes a bug in the GBP-Tree that could cause a GSPP write error on applying an update to a vector index. If this issue still occurs the index should be rebuilt.
- Fixes an issue dropping a constraint while another constraint or index is being created. This would result in the failure of the transaction dropping the constraint.
- Fixes an issue that prevents parallel recovery from using all available resources.
- Fixes sporadic checkpoint and backup errors introduced in 2025.05.
- Cypher 5 and 25
- Fixes a bug when comparing a node degree expression to a property access.
- Fixes an issue where a hint could not be fulfilled when it was on an OPTIONAL MATCH that was used together with a DISTINCT.
- Fixes a bug supporting local constituents as a home database. Now constituents targeting a database in the current DBMS are not supported as a users home database, as constituents should only be accessed when connected to the associated composite database
Deprecations
- For all server changes and deprecations, see Operations Manual -> Changes, deprecations, and removals in Neo4j 2025.x
- For all Cypher language changes, deprecations, and compatibility, see
Bundled products
The following products have been included in the distribution – available in /products directory unless stated otherwise – and are fully compatible with this release.- APOC Core 2025.06.0 – The most popular community library developed for the database, is fully supported (included in Labs directory).
- Bloom 6.x-2.22.1 – A beautiful and expressive data visualization tool to quickly explore and interact with Neo4j’s graph data platform – no coding required. Please refer to the release notes for details. (Requires a License)
- Browser 2025.06.0 – Neo4j Browser is a tool for developers to interact with the graph. It is the default interface for both Enterprise and Community Editions (included in the /libs directory) of the Neo4j database.
- Neo4j GenAI Plugin 2025.06.0 -The GenAI plugin delivers integrations with various generative AI services, including support for transforming text data into vector embeddings using VertexAI, OpenAI, or Amazon Bedrock. The resulting vector embeddings can be used together with Neo4j’s vector search indexes.
- Neo4j Graph Data Science 2.19.0 is a compatible version of the connected data analytics and machine learning platform that helps you understand the connections in big data to answer critical questions and improve predictions. Please refer to the release notes for further details. (GDS Enterprise requires a License. )
- Neo4j Ops Manager 1.13.0 is a UI-based tool that enables Administrators to operate and observe all of their Neo4j Database Management Servers. Now includes support for Neo4j’s any-to-any upgrade. Please refer to the release notes for details. (Included in Enterprise).