Skip to main content

v0.0.54

Summary

This release focuses on Storage, and more specifically on the deployment of applications and how they are served on the web.

It fixes an issue with redirection and introduces several improvements to the tooling, including enhancements to asset precompression, new deployment options, and performance optimizations.

📦 Precompression

The old gzip configuration option of the juno.config has been removed and replaced by a new precompress section.

By default, the CLI precompresses .js, .mjs, .css, and .html files in the source folder using Gzip. You can now:

  • Choose the compression algorithm: "gzip" (default) or "brotli".
  • Control what happens to the original files with mode: "both" (default) or "replace".
  • Customize the file matching pattern with pattern.

[!TIP] Brotli generally achieves smaller sizes for text-based assets such as HTML, CSS, and JavaScript, which means faster delivery on the web but slower compression during deployment.

Example:

export default defineConfig({
	satellite: {
		ids: {
			production: 'qsgjb-riaaa-aaaaa-aaaga-cai'
		},
		source: 'dist',
		precompress: {
			algorithm: 'brotli',
			pattern: '**/*.css'
		}
	}
});

[!NOTE] If you change the precompress configuration for an already deployed project, run juno clear before redeploying to ensure the new configuration is applied.

replace option

When using mode: "replace", only the compressed version of each file is uploaded to Storage.

At runtime, these files are served with the correct Content-Encoding header so browsers can decode them automatically — meaning the original, uncompressed source file is not needed unless it’s required for debugging, external tools, or non-HTTP use cases.

[!TIP] Why it matters? Skipping the upload of original (uncompressed) files can importantly reduce deployment time and Storage usage — especially for projects with many frontend assets.

export default defineConfig({
	satellite: {
		ids: {
			production: 'qsgjb-riaaa-aaaaa-aaaga-cai'
		},
		source: 'dist',
		precompress: {
			mode: 'replace'
		}
	}
});

🚀 CLI Deploy

Thanks to two new endpoints added to Satellites, the deployment process now groups the initiation and validation of batches of files when uploading the chunks of the frontend of your applications.

In production tests, this reduced the deployment time of a relatively simple application by 15–20%. It also lowers deployment costs since fewer update calls are performed.

You can benefit from this improvement by upgrading your Satellites and local CLI. The GitHub Action automatically inherits these optimizations.

--batch option

In addition, the CLI supports a new --batch option to control how many files are uploaded in parallel during deployment. The default is 20.

juno deploy --batch 50

📊 Progress Display

Deployment progress now provides clearer feedback — for example, showing when a proposal is being opened and grouping file batches with their chunks.

🔀 Redirection

An issue that could cause some redirects to misbehave when serving your application from Storage has been addressed.
Redirects should now work reliably for all routes and resources.

Overview

ModuleVersionBreaking changes
Consolev0.1.2️ ️
Satellitev0.1.2️ ️
Sputnikv0.1.3
CratesVersionBreaking changes
junobuild-cdnv0.2.2
junobuild-collectionsv0.2.2
junobuild-satellitev0.2.4
junobuild-sharedv0.2.2
junobuild-storagev0.2.2
LibraryVersionBreaking changes
@junobuild/adminv2.0.0⚠️
@junobuild/cdnv1.1.0⚠️
@junobuild/cli-toolsv0.6.1⚠️
@junobuild/configv2.0.0⚠️
@junobuild/corev1.1.1
@junobuild/core-standalonev1.1.1
@junobuild/did-toolsv0.2.4
@junobuild/functionsv0.2.7
@junobuild/ic-clientv1.1.0🆕
@junobuild/storagev1.1.0⚠️
CLIVersionBreaking changes
@junobuild/cliv0.8.0⚠️
PluginsVersionBreaking changes
@junobuild/vite-pluginv4.1.4
@junobuild/nextjs-pluginv4.1.4
DockerVersionBreaking changes
@junobuild/skylabv0.3.0
@junobuild/satellitev0.3.0
@junobuild/consolev0.3.0
GitHub ActionVersionBreaking changes
junobuild/juno-actionv0.4.6

Changes

Here is a list of changes included in this release:

Console (Backend)

The Console backend was extended similarly to the Satellite, as it shares the same Storage capabilities.

Console (Frontend)

The Console UI/UX has been improved as follows:

Features

  • Display developer and Mission Control IDs in the Access Keys table.
  • Change default filters for Analytics to the last 2 weeks instead of a month.

Build

  • Upgrade to the latest Juno dependencies.
  • Integrate the new ic-client library.
  • Bump a few other dependencies.

Satellite

The Satellite has been updated as follows:

Features

  • Add new endpoints init_proposal_many_assets_upload and commit_proposal_many_assets_upload to batch the initialization and validation of deploy.

Fix

  • Wildcard rewrite for redirects misbehavior.

Build

  • Bump Rust v1.89.0 and resolve related warnings.

Mission Control

No changes released in this version.

Orbiter

No changes released in this version.

Observatory

No changes released in this version.

Sputnik

Sputnik inherits the improvements of the Satellite.

Serverless Functions

If you are using Serverless Functions, you can upgrade the following crates accordingly:

[dependencies]
junobuild-satellite = "0.2.4"