Migrating to 25.04
Nextflow 25.04 was released on May 8, 2025.
New features
Strict syntax
The strict syntax is a strict parser for Nextflow DSL2 that implements the Nextflow language specification. Originally introduced by the Nextflow language server alongside Nextflow 24.10, the strict syntax is now available in the Nextflow CLI.
The strict syntax is disabled by default. It can be enabled by setting the environment variable NXF_SYNTAX_PARSER=v2. See Preparing for strict syntax for details.
Linting and formatting
The nextflow lint command checks Nextflow scripts and config files for errors using the strict syntax. It can also format Nextflow files using the same formatter as the Nextflow language server. See lint for details.
Workflow outputs (third preview)
The third preview of workflow outputs introduces the following breaking changes from the previous version:
The
publish:section can only be specified in the entry workflow.Workflow outputs in the
publish:section are assigned instead of using the>>operator. Output names must be valid identifiers.By default, output files are published to the base output directory, rather than a subdirectory corresponding to the output name.
The syntax for dynamic publish paths has changed. Instead of defining a closure that returns a closure with the
pathdirective, the outer closure should use the>>operator to publish individual files. See Publishing files for details.The
mapperindex directive has been removed. Use amapoperator in the workflow body instead.
See Migrating to workflow outputs to get started.
Topic channels (out of preview)
Topic channels, introduced in Nextflow 24.04 as a preview feature, have been brought out of preview, which means that they can be used without the nextflow.preview.topic feature flag.
Data lineage
This release introduces built-in provenance tracking, also known as data lineage. When lineage.enabled is set to true in your configuration, Nextflow will record every workflow run, task execution, output file, and the links between them.
You can explore this lineage from the command line using the lineage command. Additionally, you can refer to files in the lineage store from a Nextflow script using the lid:// path prefix as well as the fromLineage channel factory.
See Getting started with data lineage to get started.
Enhancements
Improved inspect command
Previously, the nextflow inspect command included all processes that were invoked in a preview run. Now, the inspect command includes all processes that are included by the entry workflow (directly or indirectly), which has several benefits:
It includes all processes that could potentially be invoked by the workflow, not just the processes that are invoked for a particular run configuration.
It’s faster, as it doesn’t need to evaluate the entry workflow – only the includes.
It can be run as
nextflow inspect <PIPELINE>, without specifying any parameters or config profiles.
See inspect to learn more about the inspect command.
Plugin version ranges
When specifying a plugin, the plugin version can now be prefixed with ~ to pin the major and minor version while allowing the latest patch release. This syntax makes it possible to pin the plugin version while automatically using new patch releases.
See Plugins for details.
Improved publish error handling
Nextflow will terminate the run if the thread pool responsible for publishing files takes too long. Previously, this timeout was reported as a warning. Now, it is reported as an error.
The previous behavior can be restored with the following config setting:
workflow.output.ignoreErrors = true
Breaking changes
Nextflow now requires Java 17 or newer. See Requirements for instructions to install Java 17.
The HyperQueue executor now requires HyperQueue 0.20.0 or later.
Deprecations
The process
shellsection has been deprecated. See Shell for details.Nextflow will report a warning if it encounters a process
shelldirective that contains newlines. This warning will become an error in a future release.The
-with-weblogCLI option has been deprecated. See nextflow-io/nf-weblog to learn how to use thenf-weblogplugin.
Miscellaneous
New config option:
aws.batch.terminateUnschedulableJobsNew config option:
azure.batch.jobMaxWallClockTimeNew config option:
fusion.snapshotsNew config option:
google.batch.gcsfuseOptionsNew config option:
google.batch.networkTagsNew config option:
workflow.output.copyAttributesNew environment variable:
NXF_PLUGINS_ALLOWEDNew plugin extension point:
TraceObserverFactoryV2New standard library function:
env()Support
diskdirective for Azure Batch