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, runjuno 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
Module | Version | Breaking changes |
---|---|---|
Console | v0.1.2 | ️ ️ |
Satellite | v0.1.2 | ️ ️ |
Sputnik | v0.1.3 | ️ |
Crates | Version | Breaking changes |
---|---|---|
junobuild-cdn | v0.2.2 | |
junobuild-collections | v0.2.2 | ️ |
junobuild-satellite | v0.2.4 | |
junobuild-shared | v0.2.2 | |
junobuild-storage | v0.2.2 | ️ |
Library | Version | Breaking changes |
---|---|---|
@junobuild/admin | v2.0.0 | ⚠️ |
@junobuild/cdn | v1.1.0 | ⚠️ |
@junobuild/cli-tools | v0.6.1 | ⚠️ |
@junobuild/config | v2.0.0 | ⚠️ |
@junobuild/core | v1.1.1 | |
@junobuild/core-standalone | v1.1.1 | |
@junobuild/did-tools | v0.2.4 | |
@junobuild/functions | v0.2.7 | |
@junobuild/ic-client | v1.1.0 | 🆕 |
@junobuild/storage | v1.1.0 | ⚠️ |
CLI | Version | Breaking changes |
---|---|---|
@junobuild/cli | v0.8.0 | ⚠️ |
Plugins | Version | Breaking changes |
---|---|---|
@junobuild/vite-plugin | v4.1.4 | |
@junobuild/nextjs-plugin | v4.1.4 |
Docker | Version | Breaking changes |
---|---|---|
@junobuild/skylab | v0.3.0 | |
@junobuild/satellite | v0.3.0 | |
@junobuild/console | v0.3.0 |
GitHub Action | Version | Breaking changes |
---|---|---|
junobuild/juno-action | v0.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
andcommit_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"