Skip to main content

v0.0.48

Summary

This release introduces a significantly enhanced approach to the Analytics.

Native HTTP requests

Analytics data is now collected via native HTTP request update instead of custom API endpoints. This change enables:

  • Removal of web workers and IndexedDB usage in the JavaScript client.
  • A lighter and faster JS library, now under 3KB gzipped (over 90% smaller).
  • Reduced complexity for developers integrating analytics (e.g. no web worker to copy).

⚠️ Restricted Endpoints ⚠️

Previous analytics endpoints are still available but are now restricted to controllers.

[!CAUTION] You must upgrade both your Orbiter and JS library at the same time.

While this could have shipped at a later stage, it makes sense to provide it now as this release is dedicated solely to Analytics.

More Data supported by the Dashboard

The analytics dashboard now supports paginated data fetching to work around execution limits that previously capped visible page views at ~70k. Developers can now choose time ranges like:

  • A month
  • A week
  • 1 day
  • Half a day
  • 8 hours
  • 4 hours

[!IMPORTANT] Use pagination wisely more granular queries can add load to both the Orbiter and the UI. Stick to the default if possible.

Dashboard UI Enhancements

The dashboard received a visual refresh and also includes new insights:

  • Top 10 time zones
  • Operating systems used by visitors (if opted-in)

A new feature to export page views has also been added.

Upgrading your App

Upgrading the Orbiter can be done as usual. To upgrade your frontend to use the new lightweight analytics client:

npm rm @junobuild/analytics && npm i @junobuild/analytics

You can also safely remove any postinstall scripts and the related web workers code you may have added to your static folder, they are no longer needed and won't be used anymore.

Also note that initOrbiter is no longer asynchronous and can now be called without await.

// Previously
await initOrbiter();

// New
initOrbiter();

Documentation

The documentation has been updated to reflect these changes. You can find the latest usage and integration guide for the new analytics system here:

👉 https://juno.build/docs/build/analytics/

New Juno Analytics Dashboard UI

Overview

ModuleVersionBreaking changes
Orbiterv0.2.0⚠️ ️
CratesVersionBreaking changes
junobuild-storagev0.1.1
junobuild-collectionsv0.1.1
junobuild-sharedv0.1.1
LibraryVersionBreaking changes
@junobuild/corev0.1.12
@junobuild/core-standalonev0.1.12
@junobuild/adminv0.2.1
@junobuild/analyticsv0.2.0⚠️
CLIVersionBreaking changes
@junobuild/cliv0.2.16
PluginsVersionBreaking changes
@junobuild/vite-pluginv3.4.0
@junobuild/nextjs-pluginv3.4.0
DockerVersionBreaking changes
@junobuild/skylabv0.0.55
@junobuild/satellitev0.0.55
@junobuild/consolev0.0.55

Changes

Here is a list of changes included in this release:

Console (Backend)

No changes.

Console (Frontend)

The Console UI/UX has been improved as follows:

Features

  • Collect page views, track events, and performance metrics with time-based pagination.
  • Add an option to specify the pagination length (month, week, day, etc.). Default set to a month.
  • Save analytics filter (from / to) in session. This way, navigating away and returning to analytics restores the previous timeframe.
  • Display top 10 time zones.
  • If opted-in, display operating system metrics.
  • Integrate chart and review summary of the analytics presentation.
  • Format analytics metric numbers with thousands separators.
  • Add visual progression indicators for tracked metrics.
  • Export page views.
  • Gzip exported page views and tracked events.
  • Performance metrics are now disabled by default in the options list (if not yet activated).

Fix

  • The "Copy" Satellite ID call-to-action in the Orbiter configuration modal was incorrectly submitting the form on click. This has been fixed.

Styles

  • Redo narrow main max-width for the launch page and CLI screens.

Refactoring

  • Move and rename various modules for better readability and file structure organization.

Build

  • Update dependencies.

Satellite

No changes released in this version.

Mission Control

No changes released in this version.

Orbiter

The Orbiter has been updated as follows:

Breaking Changes ⚠️

  • API endpoints set_page_view, set_page_views, set_track_event, set_track_events, set_performance_metric, and set_performance_metrics are now restricted to controllers.

Features

  • Implement a new HTTP request system using http_request_update for persistence to collect metrics. The API responds with:
    • 404 for unknown requests
    • 400 when incorrectly formatted data is submitted
    • 403 when data is collected for a Satellite ID where the feature is not enabled
    • 405 when unsupported methods (non-POST) are used on metrics endpoints
    • 200 for valid POST requests on /view, /views, /event, /events, /metric, and /metrics when data is successfully collected and persisted
  • Provide time zone statistics including a top 10 list based on page views.
  • Device metrics now prioritize screen size to infer client type. If unavailable, it falls back to user-agent parsing; if that fails, it reverts to legacy methods.
  • If available, metrics for operating systems used by clients are now included.
  • Preliminary support added for specifying a restricted origin per Satellite ID. Once supported by boundary nodes, this will allow for specific CORS headers instead of *.

Refactoring

  • Move crates and types to align the codebase with the newly added features and structure.

Build

  • Use the ic-http-certification crate to provide certified HTTP capabilities.

Features

Observatory

No changes released in this version.

Sputnik 🆕

No changes released in this version.

Library

Please refer to the releases for details.

CLI

Please refer to the releases for details.

Plugins

Please refer to the releases for details.

Templates

Please refer to the create-juno and satellite-template releases for details.

GitHub Action

Please refer to the releases for details.

Docker

Please refer to the releases for details.

Proxy

Please refer to the releases for details.