v0.0.57
Summary
This release introduces a major new feature for those who build applications: you can now use stable memory to serve your frontend.
In addition, the JS core library supports sign-in with Internet Identity on the domain id.ai.
Hosting Memory: Heap and Stable
The new feature lets you decide how your frontend is kept in memory and served on the web, either from heap memory (as before) or, optionally, from stable memory.
For websites, we recommend using heap. It delivers the fastest responses and is a good fit when speed and SEO are the priority.
For applications, stable seems to be the path forward and is the recommended option. It is slightly slower according to our tests but acceptable for single-page applications, and it has the advantage of not limiting the total asset size. This can be useful to prevent upgrade issues when your heap memory approach 1 GB.
When provisioning a new satellite, the Console will ask what you are building in order to configure this option by default.
You can also switch between heap and stable in the Console under the new tab Hosting > Settings, provided no files are being served at the time. This way, you can make your own tests and choose the strategy that works best for your project.
<img width="3114" height="2160" alt="Brave Browser 2025-09-22 13:46:58 - Frame 89" src="https://github.com/user-attachments/assets/f1d132a8-c9bf-4848-b382-983a9a88b730" />Overview
Module | Version | Breaking changes |
---|---|---|
Satellite | v0.1.4 | ️ ️ |
Mission Control | v0.1.1 | ️ ️ |
Console | v0.1.3 | ️ ️ |
Sputnik | v0.1.5 | ️ |
Crates | Version | Breaking changes |
---|---|---|
junobuild-cdn | v0.3.0 | ⚠️ |
junobuild-collections | v0.2.4 | ️ |
junobuild-satellite | v0.2.6 | |
junobuild-shared | v0.3.0 | ⚠️ |
junobuild-storage | v0.3.0 | ⚠️️ |
Library | Version | Breaking changes |
---|---|---|
@junobuild/admin | v2.2.2 | |
@junobuild/analytics | v0.2.7 | |
@junobuild/cdn | v1.3.2 | |
@junobuild/cli-tools | v0.7.2 | ️ |
@junobuild/config-loader | v0.4.5 | |
@junobuild/config | v2.1.1 | |
@junobuild/core | v2.2.0 | |
@junobuild/core-standalone | v2.2.0 | |
@junobuild/did-tools | v0.3.3 | |
@junobuild/errors | v0.1.4 | |
@junobuild/functions | v0.3.2 | |
@junobuild/ic-client | v3.1.2 | |
@junobuild/storage | v1.3.2 | |
@junobuild/utils | v0.2.1 |
CLI | Version | Breaking changes |
---|---|---|
@junobuild/cli | v0.9.6 |
Docker | Version | Breaking changes |
---|---|---|
@junobuild/skylab | v0.3.12 | |
@junobuild/satellite | v0.3.12 | |
@junobuild/console | v0.3.12 |
GitHub Action | Version | Breaking changes |
---|---|---|
junobuild/juno-action | v0.4.19 |
Changes
Here is a list of changes included in this release:
Console (Backend)
The Console's backend has been updated with the following changes:
Features
- Support for creating Satellites with storage options.
- Replace the usage of the CDN crate for handling assets and certification on the heap with a custom implementation. This change was necessary because the asset features were removed from the CDN strategies.
Refactoring
- Move and rename various modules for better scope and readability.
- Use
read_state
andmutate_state
helps to handle reading and writing to the states. - Apply
unwrap_or_trap
for handling responses. - Migrate
id()
,caller()
,print()
andManualReply
toic_cdk@0.18
.
Console (Frontend)
The Console UI/UX has been improved as follows:
Features
- Integrate "What are you building?" question into the wizard for creating Satellites. If Website is selected, use heap memory for hosting; if Application is selected, use stable memory.
- Add new "Settings" tab to "Hosting" which displays what type of memory is used to serve the frontend.
- Support new function
switch_storage_system_memory
to toggle memory type for serving the frontend and CDN releases. - Avoid fetching release metadata from CDN in development. This allows devs to work offline with Skylab.
- Replace QR code generator library for maintainability reasons.
- Review boot sequences in main layout.
- Display a new animated spinner - within
app.html
- to be displayed then the Console is loading.
Fix
- Make checkbox labels clickable.
Style
- Narrow centered popover width (except on Spotlight).
- Prevent overflow and stacking of scrollbars in the Satellites switcher component.
- Remove data and collections header animation to prevent layout shifts on navigation.
Build
- Bump AgentJS v3.
- Bump PicJS and other dev dependencies.
- Use latest Juno libraries.
- Remove
Buffer
and Vite Node polyfills.
Chore
- Pin TypeScript version to resolve installation issues in the Juno Docker image.
Satellite
The Satellite has been updated as follows:
Features
- Handle and serve assets from the
#dapp
and#_juno/releases
collections in either heap or stable memory. - Handle and serve automatically generated
.well-known
assets in either heap or stable memory. - Replace the CDN crate with a custom implementation for asset handling and certification on the heap.
- Expose a new endpoint
switch_storage_system_memory
to toggle between heap and stable memory the system collections. - Initialize new Satellites with a storage option to configure system collections accordingly.
- Make init arguments declaration explicit.
Refactoring
- Define types for updating
.well-known
assets. - Apply
unwrap_or_trap
for handling responses. - Migrate
id()
,caller()
,print()
andManualReply
toic_cdk@0.18
.
Mission Control
The Mission Control has been updated as follows:
Features
- Create Satellites with configurable storage options.
- Declare init arguments explicitly.
- Migrate to
ic_cdk@0.18
.
Refactoring
- Rename init arguments for clarity.
- Apply
unwrap_or_trap
for handling responses.
Orbiter
No changes released in this version.
Observatory
No changes released in this version.
Sputnik
Sputnik inherits the improvements of the Satellite.
Serverless Functions
Upgrade your Rust Serverless Functions using the following crates:
[!IMPORTANT]
Upgradejunobuild-satellite
iteratively to ensure compatibility.
[dependencies]
candid = "0.10.19"
ic-cdk = "0.18.5"
ic-cdk-macros = "0.18.5"
serde = "1.0.225"
serde_cbor = "0.11.2"
junobuild-satellite = "0.2.6"
junobuild-macros = "0.1.1"
junobuild-utils = "0.1.3"