DevTools In-page API
Summary
window.__ADAPTABLE_DEVTOOLS__is defined as soon as AdapTable loads in the browser- Consoles, tests and AI coding agents can read a live Grid without the Chrome extension
- Every method returns plain JSON unless noted
As soon as AdapTable loads in a browser it defines window.__ADAPTABLE_DEVTOOLS__.
Note
- The AdapTable DevTools extension reads the same instance data
- This API does not require the extension
Call it from the browser console, a Playwright test, or an AI coding agent that can evaluate JavaScript in the page (Chrome DevTools MCP, the Cursor browser and similar).
Caution
Theme Builder, snapshot history and Migrate are part of the extension only
Every method returns plain JSON unless noted, so the result survives being copied out of the page.
Hint
- The
adaptableIdargument can be omitted when exactly one Grid is mounted - With several Grids pass it, and the error message lists the mounted ids
window.__ADAPTABLE_DEVTOOLS__.listInstances();
window.__ADAPTABLE_DEVTOOLS__.getGridInfo('Trades');
window.__ADAPTABLE_DEVTOOLS__.getState('Trades', 'Layout');
window.__ADAPTABLE_DEVTOOLS__.getLogs('Trades', {level: ['error', 'warn']});| Method | Returns |
|---|---|
help() | Usage text naming every method |
listInstances() | Each mounted Grid: adaptableId, AdapTable and AG Grid versions, adaptableStateKey, primaryKey, userName, and gridRuntime (all / visible / selected row counts) |
getGridInfo(id?) | What Grid Info shows: identity (including License Key and whether the Primary Key is auto-generated), current Layout (name, type, row groups, pivot columns, sorts), column filters, Grid Filter, row and column counts, Calculated / FreeText / Action Columns, available and unavailable Modules |
getState(id?, section?) | The whole Adaptable State (including the transient Internal, Popup, Comment and Plugins sections), or one section such as 'Layout' or 'FormatColumn' |
getPersistentState(id?) | The user state AdapTable persists; valid input for restoreState and for the adaptable CLI's check state --kind persistent and migrate state (and the check_state / migrate_state MCP tools) |
getColumns(id?) | Columns with id, friendlyName, dataType, field, columnTypes, visible (per the current Layout), readOnly, isPrimaryKey, isGrouped, pinned, Calculated / FreeText / Action flags, and whether the column is a generated row-group or pivot-result column; the whole dump is the --columns input of adaptable check state (the columns input of the MCP tools) |
getColumnInfo(id?, columnId?) | Read-only Column Info for one column: summary rows (id, header, data type, visibility, pinning, width, sort, filter, capability flags) and the objects scoped to it, using the same summary tags as the Settings Panel (including style colours). Omit columnId for the first column. columns lists every column so you can pick. Distinct cell values are not included |
getLogs(id?, { level?, channel?, limit? }) | Recent log messages (default 100, newest last), buffered whether or not localStorage.debug is set; filter by level (info, success, warn, error, perf) or channel substring |
getRecentActions(id?, limit?) | Recent state-changing actions (default 50, newest last) |
restoreState(id?, state) | Promise; loads a snapshot from getState, getPersistentState or a download from the extension; omit id when one Grid is mounted |
openSettingsPanel(id?, moduleName?) | Opens the Settings Panel, at a Module section when given |
setLogging(pattern) | Writes localStorage.debug (e.g. 'Adaptable:Trades:*'; null removes it) and returns the previous value; new channels pick it up at once, reload to apply it to every channel; see Logging |
enableProfiling(enabled?) | Writes localStorage.adaptableProfileTracks; see Profiling |
getApi(id?) | The live AdaptableApi of the instance (not serialisable; for calls inside the page) |
Hint
- Snapshots downloaded from the extension's State section are valid
restoreStateinput - They are also valid input for
adaptable check state --kind persistentandadaptable migrate state
AI Coding Agents
The adaptable-debug Agent Skill tells agents to read a running Grid through this API with whichever browser tool they have, instead of writing in-page scripts: listInstances(), getGridInfo() (with the licence key stripped), getLogs() for errors and warnings, getRecentActions(), getColumns() and only the implicated State section.
Hint
To add the Skill: npx skills add https://www.adaptabletools.com
The Skill then validates what it extracted with the adaptable CLI:
persistent-state.json is getPersistentState() and columns.json is getColumns(), saved to files. The same two files, with getGridInfo() and getLogs(), are the support bundle the Skill anonymises for a support case.
Note
- The API is defined only in the browser and only once AdapTable's code has loaded
- A method that throws
no AdapTable instance is mounted yetmeans the Grid is still initialising