Deneb - Declarative visualization in Power BI, using the Vega language

Change Log

Change Log

Deneb is currently in public preview and lots of things are still being actively developed. This site is under construction and the information in this page may be subject to frequent change, so please check often to ensure that you're up-to-date.

0.5.0 (2021-08-30)

New Features and Enhancements

  • Common pre-defined pattern fills for SVG renderer. This is Deneb-specific and not native to Vega or Vega-Lite specifications, so please read the Pattern Fills page for further details on how to get started. (#30).

  • Visual viewport preservation and "detail work" enhancements (#15). This is covered in more detail in the Visual Editor page, but a short run-down is as follows:

    • Deneb will now record the dimensions of your visual in the report canvas when the advanced editor is opened, and use these dimensions when presenting your visual preview, rather than stretching it to fit available space, e.g.:


    • The intention of this is to keep the visual scaled as it will be viewed at its current dimensions.

    • Note that Power BI does not allow visuals to resize themselves dynamically, so if you wish to change the physical width and/or height of your visual in the report view, you will need to exit the advanced editor, resize and re-open the advanced editor.

    • Additionally, a toolbar is available at the bottom of the preview area, which will allow you to adjust the zoom level of the preview:


  • The top-level height and width properties can now be applied if necessary, rather than Deneb attempting to resolve them to the visual container (#48).

    • This means that it is now possible to size single view or layered Vega-Lite specifications by discrete step.
    • For Vega specifications, two additional signals - pbiContainerHeight and pbiContainerWidth - are available to use the desired container dimension. These are automatically patched into a Vega spec if the height and/or width properties are omitted.
  • New Specification and Export JSON Template dialogs now use more real-estate (#85).

  • Rather than creating a new line for and occurrence of each collection/object, list/array or property, the Repair and Format JSON command will now try to pretty-print JSON more effectively, i.e. only creating line breaks where sensible to do so. (#110)

  • Objects in tooltips are now more readable (#80).

    • For example, if using techniques to expose the full tooltip datum, e.g. using { "tooltip" { "content": "data" } } for Vega-Lite, the tooltip handler would expose any nested objects as [object Object].
    • These objects are now converted to a text representation of the object structure: 0.5-previous-tooltip-object.png
    • Note that the presence of an __identity__ and/or __key__ and identityIndex properties means that the underlying data point can be reconciled back to Power BI and may help with confirming that a mark will resolve for interactivity purposes.
  • The en-GB locale has been added to the standard Vega (D3) formatter (#111).

Bugs Fixed

  • Keyboard shortcut bindings were being "stacked" each time editor was closed and re-opened (#105).
  • Editor font size was not always immediately re-bound after minimizing and restoring the editor pane (#107).

Performance and Stability

  • Second-stage of service layer re-write (continuing from 0.4). Again, this should result in no visible changes other than those detailed above.
  • Dependencies have been audited and replaced with latest/secure versions where possible.

0.4.0 (2021-07-26)

New Features & Enhancements

  • Tooltip resolution has been improved:

    • Default tooltip formatting resolves better against data model (#8).


    • Report page tooltip resolution is more thorough for transforms that preserve row context (#37).

    Here's an example of behavior for a series of transforms that produces a Top N + Others dataset. The Top N results ultimately have the same grain as the source data so we can work out the correct selector for the data model. For Others, we cannot resolve this, but can display a default tooltip (with better formatting resolution from above):


  • SVG is now the default render mode for visuals rather than canvas (#68). Please refer to the Performance Considerations page for further details on potential risks and mitigation approaches when it comes to selecting a renderer.

  • Editor font size is now available in the properties pane. Refer to the Visual Editor page for further details.

  • Editors now track whether they are 'dirty', i.e. you've made changes but not yet applied them (#10).

    • The Apply button will be greyed-out if no changes have been made, or changes revert to the spec currently visible.
    • If exiting back to report view with unapplied changes, you will now get a 'last chance' prompt to apply any pending changes. Please refer to the Visual Editor page for more details if required.
    • If changes are discarded after choosing this option, they cannot be recovered.
  • Landing and status pages have better contrast and no redundant elements or styling (#40).

  • If you're in the JSON editor and wish to navigate out of this with the keyboard (and presuming the operation shortcut keys are not useful), you can now press [ Esc ] to have Deneb set focus to the tabs above the editor (#25).

Bugs Fixed

  • If you had selected a template file to import and tried to import it again (for instance, after editing it externally and wanting to re-import), this did not work. This has now been resolved (#36).

Performance & Stability

  • Application icons have been optimized and initialization is now much more performant on first run (#77).
  • Deneb service layer has been completely re-written as part of ongoing review and optimizations. All being well, this should result in no visible changes for you 🙂
  • The packaged visual (.pbiviz) is ~10% smaller (1.35MB > 1.22MB).

0.3.0 (2021-05-31)

New Features & Enhancements

  • Template import and generation added. This is covered more in the Templates page, but high-level features are as follows:

    • When editing a specification, there is now a Generate JSON Template button in the editor.
    • Selecting this presents a dialog that an author can use to customize aspects of the specification, prior to export to (a) provide descriptive detail for anyone wanting to import the template, and (b) make column and measure metadata more suitable for general consumption (particularly if sensitive names are used).
    • The template JSON is made available for you to review and then copy to the clipboard. This can then be saved as a .json file for import by yourself or others.
    • Additionally, the Create New Specification dialog has an additional Import from Template tab. Here you can import a valid Deneb template (generated using the above functionality) and allocate columns and measures from your Values data role, in the same way as the built-in examples.
  • [INTERNAL] the data view mapping has been swapped from table to categorical.

    • This currently results in no net change for end-users, but will potentially allow us more functionality with selectors than the table data view mapping offers.
    • One such benefit is that to date, a report page tooltip could only be created and referenced using a column from the dataset; we can now use a single measure if we so want.

Bugs Fixed

  • If overriding the visual data within the specification (e.g. when pasting in an example with static data), or adding custom datasets for a particular layer, then Deneb would refuse to render. This has been fixed. (#33)
  • Columns or measures added from the data model containing characters that require special handling, now have these characters replaced in the dataset. Refer to the documentation regarding this for further details (#38)

0.2.0 (2021-03-19)

New Features & Enhancements

  • Custom formatter added, which if specified, allows creators to use Power BI format strings instead of D3 ones. Refer to Formatting Values page for details (#13)
  • Keyboard shortcuts now available for all portions of the advanced UI; not just when a user is inside the specification or config editor (#23)
  • Editor pane toggle has keyboard shortcut - Ctrl + Alt + Space (#24)
  • Editor tabs now have shortcuts (#2):
    • Specification - Ctrl + Alt + 1
    • Config - Ctrl + Alt + 2
    • Settings - Ctrl + Alt + 3
  • Added switchable locale in dev tools, which will assist with debugging formatting and other i18n stuff (#19)

Bugs Fixed

  • Toggling the editor pane lost any changes in-progress. This has been amended to apply changes prior to unmounting the 'expanded' view.
  • Vega templates had incorrect reference to values named dataset, rather than dataset. These have been re-pointed to be correct.


  • Fixed linting issues with chevron icon in header (#17)
  • Renamed anything to do with editor pane sizing to be more appropriate for the current interface logic (#14)

0.1.0 (2021-03-15)

Initial beta release for early access.

Edit this page on GitHub