We're extremely happy to announce Cube.js v0.28 ๐Ÿฅณ

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.

Only one deprecation this release ๐Ÿ”ฅ

  • 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 ๐ŸŽ‰

  • 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 ๐Ÿ˜Ž

  • 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)

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.


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 ๐Ÿ˜

Apologies to anyone who we forgot to mention; please get in touch and we'll make sure to add your name to the list ๐Ÿ™Œ

Did you find this page useful?