
Apache Superset Community Update - September 2025
Welcome Superset community! 🚀
September has been an incredible month for Apache Superset, with 175 pull requests merged! This update covers the period from September 1-30, 2025, highlighting major improvements across the platform. Key themes this month include enhanced internationalization support, significant performance optimizations, and exciting new features for data visualization and exploration.
User-Facing Improvements
UI/UX Enhancements
The community has been hard at work making Superset more beautiful and intuitive:
-
Improved Dark Mode Support: Fixed visibility issues across multiple components including SQL editor autocomplete highlighting PR #35316, table chart cell bars PR #35211, and Gantt chart Y-axis labels PR #35189. The UI now provides consistent contrast and readability in dark theme.
-
Enhanced Chart Gallery: Added comprehensive dark mode support for 80+ chart types with dark-themed thumbnails and examples PR #35111. The gallery now includes improved keyboard navigation with auto-selection when tabbing through options.
-
Better Loading Experience: Replaced static loading GIFs with customizable animated SVG spinners that support contextual sizing and theme integration PR #34764. Small muted spinners for filters, medium for explore pages, and large for main page loading.
-
Consistent Spacing and Colors: Normalized dashboard spacing and background colors throughout the interface PR #35001, providing better visual hierarchy and consistency.
Data Handling & Export
Major improvements to how Superset handles and exports data:
-
Unicode Support in CSV Exports: CSV exports now properly handle Unicode characters including Chinese, Arabic, and other non-Latin scripts PR #34763. This fix ensures international users can export their data without character encoding issues.
-
Smarter CSV Upload Error Messages: When uploading CSV files with data type mismatches, users now receive detailed error messages showing exactly which values are problematic and their line numbers PR #34763. No more generic "upload failed" messages!
-
NULL Value Handling: Fixed display of NULL values in table charts - they now show as grayed-out "N/A" consistently across all column types including dates PR #34558. Bar charts with categorical axes now properly display NULL values as "
" category PR #34761.
Visualization Features
Exciting new capabilities for data visualization:
-
Custom Tooltips for deck.gl Charts: All deck.gl visualizations now support customizable tooltips using Handlebars templates PR #34276. Create rich, informative tooltips with syntax highlighting and autocompletion.
-
Time Series Table Enhancements: Added support for area and bar sparkline types in addition to line charts PR #35180. More ways to visualize trends within table cells!
-
ECharts Theme Overrides: Administrators can now customize ECharts visualizations globally or per chart type through the theme system PR #34876. Perfect for corporate branding and consistent styling.
-
Legend Sorting: Added ability to sort legend items alphabetically in ascending or descending order across seven chart types PR #34911.
-
BoxPlot Data Zoom: BoxPlot charts now support data zooming with mouse wheel panning PR #35097.
Performance & Speed
Significant performance improvements throughout the platform:
-
2% Faster API Response Times: The Flask-AppBuilder upgrade brings ~2% improvement in API response times PR #33055.
-
5x Faster Date Parsing: Smart format detection for datetime columns provides ~5x speedup when parsing consistent date formats PR #35042.
-
Optimized Chart Rendering: Refactored chart property processing to prevent redundant computations through proper caching PR #34874.
-
Optional Garbage Collection: New feature flag allows forcing garbage collection after each request to manage memory in analytics workloads PR #35061.
Internationalization
Better support for global users:
-
French Translation Updates: Comprehensive update to French translations including new UI elements and improved terminology PR #35070.
-
Ukrainian Translation Fixes: Fixed critical translation errors that were causing server crashes PR #34722.
-
Translatable Chart Descriptions: Chart type descriptions now properly translate when switching languages PR #34918.
Developer Experience
Improvements for developers and administrators:
-
AI-Powered TypeScript Migration: New framework for systematically migrating JavaScript to TypeScript using AI agents with parallel processing PR #35045. Successfully migrated 17 files with zero
any
types! -
Playwright Test Integration: Added Playwright testing infrastructure as part of migration from Cypress PR #35110. Includes interactive UI mode and comprehensive CI/CD integration.
-
Enhanced BaseDAO Layer: Improved programmatic filtering capabilities for external API integrations PR #35018. Supports 14 filter operators with type-safe implementation.
-
SQL Lab Extension APIs: New query interface APIs for better integration and monitoring of SQL Lab extensions PR #35077.
Bug Fixes
Critical fixes improving reliability:
Charts
- Fixed "Other" slice click error in pie charts PR #35086
- Resolved legend display issues in mixed timeseries charts PR #35005
- Fixed tooltip number formatting with query identifiers PR #35224
- Corrected legend margin handling in mixed timeseries PR #35036
- Fixed virtual dataset names without schema prefix in chart list PR #34760
Dashboards
- Fixed table charts rendering after tab switches PR #34975
- Resolved theme import/export functionality PR #34850
- Fixed filters panel CSS template selector PR #35106
- Corrected filter behavior after setting dashboard themes PR #35155
Data Sources
- Fixed Doris database chart creation PR #35332
- Added Impala dialect support to SQL parser PR #34662
- Fixed Databricks string escaping PR #34991
- Resolved Athena quote handling PR #34895
- Fixed Pinot SQL dialect for proper identifier handling PR #35333
Under the Hood
Technical improvements and infrastructure changes:
Performance Optimizations
- Consolidated ESLint configurations for better maintainability PR #35318
- Migrated from nested test patterns to flat test() functions PR #35305
- Improved pandas date parsing with format detection PR #35042
Code Refactoring
- TypeScript migration of dashboard utilities PR #35147
- Removed legacy Flask flash messaging system PR #35237
- Organized core folder structure PR #35119
- Migrated legacy React lifecycle methods PR #34892
Testing Improvements
- Added Playwright migration framework PR #35110
- Migrated Cypress tests to React Testing Library PR #35181
- Enhanced test coverage for theme functionality PR #35220
Build System Updates
- Auto-rebuild TypeScript types during webpack compilation PR #35240
- Fixed TypeScript declaration file generation PR #35244
- Updated numerous dependencies for security and compatibility
Security & Reliability
Important security patches and stability improvements:
- Fixed template error handling to prevent raw Jinja2 exceptions PR #34803
- Reverted accidental Talisman security middleware disable PR #34909
- Added security documentation for template processing PR #35192
- Updated dependencies to address security vulnerabilities
Breaking Changes
- Flask-AppBuilder 5.0: Removed support for AUTH_OID authentication type. Users must migrate to OAuth, LDAP, or database authentication PR #33055
Looking Ahead
This September update demonstrates the incredible momentum of the Apache Superset community. From major internationalization improvements to sophisticated new visualization features, the platform continues to evolve rapidly. The introduction of AI-powered development tools and modern testing frameworks positions Superset for even greater innovations ahead.
The focus on developer experience, performance optimization, and global accessibility ensures that Superset remains the leading open-source business intelligence platform. We're excited to see what October brings!
Community Contributors
We're grateful to ALL 93 contributors who made this release possible!
This month's leaderboard:
- @mistercrunch (5 PRs)
- @michael-s-molina (5 PRs)
- @msyavuz (9 PRs)
- @betodealmeida (5 PRs)
- @rusackas (5 PRs)
- @eschutho (6 PRs)
- @gabotorresruiz (5 PRs)
- @justinpark (3 PRs)
- @geido (2 PRs)
- @sadpandajoe (3 PRs)
- @SBIN2010 (7 PRs)
- @rebenitez1802 (3 PRs)
- @catpineapple (2 PRs)
Contributors with 1 PR:
- @kgabryje, @LisaHusband, @drummerwolli, @Vitor-Avila, @Neko1313, @hughhhh, @sha174n, @aminghadersohi, @ap-Codkelden, @sfirke, @alexandrusoare, @luizotavio32, @nicob3y, @richardfogaca, @tadeha, @dpgaspar, @giuliosmall, @DamianPendrak, @dim-ops, @avindra, @ganeshbabugb, @lc-4918, @cbum-dev, @marunrun, @LevisNgigi, @Dev10-34
First-Time Contributors 🌟
Welcome to our new contributors who made their first PRs this month!
- @giuliosmall
- @ganeshbabugb
- @catpineapple
- @avindra
- @lc-4918
Thank you to all our contributors for making Apache Superset better every day! Your dedication to improving the platform benefits thousands of users worldwide.
Get Involved
Want to contribute to Apache Superset? Check out our contributing guide or join our community Slack to get started!
This update covers 175 merged pull requests. Here's the full laundry list: #35342, #35337, #35333, #35332, #35318, #35316, #35314, #35309, #35305, #35294, #35292, #35274, #35272, #35256, #35248, #35247, #35246, #35244, #35243, #35242, #35240, #35237, #35235, #35224, #35223, #35220, #35219, #35216, #35215, #35214, #35213, #35212, #35211, #35200, #35199, #35195, #35193, #35192, #35189, #35185, #35184, #35181, #35180, #35179, #35176, #35168, #35159, #35155, #35151, #35148, #35147, #35144, #35142, #35130, #35124, #35123, #35122, #35119, #35114, #35111, #35110, #35109, #35107, #35106, #35105, #35097, #35096, #35095, #35094, #35090, #35086, #35081, #35077, #35076, #35072, #35071, #35070, #35067, #35066, #35065, #35064, #35063, #35062, #35061, #35057, #35045, #35043, #35042, #35038, #35036, #35033, #35022, #35018, #35017, #35011, #35007, #35005, #35002, #35001, #34999, #34995, #34993, #34991, #34990, #34989, #34988, #34987, #34978, #34977, #34975, #34973, #34972, #34970, #34969, #34968, #34967, #34966, #34963, #34959, #34958, #34956, #34954, #34953, #34950, #34949, #34947, #34946, #34942, #34941, #34940, #34938, #34936, #34934, #34931, #34929, #34928, #34924, #34923, #34921, #34918, #34911, #34909, #34908, #34895, #34892, #34887, #34876, #34874, #34870, #34868, #34859, #34850, #34847, #34842, #34828, #34803, #34797, #34781, #34764, #34763, #34761, #34760, #34722, #34707, #34694, #34692, #34662, #34595, #34558, #34440, #34327, #34276, #34096, #33055, #32196
Image courtesy of the GitHub Octodex.