Skip to main content

Release Notes

Preview (weekly preview)

Changes below are available in the weekly preview builds and will ship in the next RTM release.

Bugs

All Platforms

  • String values in Grid and Pivot PDF exports are no longer cut off at 200 characters. The PDF exporter previously applied its own 200-character limit on top of the engine's, so exports could show less text than the dashboard. That extra limit has been removed, and exported text now follows the engine's MaxStringCellSize setting (default 256 characters), so an export shows the same amount of text per cell as the dashboard does. To show more, raise MaxStringCellSize. Note that cells have a fixed width, so longer values wrap and increase page count.

2.2.0 (September 3rd, 2026)

Breaking Changes

  • The newTooltip beta feature flag has been removed. Hover tooltips are now the default, so any call that enables the flag can be deleted.
  • The new DataGrid is now the default grid visualization for the Reveal SDK. Existing Grid visualizations render with the new DataGrid without any dashboard changes. To continue using the legacy Grid, disable the newDataGrid feature flag. When conditional-formatting rules overlap on the same cell, the new DataGrid applies all matching rules in list order, with later rules taking precedence for overlapping formatting properties. This behavior differs from the legacy Grid and may affect dashboards that rely on overlapping rules after upgrading.

New Features

  • Charts now support user-authored annotations, with a dedicated editor and styling options. Point, slice, and strip annotation types are available on the category chart family, and annotations are saved with the dashboard so every viewer sees the same note in the same place.
  • The Grid, Pivot, Sparkline, and new DataGrid visualizations now support hyperlink columns, with URL and dashboard linking and field-token substitution. Cell and row context is passed to the dashboard-linking callback.
  • The redesigned tooltip is no longer in beta and is now the default. Tooltips appear on hover for every visualization type that supports them, and tooltip actions such as drill down and filtering are available directly from the tooltip. Use RevealView.showTooltips to turn them on or off. In addition, we’ve resolved the remaining known issues with tooltip behavior, providing a more consistent experience across all visualization types.
  • Visualization column hyperlinks and row-level actions now support relative URLs, which are normalized automatically when the URL field loses focus.
  • The new DataGrid visualization is now the default grid for the Reveal SDK, and it also supports interactive filtering through a "Filter By" action on eligible cells.
  • RVDashboard now exposes methods for loading a dashboard from JSON and serializing it back:
const dashboard = RVDashboard.loadFromJson(json);
revealView.dashboard = dashboard;

const asObject = revealView.dashboard.toJson();
const asString = revealView.dashboard.toJsonString();
  • When selecting a SQL-based data source, the metadata screen now displays the data source title instead of the database name.
  • The SQLite and DuckDB connectors now support parameterized custom queries.
  • The PostgreSQL connector now supports stored procedures.
  • Snowflake now supports applyTimeZone function.
  • MongoDB connector: fields missed by schema inference can now be used explicitly.
  • MongoDB query performance and join handling have been improved.
  • Tables, views, and stored procedures are now sorted alphabetically for SQL data sources.
  • Error messages for invalid data source URLs are now clearer.
  • General Japanese resource strings have been reviewed and corrected for consistency.

Bugs

All Platforms

  • Fixed a crash when sorting an XMLA data source by caption.
  • Fixed stale data in paged Grid Excel and CSV exports.
  • Fixed a crash when repeatedly closing the data filter dialog.
  • Fixed SortInterval in the SQLite connector to match the engine implementation.
  • Fixed MSSQL pagination failing when the query has no ORDER BY clause.
  • Fixed Excel data labels for calculated fields using default formatting.
  • Fixed several issues in SSRS.
  • Tooltips now follow the field's thousands-separator setting.
  • Fixed handling of subqueries without join nodes.
  • Refreshing a data filter's value list now re-fetches the values.
  • Fixed section fields when data blending is used.
  • Fixed a blank radial chart.
  • Fixed incorrect results returned by the Find function.
  • Fixed an issue in the KPI visualization.
  • Fixed a bug in grid paging.
  • Fixed bold conditional formatting in the DataGrid, which previously applied only italic styling.
  • Fixed DataGrid date and time cells falling back to an unformatted value when the column had no explicit date format.
  • Column summaries that are configured but hidden are no longer displayed in the DataGrid.

ASP.NET

  • Fixed an Unexpected UserContext instance type error when auto-loading date filter parameters.

2.1.0 (July 7th, 2026)

Breaking Changes

  • Removed the legacy $.ig and RevealApi global objects.

New Features

  • New data source: SQLite, with support for custom queries.
  • New data source: Cube.
  • New data source: DuckDB, with support for file and MotherDuck databases, custom queries, and stored procedures (DuckDB macros).
  • Most database connectors have been migrated to a new (v2) connector architecture, which adds built-in SQL injection protection.
  • The new DataGrid visualization (newDataGrid beta feature) now supports sorting, grouping, and filtering when attached to a paged data source, bringing it closer to parity with the classic grid's paging experience.
  • Linear gauge, radial gauge, and bullet graph visualizations have an updated UI and are no longer in beta.
  • Additional keyboard navigation and accessibility improvements for Pivot, Grid, and Sparkline visualizations, plus full keyboard navigation support in Edit Mode.
  • SQL Server data source: added support for the ApplicationIntent=ReadOnly and MultiSubnetFailover connection options.
  • Updated date filter UI. "Add Filter" is now hidden when all fields are already filtered.
  • additionalHeadersProvider now supports an async implementation:
