'Stricter Syntax' written in the style of the Stranger Things logo.

This is a major release where we require Nextflow’s strict syntax (including a bump of the minimum Nextflow version to 25.10.4), prepare for the upcoming Seqera container transition for modules, add more command aliases, and remove some old commands (including pytest migration tooling for modules).

As always, if you have any problems or run into any bugs, reach out on the #tools slack channel.

Highlights

Nextflow strict syntax in the pipeline template

Nextflow’s strict syntax mode is becoming the default from Nextflow v26.04. It enforces more consistent, unambiguous Nextflow code and configs, and improves error messages, and nf-core pipelines will be ready for it.

With this release, the pipeline template is strict syntax compliant and ships with a pre-commit hook that runs nextflow lint on your code.

If you want to understand what strict syntax means in practice and how to update your pipeline, the migration guide covers the most common patterns. For the broader picture of how nf-core is adapting to changes in Nextflow, see the nf-core syntax adoption roadmap blog post.

Auto-generated container config files

nf-core/tools now generates config files specifying the containers for each platform (Docker, Singularity/Apptainer and Conda) and architecture (AMD64, ARM64) that will be used by Nextflow automatically.

Whenever you install, update, or remove a module, we generate the corresponding container config files based on the container section in the meta.yml file (currently only applicable for FastQC and MultiQC and will be handled automatically by the new nf-core container commands in the future (see the corresponding container commands PR)). These files are stored in the conf/ directory.

conf/
├── base.config
├── containers_conda_lock_files_amd64.config
├── containers_conda_lock_files_arm64.config
├── containers_docker_amd64.config
├── containers_docker_arm64.config
├── containers_singularity_https_amd64.config
├── containers_singularity_https_arm64.config
├── containers_singularity_oras_amd64.config
├── containers_singularity_oras_arm64.config
...

You should not edit these config files manually, and Nextflow will automatically use the correct container for each process based on the platform and architecture.

See our blog post for more details about how this works and what will change in the future.

New command aliases

Continuing from previous releases, where we added p, m, and s aliases for the pipelines, modules, and subworkflows main commands, commands below modules, subworkflows, and pipelines now also have shorter aliases so you need to remember (“was it remove or uninstall?”) and type less.

CommandSubcommandAliases
modules & subworkflowsbump-versions (modules only)bump-version, bump, bv, b
createc
installadd, i
lintl
listls
patchp
removeuninstall, rm
testt
updateup, u
pipelinesbump-versionbump, bv, b
createc
downloadd
lintl
listls
schema lintschema l
syncs
test-datasets(command group)test-dataset, tds, td,t
listls
list-brancheslsb

So instead of:

nf-core modules install fastqc
nf-core modules remove samtools/sort
nf-core modules update

You can now write:

nf-core modules add fastqc
nf-core module rm samtools/sort
nf-core m up

Webhook notifications removed

The pipeline template no longer includes webhook-based notifications (hook_url, slackreport, adaptivecard).

Instead, we switched to using dedicated Nextflow plugins for this:

  • Slack: nf-slack (added in the GitHub actions for the megatests in the pipeline template)
  • Microsoft Teams: nf-teams

These plugins integrate directly with Nextflow and give you notification support without coupling it to the pipeline template. Thanks to @FriederikeHanssen for adding this!

Removed deprecated commands

The --migrate-pytest flag and all related migration tooling have been removed. This flag was introduced to help transition modules from pytest-based tests to nf-test, and that migration is now complete.

We now require the pipelines prefix for all pipeline commands. Previously deprecated prefix-free commands, such as nf-core create, have been removed.

Other improvements

Switch from pre-commit to prek in the pipeline template

We switched from pre-commit to prek to run git hooks in the tools repository as well as the pipeline template (and all other nf-core repositories). prek is a fast, Rust-based drop-in replacement for pre-commit that uses the same .pre-commit-config.yaml format, so no changes are needed for your existing configuration. It comes included with nf-core/tools and to replace your pre-commit setup with prek, you run

prek install --overwrite

and you should see moderately to slightly faster pre-commit checks.

Stricter module linting for meta and ext keys and required version topics

The linter now checks that meta and ext variables are used consistently in module main.nf files. Incorrect or misspelled key names are caught early before they cause hard-to-debug runtime issues. Thanks to @mahesh-panchal for adding this!

We also switched the linting of version topics to be strict, meaning that if a module or subworkflow does not emit a version topic, it will fail the linting.

Apptainer support in module template

The module template now includes Apptainer as a container option alongside Singularity. We switched already all nf-core modules to this new syntax and new modules created with nf-core modules create will have Apptainer directives included by default.

RO-Crate: contributors from manifest.contributors

nf-core pipelines rocrate now reads manifest.contributors from nextflow.config and maps those entries into the RO-Crate metadata. Pipeline contributors declared in the Nextflow manifest will automatically appear in the generated crate without any extra configuration. Thanks to @muffato for adding this feature, that was on my wishlist for a long time!

Module linting: compressed file syntax in stubs

The linter now checks that stub blocks use syntax according to the nf-core module specifications for gzipped output files.

AI and LLM contribution guidelines

Following the nf-core and AI blog post, we added guidance to the pipeline template for contributors using AI and LLM tools. It covers how to review, test, and mention AI-assisted contributions. Thanks @jfy133 for adding this!

Sync: respects an existing defaultBranch

nf-core pipelines sync no longer overwrites the defaultBranch setting in nextflow.config if it is already present. This (hopefully) prevents sync from clobbering intentional per-pipeline branch configuration.

Changelog

You can find the complete changelog and technical details on GitHub.


Published on
28 April 2026
Written by