
Apache Superset 6.1 Release
We're excited to announce Apache Superset 6.1, the first minor release in the 6.x line, and one that sets up the next era of how Superset is built and extended. Where 6.0 was defined by a sweeping visual overhaul, 6.1 is defined by extensibility and automation: a maturing Extensions framework, a brand-new Model Context Protocol (MCP) service that gives AI assistants a structured way to drive Superset, and a Global Task Framework that brings order to long-running work across the platform.
With work from 136 contributors, including 69 first-time contributors, this release gathered over 1,500 pull requests spanning the new extension surfaces, AI tooling, dozens of chart and dashboard refinements, broader database support, and a long list of fixes.
As usual, it's worth noting that Preset customers have already had much of this available to them, as we release at a more frequent cadence than the official Superset releases. We're constantly cherry-picking fixes and small features into our release branch, so most of what follows is already running in Preset workspaces today.
Download & Resources
- Official Source Release: downloads.apache.org/superset/6.1.0
- PyPI Package: pypi.org/project/apache_superset/6.1.0
- Changelog: CHANGELOG/6.1.0.md
- Upgrade Instructions: UPDATING.md
It's also worth noting that you (yes, you!) can be a part of helping to shape, test, and vote on release candidates to help them along. Release management discussions happen regularly in synchronous meetings open to anyone via the Superset Community Calendar, and asynchronously on Slack in the #release-feedback-and-questions channel. Releases are voted on via the Superset Dev mailing list, which you can subscribe to by sending an email to dev-subscribe@superset.apache.org.
Highlights
The Extensions Framework Comes of Age
Superset 6.1 turns the Extensions framework from a promising idea into a practical toolkit. Extensions can now contribute real functionality through stable, published APIs in @apache-superset/core, instead of forking the application or relying on internal imports.
Two changes anchor this work. First, extension contributions moved to a code-first model (#38346): extensions register views, menus, commands, and editors as plain code in their entry module rather than declaring them in a static extension.json file that had to be kept in sync by hand. A new loader built on webpack Module Federation runs each extension's registrations before route components mount, so the registries are always populated when the UI renders.
Second, the SQL Lab extension API grew up. Extensions can now control the editor and manage tabs and queries through an async, action-oriented interface (#37642), inspect query results and errors through typed lifecycle events (#35077), and wire SQL Lab's toolbar actions through the Extension Manager (#36644).
Perhaps the most visible payoff is replaceable editors (#37499). A new editors contribution point lets an extension swap Superset's default Ace editor for Monaco, CodeMirror, SimpleMDE, or anything else, on a per-language basis. Every editor surface in the app, from SQL Lab to the Dashboard Properties, CSS, annotation, and theme modals, now routes through a single EditorHost that falls back to Ace when no provider is registered.
To support all of this, 6.1 also ships a dedicated Developer Portal (#34271) with independently versioned documentation, an architecture overview, a frontend API reference, and a CLI reference for the new apache-superset-extensions-cli toolchain.
Superset Speaks MCP: An AI-Ready Interface
One of the biggest stories in 6.1 is the new MCP (Model Context Protocol) service (#35877), which gives AI assistants and automation tools a structured, authenticated way to work with Superset instead of screen-scraping or guessing at undocumented REST calls.
The service lives in its own superset/mcp_service/ package and is entirely opt-in: it ships as an optional fastmcp dependency, requires no database migrations, touches no existing UI, and runs as a separate process started with superset mcp run. It exposes a set of tools across charts, dashboards, datasets, SQL Lab, and instance metadata. Chart generation runs through a multi-layer validation pipeline with guards against XSS and SQL injection and fuzzy-match suggestions when a column name is wrong; SQL Lab tools enforce query timeouts and result-set limits. Security is handled with JWT-based authentication on every tool, plus a middleware layer that applies field-level access controls derived from the token's scopes.
A companion change adds clean MCP abstractions to superset-core (#36151), so extension authors can register their own AI tools with simple @tool and @prompt decorators rather than coupling to internal Superset imports. Across the release, more than 150 pull requests touched MCP, building out the tool catalog, observability, and authentication. This is an early foundation, and we expect it to grow quickly. On the Preset side we build on it directly: Preset layers its own MCP services on top of Superset's, and powers a chatbot with the combined set of MCP tools.
The Global Task Framework
Features like thumbnails, alerts and reports, and SQL Lab each used to manage their own Celery tasks with no shared visibility or cancellation support. The new Global Task Framework (#36368) replaces that patchwork with one unified system for tracking, deduplicating, and cancelling long-running work.
A @task decorator wraps both async and inline execution, two new tables record task state, and a REST API under /api/v1/task/ exposes list, detail, status, and cancel endpoints. Deduplication means a matching active task gets new callers joined as subscribers rather than spawning a duplicate, and cancellation is scope-aware so shared tasks behave sensibly when several users depend on them. A new Task List UI gives users real visibility into what's running and the ability to cancel tasks that support it.
The framework is gated behind the GLOBAL_TASK_FRAMEWORK feature flag and is off by default. For production Redis deployments, pair it with the new Distributed Coordination Backend described in the upgrade notes below.
Matrixify: Matrix-Style Pivots
Matrixify, Superset's matrix/pivot layout for charts, got a control panel revamp (#38519) that makes it far easier to reason about. A single on/off switch replaces the old pair of layout checkboxes, each axis gets its own mode selector for Metrics or Dimensions, and a new "All dimensions" option auto-loads dimension values with explicit sort controls.
A companion change enforces a sensible constraint at the control level (#37169): because metrics can only live on one axis at a time, choosing Metrics on one axis now disables it on the other, with a tooltip explaining why.
Dataset Folders Editor
6.0 introduced dataset folders in the Explore view; 6.1 adds the editor for building them (#36239). Behind the DATASET_FOLDERS feature flag, a new Folders tab in the dataset modal lets you create, rename, nest, and drag-and-drop metrics and columns into a hierarchy up to three levels deep, with fixed default folders for Metrics and Columns and a virtualized tree that stays fast on large datasets. A follow-up refined the drag interaction so that grabbing a folder header moves the whole block as a single unit (#38122).
Auto-Refreshing Dashboards, Without the Flicker
Dashboard auto-refresh used to fire a toast on every cycle and make charts flash a loading spinner. 6.1 reworks it into a proper feature (#37459). A persistent status indicator shows refresh health, last refresh time, interval, and error count, with play and pause controls right beside it. An optional setting pauses refreshing when the browser tab is hidden and re-fetches the moment you return. Charts now update in place rather than flickering, and a deterministic secondary sort keeps series order stable across refreshes.
Dynamic Currency Formatting
Currency formatting previously required a single fixed symbol chosen by hand. With dynamic currency (#36416, SIP-193), a dataset owner can designate a column that holds ISO 4217 currency codes, and charts can then pick "Auto-detect" to resolve the right currency from the data at render time. When the data contains a single currency, that symbol is used; mixed-currency results fall back to neutral formatting. Support spans Time-series, Big Number, Table, Pivot Table, Pie, and many other chart types, with per-cell detection in tables.
Theming Refinements
The theming system that landed in 6.0 picked up some welcome polish. Theme authoring now validates structure and token names as you type, flagging unknown tokens as warnings and structural problems as errors, and a runtime recovery path falls back through the system default, cached, and built-in themes so a bad custom theme can no longer trap the app in a crash loop (#37378). Separately, Superset standardized on IBM Plex Mono for code and numeric displays (#37366), so things like the SQL Lab query timer no longer shift width as the digits change.
Model Context Protocol Tooling
Beyond the core service, a large body of work built out what AI assistants can actually do through MCP:
- Tools to create charts across many types, including Big Number, Pie and Donut, Pivot Table V2, Mixed Time-series, and Handlebars (#38403, #38375, #38402)
- A preview-first flow for chart updates and a chart-type schema tool so agents can discover valid configurations (#39383, #39142)
- A
create_virtual_datasettool so assistants can chart joins, CTEs, and ad-hoc SQL (#39279) - Database listing and inspection tools for browsing connections (#39111)
- Support for referencing saved dataset metrics in generated charts (#38955)
- Awareness of unsaved chart and dashboard state, so assistants describe what a user currently sees (#37183)
- A BM25-based tool search that trims the catalog sent on connect to cut token usage (#38562)
- Tool observability with per-call duration and success logging (#38523)
Chart & Visualization Improvements
- ECharts option editor for area, bar, line, and multi-time-series charts (#37868)
- "Color by primary axis" for bar charts with no dimensions set (#37531)
- Conditional formatting can now target a specific column or an entire row in the Table chart (#35897)
- Conditional formatting extended to row and column header cells in the Pivot Table (#35863)
- Natural language date parsing for "first of" expressions in time filters (#37098)
SQL Lab Updates
- A high-performance treeview table selector for browsing schemas and tables (#37298)
- A step-based query progress bar showing validate, connect, running, and fetch stages (#36936)
- Save a chart to a specific dashboard tab from the "Save as..." modal (#36332)
- A
getActivePanel()function in the SQL Lab extension API (#37448)
Embedded Analytics & SDK
- A
setThemeMode()method so host apps can switch an embedded dashboard between default, dark, and other modes (#36125) - A
resolvePermalinkUrlcallback for substituting your own domain when users copy a link (#36924) - A
getChartDataPayloadsmethod (SDK v0.3.0) exposing query payloads for stateful charts like AG Grid tables (#36237) - An "Embed code" option in the chart Share submenu, behind the
EMBEDDABLE_CHARTSflag (#33163) - A
DISABLE_EMBEDDED_SUPERSET_LOGOUTflag to hide the logout button inside an iframe (#37537)
Database Support
6.1 adds several brand-new database connectors:
- MongoDB support, allowing SQL queries against collections (#37368)
- New engine specs for Apache Phoenix and Apache IoTDB (#37590)
- A Google Cloud Datastore engine spec (#37677)
- AWS cross-account IAM authentication for Aurora PostgreSQL, Aurora MySQL, and Redshift (#37585)
- Multi-catalog support for StarRocks (#37026)
- Dynamic schema support for AWS Athena (#36003)
- A custom SQLGlot dialect for IBM DB2 labeled-duration syntax (#36365)
- OAuth2 re-authentication from the table selector dropdown (#37315)
Alerting & Reporting
- A Webhook notification method that POSTs report data to any HTTPS endpoint (#36127)
- Configurable native dashboard filters when scheduling an alert or report, so the screenshot reflects the right filter state (#32196)
- An external-link warning flow that routes external email hrefs through a redirect endpoint (#35021)
- Owner selectors now show each owner's email as secondary text (#37906)
- Backend PDF and PNG downloads use the dashboard title as the filename (#34988)
- A
REPORTS_CSV_NA_NAMESoption to control which strings pandas treats as null in scheduled reports (#35481)
Upgrading to 6.1
Please review the full UPDATING.md, along with Superset's upgrade documentation, for detailed instructions. Key changes to be aware of:
If you're on Preset, there's nothing to do here — we stay close to Superset's master, so all of these changes (and plenty more that didn't make the 6.1 cut) are already running in your workspace, upgraded for you.
Distributed Coordination Backend
A new DISTRIBUTED_COORDINATION_CONFIG provides a unified Redis-based backend for real-time coordination: pub/sub messaging between workers, atomic distributed locking via Redis SET NX EX, and event-based coordination for background tasks. The Global Task Framework uses it for abort and completion signaling, and it will eventually replace GLOBAL_ASYNC_QUERIES_CACHE_BACKEND as the standard signaling backend. Configuring it is recommended for Redis-enabled production deployments.
MCP Service Configuration
The new MCP service runs as a separate process and ships as an optional dependency (pip install apache-superset[fastmcp]). Development uses a single MCP_DEV_USERNAME; production must configure JWT authentication via MCP_AUTH_ENABLED and the related MCP_JWT_* settings. See superset/mcp_service/ for the architecture, security, and production guides.
APP_NAME and branding move to the theme system
APP_NAME (#37370) no longer controls the browser tab title or frontend branding. Set the brandAppName token in your theme configuration instead. APP_NAME is still used for backend contexts and serves as a fallback when brandAppName is unset.
CUSTOM_FONT_URLS removed
CUSTOM_FONT_URLS (#36317) has been removed in favor of the per-theme fontUrls token in THEME_DEFAULT or database-managed themes.
Default hash algorithm changed to SHA-256
The default hash algorithm moved from MD5 to SHA-256 for improved security and FedRAMP compliance (#35621). This affects cache keys for thumbnails, dashboard and chart digests, and filter option names, so existing cached data is invalidated on upgrade. To keep the old behavior, set HASH_ALGORITHM = "md5" in superset_config.py.
ClickHouse minimum driver version
The minimum clickhouse-connect version is now >=0.13.0. The legacy _mutate_label workaround that appended hash suffixes to column aliases has been removed, since it is no longer needed with modern drivers.
WebSocket config for Global Async Queries on Docker
If you run Global Async Queries over WebSockets, the Docker setup changed (#35896, #37624): copy the new docker/superset-websocket/config.example.json to config.json (now git-ignored) and update your docker-compose.override.yml volumes accordingly.
Internationalization
- A complete Māori (te reo Māori) translation covering all 4,036 UI strings (#37443)
- A new i18n lint rule that wraps untranslated frontend strings (#37776)
- A fix ensuring the language pack loads before React renders (#36893)
- Updated French and Spanish translations, plus periodic string extraction (#35070, #33940)
Dependency Updates
- New
@apache-superset/coreandapache-superset-extensions-clipackages reached0.1.0release candidates (#38516) - Flask-AppBuilder bumped to 5.0.2 (#36086)
- Flask upgraded to 3.1.3 (#38168)
cryptographyupgraded to 46.0.5 (#37912)- Dependabot did the bulk of the housekeeping: 592 dependency-update PRs landed during the 6.1 cycle, keeping frontend and backend packages current for security and stability
Contributors
This release was made possible by 136 contributors:
Abdulrehman-PIAIC80387, akshatsinha0, alekseyolg, alex-poor, alex241728, alexandrusoare, Alok-kumar-priyadarshi, AlwaysIngame, amaannawab923, aminghadersohi, amsharm2, amym-li, andy-clapson, Antonio-RiveroMartnez, AoLiGei1221, ap-Codkelden, avindra, betodealmeida, bouk, BrandanBurgess, cat-uoft-1, ChadRosseau, CoffeeWriter, connorshea, cr0fters, cyber-jessie, cyphercodes, DamianPendrak, danawan0409, danielalyoshin, dankor, declan-zhao, deuspt, Dev10-34, dgarciabriseno, dheeraj12347, dim-ops, dpgaspar, drummerwolli, edison-lhk, elefeint, EnxDev, eschutho, gabotorresruiz, ganeshbabugb, geido, greggailly, hainenber, hlyda0601, hughhhh, iercan, innovark37, ionik0, ironponcho, ishmulyan, javacatknight, jcardenas3, jeroenhabets, jesperct, joaopedroab, joe-clickhouse, JoshuaJADaniel, justinpark, kgabryje, kmstr87, Krishnachaitanyakc, lc-4918, LevisNgigi, lion90, LuisSanchez, luizotavio32, madhushreeag, massucattoj, Mayankaggarwal8055, mcdogg17, michael-s-molina, mikebridge, mistercrunch, mohammadqassim12, Morilili, msyavuz, murphylee10, Neko1313, nilmonto, nitishagar, nytai, ompharate, OrhanBC, padbk, passren, Pegoku, pgoslatara, phinjensen, phmoraesrodrigues, PolinaFam, qleroy, rad-pat, ramiroaquinoromero, RealGreenDragon, RebeccaH2003, rebenitez1802, retrry, reynoldmorel, richardfogaca, rohan436, Rohan5commit, rusackas, sadpandajoe, SakshiiRohida, SBIN2010, sfirke, sha174n, sjingoi, SkinnyPigeon, splasky, stockarea, tadeha, ThunderRoar, Tilakmahajan, tt-a1i, tzercin, VanessaGiannoni, veeceey, venkateshwaracholan, viksuper555, villebro, VincentTrung, Vitor-Avila, vncsalencar, Wengxin04, xe-nvdk, yousoph, YousufFFFF, ysinghc, YuriyKrasilnikov, zhaorui2022
First-Time Contributors
Special recognition to our 69 first-time contributors: Abdulrehman-PIAIC80387, akshatsinha0, alex-poor, alex241728, Alok-kumar-priyadarshi, aminghadersohi, amsharm2, amym-li, AoLiGei1221, ap-Codkelden, avindra, bouk, ChadRosseau, CoffeeWriter, connorshea, cr0fters, cyber-jessie, cyphercodes, danawan0409, declan-zhao, deuspt, dgarciabriseno, dheeraj12347, edison-lhk, elefeint, ganeshbabugb, greggailly, hlyda0601, ionik0, ironponcho, ishmulyan, javacatknight, jcardenas3, jeroenhabets, joaopedroab, joe-clickhouse, JoshuaJADaniel, Krishnachaitanyakc, lc-4918, lion90, madhushreeag, massucattoj, Mayankaggarwal8055, mikebridge, mohammadqassim12, Neko1313, nitishagar, OrhanBC, Pegoku, pgoslatara, phinjensen, retrry, Rohan5commit, SakshiiRohida, sjingoi, splasky, stockarea, tadeha, Tilakmahajan, tt-a1i, tzercin, veeceey, venkateshwaracholan, viksuper555, vncsalencar, xe-nvdk, YousufFFFF, ysinghc, YuriyKrasilnikov
Where Contributors Come From
Superset's contributors span independent developers and teams running Superset in production. Among the organizations represented in 6.1 are Airbnb, Zalando, UserGuiding, VLMedia, Stockarea, and the City of Ann Arbor — all of which also appear on Superset's In the Wild list. Running Superset at your company? Add your organization there too.
Get Involved
Interested in contributing to Apache Superset? Here's how to get started:
- Contributing Guide: superset.apache.org/docs/contributing
- GitHub Repository: github.com/apache/superset
- Community Slack: Join the conversation at superset.apache.org/community
- Documentation: superset.apache.org
We welcome contributions, and we'd love help testing and voting on future releases. If you have any questions, please don't hesitate to reach out on Slack.
What's Next
6.1 lays a lot of groundwork, and there's plenty more coming.
- The Extensions framework and its CLI are moving toward a stable
1.0, with a growing catalog of community extensions and richer contribution points. - The MCP service is just getting started. Expect a broader tool catalog, deeper dashboard and dataset coverage, and more polish around authentication and observability.
- Superset 7.0 is on the horizon, where several in-flight SIPs aim to build on the extensibility and AI foundations laid here. Stay tuned!
Thank you to everyone who contributed to Superset 6.1, and especially to those who tested and voted on the release candidates to get it over the line. Happy exploring!
Related Reading
- Apache Superset 6.0 Release — The previous major release, with Ant Design v5 and dark mode
- Apache Superset 5.0.0 Release Notes — The 5.0 major release
- Running Apache Superset on the Open Internet — Security best practices