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/
Overview
Module | Version | Breaking changes |
---|---|---|
Orbiter | v0.2.0 | ⚠️ ️ |
Crates | Version | Breaking changes |
---|---|---|
junobuild-storage | v0.1.1 | ️ |
junobuild-collections | v0.1.1 | ️ |
junobuild-shared | v0.1.1 |
Library | Version | Breaking changes |
---|---|---|
@junobuild/core | v0.1.12 | |
@junobuild/core-standalone | v0.1.12 | |
@junobuild/admin | v0.2.1 | |
@junobuild/analytics | v0.2.0 | ⚠️ |
CLI | Version | Breaking changes |
---|---|---|
@junobuild/cli | v0.2.16 |
Plugins | Version | Breaking changes |
---|---|---|
@junobuild/vite-plugin | v3.4.0 | |
@junobuild/nextjs-plugin | v3.4.0 |
Docker | Version | Breaking changes |
---|---|---|
@junobuild/skylab | v0.0.55 | |
@junobuild/satellite | v0.0.55 | |
@junobuild/console | v0.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
, andset_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 requests400
when incorrectly formatted data is submitted403
when data is collected for a Satellite ID where the feature is not enabled405
when unsupported methods (non-POST) are used on metrics endpoints200
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.