Releases: tableau/extensions-api
Extensions v1.15.0 (beta)
In this release
- Added 
Cloud,PublicWeb, andPublicDesktopas environment context values. - Added 
sendDialogMessageAsyncmethod andDialogMessageReceivedevent to the UI namespace (Cloud / Server only). closeDialogcan now be called from the extension frame to forcefully close the dialog.- See beta release notes: https://tableau.github.io/extensions-api/gh-pages-dev/docs/trex_release-notes/
 
Note: beta release files are located under lib/beta folder
Extensions v1.14.0
In this release
- Added 
hasAliasandaliasValueattributes toDataValue. - Fixed bug when calling 
getAllDataSourcesAsyncon a workbook with no worksheets. - Fixed a bug where calling 
applyRangeFilterAsyncwith a max or min of 0 would throw an error. - See other details in https://tableau.github.io/extensions-api/docs/trex_release-notes.
 
Extensions v1.13.0
In this release
- Added 
WorksheetFormattingChangedevent to worksheet. - Added 
backgroundColorandformattingproperties to worksheet. - Added 
applyWorksheetFormattingas optional parameter toGetSummaryandGetUnderlyingdata APIs. - See other details in https://tableau.github.io/extensions-api/docs/trex_release-notes.
 
Extensions v1.12.1
In this release
- Fixed backwards compatibility issues present in 
v1.12.0. - The same backwards compatibility issues are also present in 
v1.11.0.v1.11.1, which fixes the issues, can be found in the previous releases folder. 
Extensions v1.12.0
In this release
- Viz Extensions' first ever public release.
 - Introduces the new 
worksheetobject for Viz Extensions accessible viatableau.extensions.worksheetContent.worksheet. - Added 
getTooltipTextAsynctoworksheet. - Added 
leaveMarkNavigationAsynctoworksheet. - Added 
hoverTupleAsynctoworksheet. - Added 
selectTuplesAsynctoworksheet. - Implemented 
Field.ColumnType. - Added 
isGeospatialattribute toField. - Fixed a bug to allow a 
Fieldto have datatype =DataType.Spatial. - [For trex files] Added support for custom encoding icons, as well as localizable encoding and tooltip
strings - [For trex files] Added support for the Format Extensions button in the Marks Card area
 - See other details in https://tableau.github.io/extensions-api/docs/trex_release-notes.
 
Extensions v1.11.0
In this release
- Added 
Environment.uniqueUserId. - Added the 
SummaryDataChangedevent type. - Added the 
Worksheet.getVisualSpecificationAsyncmethod. - Fixed bug in 
getSelectedMarksAsyncwhich would causeformattedValueto be incorrect in multi
pane scenarios. - Added experimental features as part of Viz Extensions Pre-Release.
 - See other details in https://tableau.github.io/extensions-api/docs/trex_release-notes.html.
 
Extensions v1.10.0
In this release
- Updates to the input specification for 
createVizImageAsync. This release includes support for combination charts, charts with multiple mark types in the same visualization (requires Tableau 2022.4+). - Adds support for a 
DataTableReaderto support pagination (requires Tableau 2022.4+). - Deprecated 
Worksheet.getSummaryDataAsync. UseWorksheet.getSummaryDataReaderAsync. UI.displayDialogAsyncnow supports different dialog styles (window, modal or modeless dialog boxes).- Adds support for annotating marks with 
Worksheet.annotateMarkAsync,Worksheet.getAnnotationsAsync, andWorksheet.removeAnnotationAsync. - Map file is now included for better debugging experience with minified library.
 - See other details in https://tableau.github.io/extensions-api/docs/trex_release-notes.html.
 
DataTableReader Introduction
There has always been a 10k row limit on getUnderlyingTableDataAsync and on
getLogicalTableDataAsync, and for large worksheets, getSummaryDataAsync can prove to be
unreliable.
Introducting DataTableReader! Starting with Tableau 2022.4 and Extensions v1.10.0,
DataTableReader provides an API to request data a page at a time.
Fetching a DataTableReader
To get a DataTableReader use one of the new functions: getSummaryDataReaderAsync,
getUnderlyingTableDataReaderAsync, or getLogicalTableDataReaderAsync. The parameters to these
functions include the GetSummaryDataOptions or GetUnderlyingDataOptions, but also include a page
row count. This parameter sets the size of pages that will be returned. The default, and maximum,
page size is 10,000 rows.
Using a DataTableReader
Converting your code to use a DataTableReader is straightforward.
The following:
const dataTable = await this.worksheet.getSummaryDataAsync();
// ... use dataTable ...
becomes:
const dataTableReader = await this.worksheet.getSummaryDataReaderAsync();
const dataTable = await dataTableReader.getAllPagesAsync();
await dataTableReader.releaseAsync();
// ... use dataTable ...
Or alternatively:
const dataTableReader = await this.worksheet.getSummaryDataReaderAsync();
for (let currentPage = 0; currentPage < dataTableReader.pageCount; currentPage++) {
    const currentPageDataTable = await dataTableReader.getPageAsync(currentPage);
    // ... process currentPageDataTable ...
}
await dataTableReader.releaseAsync();
Limits on a DataTableReader
Unfortunately, we still live a a world with limited computing resources. A DataTableReader consumes
server resources. Therefore, there are still limits on the number of rows supported for underlying
and logical data table readers. The default limit is approximately 1 million rows of data for
getUnderlyingTableDataReaderAsync, and approximately 32 million cells (rows * columns) for
getLogicalTableDataReaderAsync. Server administrators (starting in 2023.1) may change these limits to better match
computing resources with the Tableau Server (Cloud) or Tableau Desktop options:
- ExtensionsAndEmbeddingReaderRowLimit for 
getUnderlyingTableDataReaderAsyncor - ExtensionsAndEmbeddingReaderCellLimit for 
getLogicalTableDataReaderAsync. 
Hints on using a DataTableReader
- If you are dealing with large amounts of data, set the columns to include, or the
IncludeDataValuesOptionto what you need. Fetching all columns, or requesting formatted data
when you don't need various column or formatted data take significantly more time and resources.
The optionIncludeDataValuesOption.OnlyNativeValuesis your friend for very large underlying or logical
table data. - Only one 
DataTableReaderper logical table id is supported. - Call 
DataTableReader.releaseAsync()when you are done processing the data. You can always
request another one if you need to do more processing after some period of inactivity or user
action. 
Extensions v1.9.0
Changes in the Dashboard Extensions API:
- Added the 
Filter.getAppliedWorksheets()andFilter.setAppliedWorksheets()methods. - Added the 
Dashboard.getFiltersAsync()andDashboard.applyFilterAsync()methods. - Added the 
Worksheet.applyRelativeDateFilterAsyncmethod. - Support for Tableau and Benton Sans fonts. You can now load these fonts during initialization.
 
For more information, see the Release Notes for Tableau Dashboard Extensions API version 1.9.0.
Extensions v1.8.1
Changes in the Dashboard Extensions API:
- Bug fixes
 - Documentation updates
 
For more information, see the Release Notes for Tableau Dashboard Extensions API version 1.8.1.
Extensions v1.8.0
Changes in the Dashboard Extensions API:
Added new enums available to createVizImageAsync:
VizImageSortDirectionTypeVizImagePaletteTypeVizImageSizeSettingTypeVizImageSizeSettingAlignmentType
For more information, see the Release Notes for Tableau Dashboard Extensions API version 1.8.