Cube Core v0.29 release includes tons of goodies for developers in the form of Playground, not to mention incredible improvements to Cube Store and reliability improvements to our database drivers.

What we're really excited to announce is two new capabilities:

Breaking changes and deprecations

  • Remove Node.js 10.x support
  • Remove Node.js 15.x support
  • Deprecate Node.js 12.x
  • The Docker images for Cube now use Node.js 14.x
  • The Angular frontend integration now only supports Angular 12.x


  • Cube Store now correctly shuts down when the Cube server exits
  • Fixes an issue where a pre-aggregation may not be found after it was created by a Refresh Worker
  • Add ability to pass through generic-pool options for Redis


  • Query your cubes with our new MySQL-compatible SQL API. This means you can now connect Cube to third-party BI tools. It launches with support for Superset; we're adding support for Metabase, Tableau, PowerBI and even Microsoft Excel.

Query format

  • You can now specify date ranges such as tomorrow and next 2 month for a dateRange.


  • refreshKey now supports an every property
  • A new quarter granularity is now available
  • Support multi-value filtering on same column through FILTER_PARAMS
  • Improve error messages on schema validation failure


  • AWS Athena: The driver now uses AWS SDK v3, this reduces bundle sizes significantly for deployments using the Serverless Framework.
  • AWS Athena: Use getWorkGroup() instead of SELECT 1 to test connection health.
  • AWS Athena: Allow configuring the workgroup via CUBEJS_AWS_ATHENA_WORKGROUP.
  • BigQuery: Datasets that cannot be accessed with the current permissions are ignored.
  • BigQuery: Improved type detection in read-only mode
  • Oracle: You can now specify the port number with CUBEJS_DB_PORT.
  • Oracle: Move oracledb to optionalDependencies to unblock developers using ARM64.
  • MySQL: Handle data of type utf8mb4_bin as string.
  • Postgres: Add support for pre-aggregating countDistinctApprox measures
  • Postgres: Improved type detection in read-only mode
  • PrestoDB: Support connections over SSL
  • Snowflake: Fix error ReferenceError: host is not defined
  • Snowflake: Do not trigger cluster start on test connection


  • All pre-aggregations now have a default refreshKey of 1 hour.
  • Measures with a rolling window, including countDistinctApprox can now be pre-aggregated

Frontend integrations


  • Data blending queries can now be made without a dateRange
  • Time dimensions are now included under dimensions for cube metadata
  • Prevent redundant authentication checks
  • Preserve order of elements when calling ResultSet.tableColumns()
  • Measures that return nullish (undefined or null) values are now converted to 0


  • Angular 12 support
  • Async client generation support in Angular (Find an example here)
  • FilterMember.replace() no longer updates all filters with replacement


  • Introduce new useCubeMeta() hook


  • Correctly handle dryRun errors on component mount
  • New wrapWithQueryRenderer prop to allow using the QueryBuilder component without the QueryRenderer

Cube Store

Cube Store has seen a huge number of stability fixes and quality improvements; far too many to mention here, but here's a summary:

  • Improved Cube Store installation process
  • Improved error handling for incorrect configuration
  • Added support for date_add and date_sub SQL functions
  • Added equality comparison between bool and int types
  • We now build non-avx versions of Cube Store so you can use them on ARM64 platforms
  • ILIKE is now supported
  • Fix issue when using decimal types
  • MinIO is now supported as a storage backend


  • Rollup designer
  • Now supports the new quarter granularity
  • Support drilldowns in charts made with React ChartJS
  • Boolean values are now correctly displayed as true or false


  • A deployment guide for Kubernetes
  • A ton of new recipes to help you level up quickly