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
No linting of donation links¶
The metadata linter no longer checks for the donation key, as this key was generally rarely set and was silenced more often than not.
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 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Additionally, Snapcraft 9 removes the following command line options. They’re replaced by their equivalent environment variables:
Command |
Old option |
Replacement |
|---|---|---|
|
|
Set the environment variable |
|
|
Set the environment variable |
|
|
Export the credentials to the environment variable |
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 |
|---|---|
|
Renders the docs as a static set of HTML pages. |
|
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. |
|
Checks for problems in the documentation. |
|
Removes the built docs and temporary files. |
|
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