Skip to content

App limitations

5 min read · Updated 1 Nov 2026

Use axis ranges and scales, line-end labels and chart animation controls for the settings available in @astrato-io/visualizations 0.6.2. The remaining findings below were recorded with visualizations 0.5.1, @astrato/sdk 0.4.0 and @astrato/app-runtime 0.1.0. That runtime name records the package actually tested; the current public name is @astrato-io/app-runtime. Findings explicitly labelled 0.5.1 have not been reverified on 0.6.2. Pages that need a missing capability link here.

Gap Affects
No operation shows, hides or colours gridlines. Styles, Tufte
No operation moves the value axis. setInvertAxis reverses its direction; only the heat map has setShowAxisOnTop. Economist, Financial Times
Axis labels, data labels and legends have no font-family operation, and axis labels have no font-size operation. number, simpleTextObject and table take a font family. All styles, Ops wall
No operation wraps or rotates category-axis labels, or sets the width of the category axis. A bar with long labels rotates them by itself, and horizontal bars in one row start at different positions. Card grid, Economist
No operation or definition field sets the legend order; a categorical legend lists values A→Z, whatever order the bars are in. Legend, Keep a value’s colour across charts
No colour for a named category value. Palettes assign colours by domain order or by hash; see Styling and theming. Storytelling with data, Economist, Financial Times, Visual essay, Legend, Few
histogram has no palette or series-colour operation, so it stays in the default colour. Recorded with visualizations 0.6.5. Theming
Data labels are shown per measure, not per category. Storytelling with data
No text, arrows or reference lines anchored to data points inside the plot. Fixed shaded measure-axis bands are supported; see Axis ranges and scales. All styles, Cairo, Kirk
No uncertainty interval that follows a series or error bars. Fixed measure-axis bands mark a range of measure values. Explainer, Cairo
Line size and line style operations exist on line only, not on combo or radar. Explainer, Showcase
bar, combo and heatMap have no data-label text colour operation; bar and combo have only setMeasureDataLabelBackdropColor. Financial Times, Astrato default
Axis charts, pie and number have no background operation. Financial Times, dark themes in all styles
Treemap and sankey labels take no text colour; radar spoke labels take no colour; word-cloud words take no font. Information is Beautiful
Charts do not automatically read prefers-reduced-motion; your app can apply it with animation controls. No operation sets animation duration or easing. Visual essay, Long-form
The number comparison takes one colour (setComparisonFontColor); no operation colours it by sign. KPI card
(0.6.5) number draws an empty value as 0, in its format, so a missing comparison reads as 0%. Show a value that can be empty in your own card. KPI card
(0.5.2) scatter has no reference line or quadrant operation. Write the thresholds in the panel header or as a text overlay. Query performance
(0.5.2) No marker for a range of the dimension axis, such as a date or lap window. Draw it as a labelled band above the chart, aligned to the axis. Narrative
(0.5.2) heatMap data labels are configured but do not render. Add a colour-scale legend beside the chart. Legend
Gap Affects
No map: map is a Workbook-only object; see Limitations. Map-led, Map
No bullet graph, chord, network, circle-packing, sunburst, beeswarm, pictogram or streamgraph type. Few, Kirk, Information is Beautiful
No trellis panels, smoothers, quantile or Q-Q plots, and no aspect-ratio banking. Cleveland
number takes exactly one measure and no dimension, so it cannot draw a trend. KPI card
Sparklines exist only as table-column representations. Tufte
dot takes exactly two dimensions and one measure. Cleveland
simpleTextObject takes no query data; your code sets its text. Narrative
Gap Affects
The visualization runtime has no click event; a mark reports a click only as a selection. Drill-down, Drill-through
No operation makes a chart ignore clicks, so every chart needs a selection bar or another way back. Filters and selections
(0.6.5) Clicking the only selected mark again leaves every mark pale until that empty selection is applied or cleared. Filters and selections
No operation replaces a chart’s dimension or switches a grouped dimension’s level; only table has changeColumnField to replace a column. Drill-down, Chart switcher
sourceInstanceId is optional in the selection shape; see Selections. Drill-through
Selections are held in memory and a reload loses them; see Limitations to design around. Drill-through, Detail, Period picker
Gap Affects
filter modes are dropdown and listbox only. Quick filters
A selection group holds one selection per field and kind, so a current and a comparison period cannot both be selections on one date field; see Selections. Period picker, KPI card
In @astrato-io/visualizations 0.5.1 a filter object throws Cannot destructure property 'view' and stops rendering once a selection is applied in its group. Filter bar, Filter panel, Quick filters
date-picker has no comparison period. Period picker
(0.5.2) A static definition filter on a raw date column, such as limiting a chart to the last 18 months, is silently ignored. Filter on a governed mapping dimension built over the date instead. Period picker
(0.5.2) A click on a chart built on a layer-defined dimension does not filter other charts; the selection is dropped. Build charts that should cross-filter on raw view fields. Filters and selections
Gap Affects
The visualization runtime has no refresh method or interval. Ops wall
(0.5.2) The runtime does not pass the requesting object’s id to engine.getData, so an app-side scheduler cannot tell which tile a request belongs to without matching field keys. Query performance
On a demo tenant (October 2026) the median engine round trip per query was 0.65–1 s while the warehouse answered from cache in about 80 ms, and it rose under tenant load. App code can reduce browser queueing but did not reduce the round trip. Query performance
Readiness reports rendered, error, unmounted or timeout; no status reports that a mounted object returned no rows. Object states
query() takes no timeout, retry or cancellation option; see Queries. In a published App, the App runtime ends a query after 60 seconds with timed_out. Object states, Narrative
The App runtime has no error code for a refused permission or an expired session; it reports an HTTP error response as runtime_request_failed with the response status. Page states
An App can read the semantic layer and execute queries; it has no text-generation service; see What a Data App can reach. Narrative