Release Notes for the Tableau Extensions API
Previous Releases
Known Issues
Tableau Extensions API version 1.12.0
May 2024
-
Tableau Dashboard Extensions API library:
tableau.extensions.1.12.0.js
(download or clone the Extensions API repository on GitHub..) -
Certain features in this release are only available in Tableau 2024.2 or later. Download Tableau Desktop or Tableau Server.
-
To preview new features and test your extension with the latest version of Tableau in the Developer Sandbox, join the Tableau Developer Program. and request your own Tableau Cloud developer site.
What's new in this release:
-
Support for Viz Extensions. Viz Extensions is a new feature that allows developers to create new viz types that Tableau users can access through the worksheet Marks card. See Getting Started with Viz Extensions.
-
Updated the
Worksheet.selectTuplesAsync
method to now support multiple tuple values. This means you can enable multi-selection scenarios. For example, the viz extension can support mark selection for rectangular, lasso, or other shaped multi-mark selections. You can use this method for marks or zones that represent multiple values. -
Added Keyboard Accessible navigation methods.
-
You can use the
Worksheet.getTooltipTextAsync
method to grab the data of the navigated tuple to read out to a screen reader. -
Use the
Worksheet.leaveMarkNavigationAsync
method to escape focus back over to Tableau when you're done with mark navigation.
-
-
(Viz Extensions) You can now specify the encoding icons used on the Marks card and provide for localization. You set these options in the
.trex
manifest file. See Add encoding to the viz manifest. -
(Viz Extensions) Added support for a Format Extension button on the Marks card. You can use the Format Extension button to open a configuration popup window to let your users customize your viz extension. You create the button by adding a
<context-menu>
element to your.trex
manifest file and then creating aconfigure()
callback function. For more information, see Add a Configuration Popup Dialog.
<context-menu>
<configure-context-menu-item />
</context-menu> -
Added support for interactivity in viz extensions. You can add actions and tooltips based on marks selection or hover over interactions. This release includes two new
worksheet
methods.-
Use the
Worksheet.selectTuplesAsync
method to display the Tableau tooltip for the selected marks, or to take some other action based upon the marks selection. -
Use the
Worksheet.hoverTupleAsync
method to display a tooltip for the marks currently hovered over.
For an example of how you can use these methods, see the Sankey viz extension sample.
-
Also in this release:
-
Added
Field.ColumnType
. -
Fixed a bug to allow a Field to have
datatype = DataType.Spatial
. -
Added an attribute
isGeospatial
toField
.
Previous Releases
Tableau Dashboard Extensions API version 1.11.0
April 2024
-
Tableau Dashboard Extensions API library:
tableau.extensions.1.11.0.js
(download or clone the Extensions API repository on GitHub..) -
Certain features in this release are only available in Tableau 2024.1 or later. Download Tableau Desktop. or Tableau Server.
-
To preview new features and test your extension with the latest version of Tableau in the Developer Sandbox, join the Tableau Developer Program. and request your own Tableau Cloud developer site.
About this release:
-
Adds the
Environment.uniqueUserId
property. -
Adds the
SummaryDataChanged
event type. -
Adds the
Worksheet.getVisualSpecificationAsync
method. -
Fixes a bug in the
getSelectedMarksAsync
method that would causeformattedValue
to be incorrect in multi-pane scenarios. -
Adds experimental features as part of Viz Extensions Pre-Release. See the blog post Extend Your Visual Analytics with Tableau Viz Extensions.
The Viz Extensions API is currently under development. Tableau is working to offer the feature in general availability later in 2024.
We encourage anyone interested in developing viz extensions to contact Wilson Po at wpo@salesforce.com. We’re running a program by invitation that focuses on the developer experience for those interested in exploring those tools. An active NDA must be in place to requests access to the preview at this time.
Sign up to test Tableau Viz Extensions in the Tableau Beta Preview, as part of the web authoring experience when you register for a Tableau Cloud Beta Site.
Tableau Dashboard Extensions API version 1.10.0
December 2022
-
Tableau Dashboard Extensions API library:
tableau.extensions.1.10.0.js
(download or clone the Extensions API repository on GitHub..) -
Certain features in this release are only available in Tableau 2022.4 or later. Download Tableau Desktop. or Tableau Server.
-
To preview new features and test your extension with the latest version of Tableau in the Developer Sandbox, join the Tableau Developer Program. and request your own Tableau Cloud developer site.
About this release:
-
Updates for Tableau Viz, an easy way for you to add visualizations to your dashboard extensions using a declarative description. This release includes support for combination charts, charts with multiple mark types in the same visualization. Tableau Viz has a new input specification that support these new visualizations, see the Tableau Viz v2 inputSpec. For information about using Tableau Viz in your extensions, see Add Tableau Viz to your Dashboard Extensions.
-
Adds support for a DataTableReader to support pagination. Created with Worksheet.getSummaryDataReaderAsync, Worksheet.getUnderlyingTableDataReaderAsync, and DataSource.getLogicalTableDataReaderAsync. For more information, see Get Data from the View.
-
Deprecated
getSummaryDataAsync
. Use Worksheet.getSummaryDataReaderAsync instead. -
The UI.displayDialogAsync now supports different dialog styles (window, modal or modeless dialog boxes).
-
Adds support for annotating marks with Worksheet.annotateMarkAsync, Worksheet.getAnnotationsAsync, and Worksheet.removeAnnotationAsync. See the code sample, Annotation (on GitHub).
Tableau Dashboard Extensions API version 1.9.0
June 2022
-
Tableau Dashboard Extensions API library:
tableau.extensions.1.9.0.js
(download or clone the Extensions API repository on GitHub..) -
Download Tableau Desktop or Tableau Server.
-
To preview new features and test your extension with the latest version of Tableau in the Developer Sandbox, join the Tableau Developer Program and request your own Tableau Cloud developer site.
About this release:
-
Added support for
Filter.getAppliedWorksheets()
andFilter.setAppliedWorksheets()
. -
Added support for
Dashboard.getFiltersAsync()
andDashboard.applyFilterAsync()
. -
Added support for
Worksheet.applyRelativeDateFilterAsync()
. -
Starting with this release, you can now load Benton Sans fonts and Tableau fonts by default during extension initialization. You can set the Tableau and Benton Sans fonts in the style portion of your extension. To see how you can use the fonts in a dashboard extension, see the Formatting sample.
body {
font-family: 'Benton Sans', Arial, Helvetica, sans-serif;
}
Tableau Dashboard Extensions API version 1.8.1
February 2022
-
Tableau Dashboard Extensions API library:
tableau.extensions.1.8.1.js
(download or clone the Extensions API repository on GitHub..) -
Download Tableau Desktop 2021.4. or Tableau Server 2021.4..
-
To preview new features and test your extension with the latest version of Tableau in the Developer Sandbox, join the Tableau Developer Program. and request your own Tableau Cloud developer site.
About this release:
-
Minor updates and bug fixes.
-
Minor corrections and updates to the documentation. See Add Tableau Workbook Formatting.
-
New versions of the JavaScript library and TypeScript types (
1.8.1
). See Use TypeScript with the Extensions API.
Tableau Dashboard Extensions API version 1.8
November 2021
-
Tableau Dashboard Extensions API library:
tableau.extensions.1.8.0.js
(download or clone the Extensions API repository on GitHub..) -
Certain features in this release are only available in Tableau 2021.4 or later. Preview the features and test your extension with the latest version of Tableau in the Developer Sandbox. To gain access to the Developer Sandbox, join the Tableau Developer Program. and request your own Tableau Cloud developer site.
About this release:
This release contains updates for Tableau Viz., including:
-
Added support for setting the size of a bar mark to be manual (
VizImageSizeSettingType.Manual
) or fixed (VizImageSizeSettingType.Fixed
). If the type is manual, you can set the mark’s size. If the type is fixed, you can set the alignment (VizImageSizeSettingAlignmentType
). -
Added support for sorting. You can sort a field (continuous or discrete) by ascending or descending values (
VizImageSortDirectionType.Ascending
,VizImageSortDirectionType.Descending
).sort: { field: "Category", sortby: "Weather", direction: tableau.VizImageSortDirectionType.Ascending }
-
For continuous fields, you can set the color palette to a custom-diverging, or custom-sequential color palette. You are not restricted to using only a Tableau defined palate, such as,
green_blue_white_diverging_10_0
. For example, you could set the custom palette as shown in the following examples:
palette: tableau.VizImagePaletteType.CustomDiverging, start: "#FFB6C1", end: "#90ee90"Or
palette: tableau.VizImagePaletteType.CustomSequential, end: "#FFB6C1" -
Added support to show or hide grid lines in the view for rows or columns, or both.
-
Starting with the v1.8 release of the Dashboard Extensions API library and Tableau 2021.4, Tableau Viz now uses Tableau fonts as the default font for text in the output SVG image.
For more information, see Tableau Viz Reference.
Tableau Dashboard Extensions API version 1.7
October 2021
-
Tableau Dashboard Extensions API library:
tableau.extensions.1.7.0.js
(download or clone the Extensions API repository on GitHub..) -
Certain features in this release are only available in Tableau 2021.4 or later. Preview the features and test your extension with the latest version of Tableau in the Developer Sandbox. To gain access to the Developer Sandbox, join the Tableau Developer Program. and request your own Tableau Cloud developer site.
About this release:
-
Added a new method,
moveAndResizeDashboardObjectsAsync
. you can use to set the position and size of one or more floating dashboard objects. This can be useful for creating overlays, annotations, popups, or dynamic layouts. -
Added a new method that can replay an animation in a dashboard. You can control the replay speed (
tableau.ReplaySpeedType.Slow
,tableau.ReplaySpeedType.Normal
, ortableau.ReplaySpeedType.Fast
). For more information see thereplayAnimationAsync
. method. -
Dashboard extensions can now use workbook formatting by setting the appropriate class on the HTML elements. The specific Tableau classes to use are defined in the
ClassNameKey
. enum. To apply the formatting in the body of your HTML page, use the string literaltableau-*
for the enum. For example, to apply the worksheet title formatting you set theclass
for the HTML element in your extension (div
,h2
, etc.) to"tableau-worksheet-title"
.<h2 class="tableau-worksheet-title">Subheader, using tableau-worksheet-title class</h2>
To reference the workbook formatting in places outside of the HTML body, use the enum directly (for example,
tableau.ClassNameKey.WorksheetTitle
).<script>
...
someFunction(tableau.ClassNameKey.WorksheetTitle);
...
</script>You can access the formatting in the Tableau workbook from
tableau.extensions.environment.workbookFormatting
. The propertyformattingSheets
contains the array of CSS properties for the workbook, organized byClassNameKey
. For more information about using workbook formatting, see the Formatting. sample in the Samples folder. Also see Add Tableau Workbook Formatting. -
You can now set an event listener on changes to the dashboard layout and to the dashboard formatting. The new event types are
DashboardLayoutChanged
andWorkbookFormattingChanged
.The
DashboardLayoutChanged
event is triggered whenever a dashboard object is added, removed, repositioned or resized, or whenever the floating state, visibility, object name, or dashboard size changes. See the DashboardLayoutChanged. event.The
WorkbookFormattingChanged
event is triggered whenever the workbook text formatting is changed in Tableau authoring mode. This includes changes in the font, the font size, whether it is bold, italic, or underlined, and the color. For more information about workbook formatting, see workbookFormatting. -
Transparency - Tableau now supports dashboard extension transparency for Sandboxed extensions. To take advantage of extension transparency, set your background style to a transparent or partially transparent color.
-
Added a new method (
setClickThroughAsync
) that allows clicks to pass through the dashboard extension window. You can use this method in conjunction with transparency. See the setClickThroughAsync. method.
Tableau Dashboard Extensions API version 1.6
September 2021
-
Tableau Dashboard Extensions API library:
tableau.extensions.1.6.0.js
(download or clone the Extensions API repository on GitHub..) -
Download Tableau Desktop 2021.3. or Tableau Server 2021.3..
About this release:
- Tableau Viz is here!
Starting with version 1.6 of the Dashboard Extensions API library and Tableau 2021.3, you can now add Tableau visualizations to your dashboard extensions. Tableau Viz takes a declarative description of your visualization and renders it as an SVG image that you can embed in your extension. Version 1.6 of the Dashboard Extensions library adds the tableau.extensions.createVizImageAsync
. method, which takes a JavaScript object describing the image as an input.
For more information about using Tableau Viz, see:
New Dashboard Extension API methods in this release:
- Added the
getAllDataSourcesAsync()
method to get the data sources for a workbook. - Added the
createVizImageAsync()
method to support Tableau Viz.
Tableau Dashboard Extensions API version 1.5
June 2021
- Tableau Dashboard Extensions API library:
tableau.extensions.1.5.0.js
(download or clone the Extensions API repository on GitHub..)
About this release:
-
The
Filter.getFieldAsync
method now works as expected and properly returns the field. This fix requires Tableau 2019.2 and later. -
Show/Hide (
setZoneVisibilityAsync
) can now be applied to any dashboard zone. -
The
selectMarksByValueAsync
method now supports combined selection criteria types (bug fixed). -
The following are all improvements to the
getSummaryDataAsync
. method:-
getSummaryDataAsync
now has a smaller and faster payload. -
maxRows
can be applied togetSummaryDataAsync
to restrict the number of rows fetched. -
columnsToIncludeById
can be applied togetSummaryDataAsync
to restrict the columns fetched. -
includeDataValuesOnly
orincludeFormattedValuesOnly
can be applied togetSummaryDataAsync
to restrict the amount of information returned to what you really need. -
The
getSummaryColumnsInfoAsync
method is new in this release. It returns the column information for each column that will be returned ingetSummaryDataAsync
.
-
-
The column information now includes the
fieldId
as well as the field name.
For more information about changes in this release, see Tableau Extensions v1.5.0..
Tableau 2021.1 Updates
March 2021
-
You can now use Chrome version 80 and later to debug your dashboard extension in Tableau Desktop. If you are using Tableau 2021.1, or the latest maintenance releases of Tableau 2020.2, 2020.3, or 2020.4, you no longer need to use Chromium (version 79 or earlier) for debugging. For more information, see Debug Extensions in Tableau Desktop and Download the Chromium Browser.
-
If you plan to implement OAuth in your dashboard extension, you'll want to check out Add OAuth to Dashboard Extensions, and the OAuth sample (datadev-oauth-sign-in.) on Glitch.
-
Because of browser changes in Tableau, dashboard extensions running with self-signed certificates (SSL) might not work in Tableau 2021.1, or in the most recent Tableau maintenance releases: 2020.2.7+, 2020.3.6+, and 2020.4.2+. For more information, see Known Issues.
Tableau Dashboard Extensions API version 1.4
May 2020
- Tableau Dashboard Extensions API library:
tableau.extensions.1.4.0.js
(download or clone the Extensions API repository on GitHub.).
About this release:
-
To support the logical and physical tables introduced in Tableau 2020.2, the Tableau Dashboard Extensions API (version 1.4) provides new APIs and data structures. Use these new methods to get the underlying data from data sources and worksheets. The new methods replace
getUnderlyingDataAsync
. Starting in Tableau 2020.2, a data source could have multiple logical tables, and logical tables can contain one or more physical tables. If you have an existing extension that uses one of the deprecated methods to get underlying data, the method call could fail if the data source contains more than one logical table. You should update your extensions to use these new methods. The new methods are backward compatible with previous versions of Tableau.Interface Deprecated method (v1.3 and earlier) New method (v1.4 and later) Datasource
datasource.getActiveTablesAsync
datasource.getLogicalTablesAsync
Datasource
datasource.getUnderlyingDataAsync
datasource.getLogicalTableDataAsync
Worksheet
Not Applicable worksheet.getUnderlyingTablesAsync
Worksheet
worksheet.getUnderlyingDataAsync
worksheet.getUnderlyingTableDataAsync
To support the data model, the API also includes the
LogicalTable
object that has two properties:caption
andid
. Thecaption
is the name of the logical table as it appears in Tableau.For more information about getting underlying data from data sources and worksheets, see Get Data from the Dashboard.
For information about the data model, see The Tableau Data Model.
-
DataValue
now has anativeValue
member. This member represents the raw native value as a JavaScript type, which is one of string, number, boolean, or Date object. Note that special values are returned as null. ThenativeValue
helps simplify error checking as all values will either be their native type value or null. ThenativeValue
exists for ALLDataValue
objects, including those returned from parameters, filters, selections, and underlying or summary data. Dates values are in UTC. -
Added documentation for the clearSelectedMarksAsync() method, which clears the selected marks in the current worksheet.
Bugs fixed in this release:
-
Range filters now work correctly when the minimum or maximum values are equal to zero (0). Previously, calls to the
applyRangeFilterAsync()
method would ignore theRangeFilterOptions
if themin
ormax
properties were equal to zero (0). -
The
isVisible
attribute for dashboard zones is now set properly to true or false when the extension is initialized. -
The
setZoneVisibilityAsync()
method now supports ES6 map objects for thezoneVisibilityMap
parameter.
Tableau Sandboxed Extensions Development Environment
September 2019
-
Sandboxed Extensions are Tableau dashboard extensions that are not permitted to make external network requests. Available for testing with Tableau 2019.3. Fully supported in Tableau 2019.4.
-
The Extensions API SDK provides a local development environment that replicates the Tableau Hosting Cloud Service for Sandboxed Extensions. You can test your Sandboxed extensions locally with the same sandbox policies before submitting the extension to Tableau for publication. See Create and Test Sandboxed Extensions and Publish Sandboxed Extensions.
Extensions API library v1.3
July 2019
- Tableau Extensions API library:
tableau.extensions.1.3.0.js
(download or clone the Extensions API repository on GitHub.)
About this release:
-
The Extensions API library version 1.3 (
tableau.extensions.1.3.0.js
) is backward compatible with previous releases of the library. -
Now available: Extensions API type definitions and new TypeScript samples. The latest release provides the TypeScript type definitions so that you can author your extension using TypeScript. See Use TypeScript with the Extensions API and TypeScript Sample Extensions. on GitHub.
-
New all-values-selected property for categorical filters (
filter.isAllSelected
). You can use this new property to determine when all values of categorical filters are selected. TheisAllSelected
property is a Boolean and returns True or False. Prior to this release, there was no way to tell if all values of categorical filters were selected. Thefilter.appliedValues
method returns empty array when (All) is selected, so there is no way to use that method to determine if all values are selected or if no values are selected. TheisAllSelected
property is available starting with Tableau 2019.2 and the Extensions API library version 1.3 (tableau.extensions.1.3.0.js
).worksheet.getFiltersAsync().then((filters) => {
let filter = filters[0];
if (filter.filterType === tableau.filterType.Categorical)
{
console.log(filter.isAllSelected);
}
}
Extensions API library v1.2
April 2019
- Tableau Extensions API library:
tableau.extensions.1.2.0.js
(download or clone the Extensions API repository on GitHub.)
About this release:
-
The Extensions API library version 1.2 (
tableau.extensions.1.2.0.js
) is backward compatible with previous releases of the library. You can use the Extensions API library version 1.2 for extensions on Tableau 2018.2 and later. The library contains logic to handle any necessary conversions for the supported version of Tableau the extension is running in. For the best experience, you should always use the latest version of the library with the extensions you create. -
The names of the Extension API library files have changed. The hypens (-) have been removed from the file name (was
tableau-extensions-*
, nowtableau.extensions.*
). Starting with the 1.2 library, the names of the library files are as follows:
tableau.extensions.1.2.0.js
tableau.extensions.1.2.0.min.js
tableau.extensions.1.latest.js
tableau.extensions.1.latest.min.js
Note If you have previously been referencing tableau-extensions-1.latest.js
in your code, you will need to use the new naming convention when you upgrade to the 1.2 library (tableau.extensions.1.latest.js
).
Bugs fixed in this release:
-
Fixed in the Extensions API library 1.2, the type of
DataValue.value
is now the raw native value as a JavaScript type, rather than always defaulting to String. ADataValue.value
can be one of the following JavaScript types: String, Number, Boolean, or Date. ADataValue
is returned as a property of aDataTable
in methods, such asgetSummaryDataAsync()
orgetUnderlyingDataAsync()
. Note that special values, regardless of type, are always returned as String values surrounded by percent signs, such as%null%
, or%no-access%
.
Important! If your code depended on the type ofDataValue.value
always being a String, that code will now break with this fix. -
The
environment.apiVersion
property now correctly reports the version of the Extensions API library that the extension is using. -
The documentation for the
selectMarksByValueAsync
method has been corrected. If you are calling the method, be sure to specify the complete namespace for theSelectionUpdateType
enum that is passed to the method as theupdateType
parameter. For example, usetableau.SelectionUpdateType.Replace
, to replace the currently selected marks with the values you specify in the method call.