Skip to main content

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

ModuleVersionBreaking changes
Satellitev0.1.4️ ️
Mission Controlv0.1.1️ ️
Consolev0.1.3️ ️
Sputnikv0.1.5
CratesVersionBreaking changes
junobuild-cdnv0.3.0⚠️
junobuild-collectionsv0.2.4
junobuild-satellitev0.2.6
junobuild-sharedv0.3.0⚠️
junobuild-storagev0.3.0⚠️️
LibraryVersionBreaking changes
@junobuild/adminv2.2.2
@junobuild/analyticsv0.2.7
@junobuild/cdnv1.3.2
@junobuild/cli-toolsv0.7.2
@junobuild/config-loaderv0.4.5
@junobuild/configv2.1.1
@junobuild/corev2.2.0
@junobuild/core-standalonev2.2.0
@junobuild/did-toolsv0.3.3
@junobuild/errorsv0.1.4
@junobuild/functionsv0.3.2
@junobuild/ic-clientv3.1.2
@junobuild/storagev1.3.2
@junobuild/utilsv0.2.1
CLIVersionBreaking changes
@junobuild/cliv0.9.6
DockerVersionBreaking changes
@junobuild/skylabv0.3.12
@junobuild/satellitev0.3.12
@junobuild/consolev0.3.12
GitHub ActionVersionBreaking changes
junobuild/juno-actionv0.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 and mutate_state helps to handle reading and writing to the states.
  • Apply unwrap_or_trap for handling responses.
  • Migrate id(), caller(), print() and ManualReply to ic_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() and ManualReply to ic_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]
Upgrade junobuild-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"