Snapcraft 9.0 release notes

7 May 2026

Learn about the new features, changes, and fixes introduced in Snapcraft 9.0.

Requirements and compatibility

See System requirements for information on the minimum hardware and installed software.

What’s new

Snapcraft 9.0 brings the following features, integrations, and improvements.

Support for core26

Snapcraft now supports building snaps with the core26 base. Core26 is stable and recommended for all new snaps.

If you’re currently using core24, you can migrate by following the Change from core24 to core26 guide.

If you were already building experimental core26 snaps, you can drop build-base: devel or grade: devel from your project file. As a result, your snaps will be eligible for publication to candidate and stable channels in the Snap Store.

GPU extension

Snaps support hardware-accelerated graphics like OpenGL and Vulkan, but accessing GPU libraries usually requires a full desktop extension, increasing complexity and build time.

A GPU extension has been added for core22 and higher snaps, which provides hardware-accelerated graphics support for apps. If your snap used a desktop extension like GNOME as a workaround for accessing GPU capabilities, replace it with this new extension.

GPU linter

A new linter has been added for snaps that need GPU libraries. If a snap stages GPU libraries with the stage-packages key, the linter suggests using a GPU content snap instead.

The Use the GPU linter guide describes how to address issues flagged by the linter.

Stable .NET extensions

The .NET extensions are now stable and no longer require the SNAPCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS environment variable.

Bazel plugin

The Bazel plugin is now available for parts that need the Bazel build system.

npm Use plugin

A npm Use plugin has been added. This plugin exports npm tarballs to a local directory.

Additionally, the NPM Plugin plugin gained support for the self-contained build attribute.

Together, these changes enable npm parts to build from local sources.

Maven Use plugin

A Maven Use plugin has been added. This plugin deploys Maven artifacts to a local repository, enabling other Maven parts to build from local sources.

Minor features

Snapcraft 9.0 brings the following minor changes.

Promote edge channels with --yes

The promote command now supports promoting releases from the edge channel non-interactively with the --yes flag.

--format option for validation-sets

The validation-sets command now supports a --format option to output validation sets as either a table or JSON.

Interactive key selection for register-key

The register-key command now prompts you to select a key when no key name is given.

Progressive percentage shown after release

The release command now reports the progressive percentage when releasing a snap progressively. For example:

Released 'my-snap' revision 42 to channels: 'stable' for 30% of users

Gradle plugin improvements

The Gradle daemon is now disabled by default when using the Gradle plugin. You can control this behavior with the new gradle-use-daemon key.

The plugin also supports the self-contained build attribute, so that parts using the Maven Use plugin can use local dependencies.

7zip support

Parts can now source 7zip files ending in either .7zip or .7z. Previously, 7zip files had to end in .7zip.

Additionally, 7zip files are now documented in the source-type key in the project file reference.

Backwards-incompatible changes

The following changes are incompatible with previous versions of Snapcraft.

Removed core20 support

Snapcraft 9 removes support for building core20 snaps. Use Snapcraft 8 to continue building core20 snaps.

The support schedule details our remaining commitments to core20.

Renamed commands

We strive to improve the clarity and simplicity of the Snapcraft CLI. Over several versions of Snapcraft 8, we revised many commands and provided deprecation warnings for their old verbs.

Snapcraft 9 removes the old command names. The updated names are:

Old command

New command

list

names

list-registered

names

list-extensions

extensions

list-plugins

plugins

list-tracks

tracks

list-revisions

revisions

list-validation-sets

validation-sets

list-confdb-schemas

confdb-schemas

list-keys

keys

push

upload

snap

pack

Additionally, Snapcraft 9 removes the following command line options. They’re replaced by their equivalent environment variables:

Command

Old option

Replacement

export-login

-experimental-login

Set the environment variable SNAPCRAFT_STORE_AUTH=candid.

login

-experimental-login

Set the environment variable SNAPCRAFT_STORE_AUTH=candid.

login

-with

Export the credentials to the environment variable SNAPCRAFT_STORE_CREDENTIALS.

Removed legacy remote builder

The legacy remote builder has been removed in favor of the current remote builder.

The environment variable to invoke the legacy remote builder, SNAPCRAFT_REMOTE_BUILD_STRATEGY, is no longer used by Snapcraft.

Previously, if Snapcraft couldn’t find remote build credentials, it would try to load credentials from the legacy location $XDG_DATA_DIR/snapcraft/provider/launchpad/credentials.

Snapcraft 9.0 only loads credentials from $XDG_DATA_DIR/snapcraft/launchpad-credentials, and doesn’t use the fallback.

Removed snapcraftctl for core26

Snapcraft 8 deprecated the snapcraftctl command in override scripts for core22 and core24 snaps in favor of craftctl.

Core26 snaps only support craftctl. To use core26, you must replace all instances of snapcraftctl in your scripts.

Core22 and core24 aren’t affected by this change.

Removed forward slashes in core26 part names

Core26 snaps can no longer use forward slashes (/) in part names. The migration guide describes how to update parts with forward slashes in their name.

Removed support for Windows

Snapcraft previously supported running on Windows. This workflow was uncommon, because snaps aren’t compatible with Windows.

Snapcraft 9 drops all official support for Windows. To build snaps on Windows technology, use Windows Subsystem for Linux (WSL) as described in Set up Snapcraft.

Updated documentation system

The documentation base is updated to Canonical’s Sphinx Starter Pack 1.4.0. Going forward, the system will stay in step with the Starter Pack, keeping pace with its features.

The documentation commands that are standard in Canonical products are accessible by prefixing them with docs-:

Command

Result

make docs

Renders the docs as a static set of HTML pages.

make docs-auto

Hosts the docs in a local server you can view in the web browser. When you save a change to a source file, the server updates the doc in real time.

make docs-lint

Checks for problems in the documentation.

make docs-clean

Removes the built docs and temporary files.

make docs-help

See the full list of commands from the Starter Pack.

The Starter Pack is no longer a Git submodule. If you’ve written for Snapcraft 8 or lower, or built the documentation before, you must remove the submodule from your host to continue developing:

git submodule deinit -f docs/sphinx-docs-starter-pack
rm -r docs/sphinx-docs-starter-pack

Fixed bugs and issues

The following issues have been resolved in Snapcraft 9.0.

Snapcraft 9.0.0

  • #6122 Content interface mount targets weren’t created during build for snaps using base core26+ or bare.

  • #6054 The GNOME extension was missing symlink to libproxy.

  • #6148 Dependencies in the core26 snap were included when staging packages.

  • craft-parts#1444 Stage and build packages with versioned dependencies couldn’t be resolved.

  • craft-parts#1492 The Poetry plugin didn’t work for core26 snaps.

Contributors

We would like to express a big thank you to all the people who contributed to this release.

@Amanlem, @asanvaq, @atandrewlee, @bboozzoo, @bepri, @brlin-tw, @canon-cat, @cmatsuoka, @EddyPronk, @ethandcosta, @gcomneno, @Guillaumebeuzeboc, @jahn-junior, @jawadsalwati, @lengau, @mateusrodrigues, @mbeijen, @medubelko, @mr-cal, @Namrathabp, @PraaneshSelvaraj, @Saviq, @smethnani, @steinbro, @tigarmo, @toroleapinc, and @vedantdaterao