RevealSdkSettings.setAdditionalHeadersProvider(async (url: string) => {
const token = await refreshTokenIfNeeded();
return { Authorization: `Bearer ${token}` };
});
  • Excel export now supports number formatting.
  • MongoDB connector: added support for allowDiskUse.
  • Improvements to custom visualization templates.
  • Added empty-data text to the DataGrid visualization, and updated the empty-state icon shown for the first visualization added to a dashboard.

AI

  • Introduced the first iteration of metadata enrichment, enabling automatic completion of the metadata catalog using AI. Disabled by default.
  • Added support for connecting multiple custom AI providers (Node and Java, C# already had it)
  • Migrated the Anthropic provider to the official Anthropic SDK.
  • Metadata layer improvements, including hot reload / partial regeneration, per-user context support, and a new pluggable metadata storage provider.
  • Exposed a networkTimeout option for built-in connectors.
  • Fixed date range handling for specific named quarters and months in dashboard generation.

Bugs

All Platforms

  • Fixed a crash in the TreeMap visualization caused by stale interaction data.
  • Fixed a missing tooltip in the Pivot visualization.
  • Fixed field-based conditional formatting for hidden and calculated fields.
  • Fixed the Grid visualization not showing its "no data" message.
  • Fixed hierarchy expansion when consecutive levels contain identical values.
  • Custom visualizations are no longer hidden when the context menu is open.
  • Fixed RevealView reverting a dashboard to its pre-edit state.
  • Fixed negative percentage formatting.
  • Fixed selected date values not propagating correctly during XMLA-to-tabular conversion.
  • The "Filter By" context menu option is now hidden when already filtered by that field.
  • Fixed incorrect query results when filtering by a hidden value field.
  • Fixed several issues with filter value selection.
  • Fixed data ranges in bubble chart Excel exports.
  • Fixed image export incorrectly restoring a stray dashboard close button.
  • Fixed loading XLSX files that use prefixed namespaces or absolute relationship targets.
  • Fixed filter and maximize issues in Embedded Dashboard.
  • Improved maximize reliability.

Java

  • Fixed an issue that would cause an error when defining BigQuery data source items in Java.

2.0.0 (May 14th, 2026)

Breaking Changes

All Platforms

  • The legacy Java and WPF engine backends have been removed.
  • Legacy chart types have been removed.
  • The deprecated DateFilter property has been removed from RevealView, RVDashboard, RVDateDashboardFilter, RevealSettings, IExportOptions, and related classes.
  • RVDashboardThumbnailView has been deprecated in favor of the new RVThumbnail class.
  • SQL Server-based connectors now use the official Microsoft SQL Server client library, which requires trusted TLS certificates by default. If your SQL Server, Azure SQL, or Azure Synapse connection uses an untrusted or self-signed certificate, set TrustServerCertificate during the data source setup.

Node

  • The dateFilter property has been removed from the headless export options. Use the filters array with RVDateDashboardFilter and RVDateRule instead.

Java

  • The Java SDK now requires Java 17 or higher.
  • The Java SDK now uses the io.revealbi:reveal-sdk-servlet Maven artifact and a servlet-based setup with RevealEngineServlet.
  • The Java SDK supports Linux, Windows, and macOS, with both x64 and arm64 architectures.
  • If you use Jetty as your server, its version might conflict with the Jetty version used internally by Reveal SDK, which is currently 12.0.12.

New Features

All Platforms

  • New data source: Azure CosmosDB.
  • New data source: ClickHouse.
  • Conditional formatting can now be applied based on field values for Grid, Pivot, Bar, Column, and Text visualizations. In addition to comparing against a fixed (static) value, conditional formatting rules support comparing a field's value against another field in the same visualization. The formatting is then evaluated independently for each row based on that row's actual data. Read more..
  • New RVThumbnail class for programmatically generating thumbnails of dashboards and individual visualizations. It replaces the deprecated RVDashboardThumbnailView API and supports runtime theme changes.
import { RVThumbnail } from "reveal-sdk";

async function renderThumbnail() {
await RVThumbnail.fromDashboard("#thumbnail", "Sales");
}

renderThumbnail();
  • The DataGrid visualization now supports cell selection, multi-cell drag selection, and copying cell values to the clipboard via Ctrl+C, along with an updated column header, alternate row, and cell border design.
  • RevealView is now available as a standalone npm package.
  • The cell limit setting has moved from $.ig.RVUtility.prototype.maxCellsRestriction to RevealSdkSettings.maxCellsRestriction.
  • Keyboard navigation is now enabled by default. Widget titles and interactive elements include improved ARIA attributes for screen readers.
  • A draggable splitter has been added to the visualization editor between the chart and data areas.
  • Integrated authentication for SQL Server connections has been improved.
  • Data agent connection recovery has been improved to handle network interruptions more reliably.

Java

  • The Java SDK now has feature parity with the .NET SDK for connectors and extension points, with the exception of InMemoryDataProvider, which will be ported to Java in a future release.
  • The Java SDK now supports Redis caching via RVRedisOptions.
  • DefaultDashboardTheme is now supported.
  • Headless export now supports CSV format.
CsvExportOptions options = new CsvExportOptions();
options.setUseFormattedValues(true);
CompletableFuture<InputStream> result = dashboardExporter.exportToCsv("dashboardId", null, options);
  • IRVDataModelProvider is now available as a beta API, enabling custom field schemas, calculated fields, and custom measures — matching the existing .NET implementation.
public class MyDataModelProvider implements IRVDataModelProvider {
@Override
public CompletableFuture<List<RVDataModelField>> editSchema(RVDataSourceItem dataSourceItem, List<RVDataModelField> schema, IRequestContext requestContext) {
// customize field schema
return CompletableFuture.completedFuture(schema);
}

@Override
public CompletableFuture<List<RVDataModelCalculatedField>> getCalculatedFields(RVDataSourceItem dataSourceItem, IRequestContext requestContext) {
// inject calculated fields
return CompletableFuture.completedFuture(null);
}

@Override
public CompletableFuture<List<RVDataModelMeasure>> getMeasures(RVDataSourceItem dataSourceItem, IRequestContext requestContext) {
// inject custom measures
return CompletableFuture.completedFuture(null);
}
}
  • Cache settings previously only available in .NET — including maxDownloadSize and maxInMemoryCells — are now exposed in the Java SDK.
  • RVDateRule is now available for headless export date filters.
ExportOptions exportOptions = new ExportOptions();
exportOptions.getFilters().add(new RVDateDashboardFilter(new RVDateRule(RVPeriodRelation.TO_DATE, RVPeriodType.YEAR)));

Node

  • IRVDataModelProvider is now available as a beta API, enabling custom field schemas, calculated fields, and custom measures — matching the existing .NET implementation.
class MyDataModelProvider implements IRVDataModelProvider {
async editSchema(userContext, dataSourceItem, schema) {
// Modifies existing fields in the schema (e.g. changing defaultAggregation, label, or description). Return the modified array to apply changes, or null to keep the original.
schema.find(f => f.name === "Discount").defaultAggregation = RVDashboardAggregationType.CountDistinct;
schema.find(f => f.name === "UnitPrice").label = "Price per Unit";
return schema;
}
async getCalculatedFields(userContext, dataSourceItem) {
// Injects new computed fields using expressions that reference existing field names (e.g. [UnitPrice] * [Quantity]). These show up as additional fields in the visualization editor.
return [{ name: "LineTotal", type: RVDashboardDataType.Number, expression: "[UnitPrice] * [Quantity] * (1 - [Discount])" }];
}
async getMeasures(userContext, dataSourceItem) {
// Injects custom aggregate measures using expressions like sum(...), sumif(...), or PREVIOUS(...). These appear as available measures when building visualizations.
return [{ name: "Total Revenue", expression: "sum([UnitPrice] * [Quantity])", description: "Revenue before discount" }];
}
}
  • Cache settings previously only available in .NET — including maxDownloadSize and maxInMemoryCells — are now exposed in the Node SDK.
const revealOptions: RevealOptions = {
maxDownloadSize: 200 * 1024 * 1024,
maxInMemoryCells: 10_000_000,
};
  • RVDateRule is now available for headless export date filters. The dateFilter property has been removed — use filters instead.
const exportOptions = new ExportOptions();
exportOptions.filters = [new RVDateDashboardFilter(new RVDateRule(RVPeriodRelation.ToDate, RVPeriodType.Year))];

Bugs

All Platforms

  • Not all chart series were rendered, and hovering on a combo stacked series caused a crash.
  • Keyboard focus was lost when a dashboard finished loading.
  • Gauge visualization did not clamp to its maximum value when the data value exceeded it.
  • Concurrent calls to overrideLocale could produce incorrect behavior.
  • parseISODate was not available in the TypeScript-only build.
  • Thumbnail generation failed for certain chart types.
  • Localization did not work correctly when using module bundlers.
  • The RevealView constructor did not correctly accept a CSS selector string — only DOM elements worked.
  • Date fields were assigned an incorrect column type in RVJsonSchemaConfigBuilder.
  • A null reference crash occurred in the pivot field editor when Data was not set.
  • Opening conditional formatting rules with null or empty color properties caused a crash.
  • Mismatched filters caused headless export to fail.
  • An error occurred when navigating back after following a dashboard link.
  • MongoDB VerifyConnection was failing unexpectedly.
  • A regression caused filterValueChangedEvent to not fire correctly.
  • The "titles in first row" parameter for Excel data source items was being incorrectly set.
  • Missing title in the datasource selector dialog.