Release Date: 24 June 2025

The Neo4j Aura June release has started to roll out, commencing on AuraDB Free and progressing to higher tiers later. 

Release Note for Neo4j 2025.06 (24 June 2025)

Surface for Developers and Data Scientists

Cypher 
 
  • 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 Aura instance. You can specify a query language with the Cypher command ALTER DATABASE neo4j SET DEFAULT LANGUAGE CYPHER <5/25>. Individual queries can override the language with the CYPHER <version> prefix. Existing and new Aura instances will default to CYPHER 5. Using CYPHER 25 requires user action. See the Cypher Manual: Select Cypher version.
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 the 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. See the Cypher Manual: Shortest paths.
  • 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.
 
  • 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.
    • An error is now thrown when trying to revoke a privilege that can not exist.
    • 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.
 
Changes for both Cypher 5 and Cypher 25
  • Ambiguous graph references: Quoting rules for graph references (database names, alias names, composite constituent names) previously allowed to distinguish ambiguous names. This is now disallowed; whatever is used first is accepted. Attempting to use the same string again in another context will be rejected. For example, if after defining a constituent alias ‘const’ within a composite database ‘comp’ we try to create an alias named ‘comp.const’ results in a ‘Graph reference already exists’ exception. Using the identifier ‘comp.const’ for both leads to ambiguity.  See the Cypher Manual: Graph references.

Neo4j Server

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 the index, which in turn could cause a database panic by not being able to apply a transaction that had been written to the transaction log. It was a rare case affecting only indexes with values larger than about 4000 bytes, where some values also have to have the first ~4000 bytes equivalent to other values. Not only that, but it also depends on the structure of the GBP-Tree at the moment of the update to the index. Existing indexes might already have values of this composition and could possibly still run into the GSPP write error, even on a version with the fix. It is unlikely, but if it should happen, an index rebuild will solve it. Newly created indexes from this version should not have any problems.
    • Fixes an issue dropping a constraint while another constraint or index was created. The end result would be a failure for the transaction, dropping the constraint; a retry of that transaction would likely succeed. 
    • Fixes an issue where parallel recovery would be less parallel than optimally possible.
    • 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.
  Please refer to the changelog for full details of the changes.  

Deprecations