V0.28 Release Notes

We’re extremely happy to announce Cube.js v0.28 :partying_face:

Cube.js v0.28 includes tons of goodies for developers in the form of the Developer Playground, not to mention incredible improvements to Cube Store and a raft of reliability improvements to our database drivers.

Breaking Changes and Deprecations

Only one deprecation this release :fire:

  • Redis configuration variables are all now prefixed with CUBEJS_. This is part of an ongoing process to cleanly separate and mark environment variables used by Cube.js.

Be sure to check the Deprecation document for more details on the above.


  • The queryTransformer property in the cube.js configuration file is replaced by queryRewrite

  • A new environment variable CUBEJS_REFRESH_WORKER is introduced, which replaces CUBEJS_SCHEDULED_REFRESH_TIMER

  • A new environment variable CUBEJS_ROLLUP_ONLY is introduced, which ensures all requests only target pre-aggregations of type rollup and that your database is not invoked

  • Partition evaluation responsibilities have been moved from the schema compiler to the query orchestrator. This allows all time queries for partitioned rollups and fixes querying issues beyond a rollup’s build range. This is also the first step towards rolling window rollups being supported :tada:

  • Run timer refresh keys in Cube Store instead of your source database. This means the source database is now free of those pesky refresh SQL queries spamming the query log :sunglasses:

  • The database connection wizard works in both Node and Docker-based installs


  • The default type for pre-aggregations is now rollup. This can still be overridden by explicitly specifying the type property, but we strongly recommend using rollups instead of originalSql for most workloads.

  • Pre-aggregation definitions now set the following as defaults: external: true and scheduledRefresh: true

  • refreshRangeStart/refreshRangeEnd to be replaced by buildRangeStart/buildRangeEnd

  • You can write measureReferences/dimensionReferences/timeDimensionReference as measures/dimensions/timeDimension.


We’re working our way through the supported drivers so that Cube.js doesn’t talk to your database any more than is necessary. To this end, the following drivers now default to readOnly: true automatically:

  • ElasticSearch
  • MySQL
  • Postgres


We’ve been cranking out improvements to pre-aggregations too, here are the highlights:

  • Cube Store is now the default storage for external pre-aggregations in new projects
  • Batching is now also supported for
    • BigQuery
    • Clickhouse
    • MongoDB
    • MySQL (now in readOnly: true as well)
  • Export bucket is now also supported for
    • Redshift (on S3)
    • Snowflake (now on GCS as well as S3)

Cube Store

Developer Playground

We have so many improvements here that we’re really excited to share with you all:

  • You can now search for dimensions and measures. The members are also grouped by cube, which makes it easy-as-pie to pick out the ones you want.


  • A long-requested item on our agenda has been Vue 3 support, which is now available.

  • You can now have multiple tabs with their own queries in the Developer Playground - super useful when you want to keep queries at-hand without needing a separate instance of the Playground open

  • The brand new Rollup Designer makes creating pre-aggregations an absolute treat.

Community Contributions

We have a long list of contributions from the community this release, and we’d like to thank each and every person who took the time to help us improve Cube.js :grin:

Apologies to anyone who we forgot to mention; please get in touch and we’ll make sure to add your name to the list :raised_hands: