Deep Dive
Power BI Theme JSON in 2026: Fluent 2, Classic 2026 and Style Presets
TL;DR
Every Power BI report has a base theme; your custom theme JSON layers on top of it. Since 2026 the default base for new reports is Fluent 2 (previously Classic 2026, before that Classic 2018). Fluent 2 makes new pages 1920×1080 with a grey canvas and wallpaper, turns titles on and axis titles off, adds padding and rounded corners, and ships style presets per visual type. Existing reports keep their base theme until you click Update theme in the Theme pane. Your 2024 theme JSON still imports, but defaults you never wrote now come from Fluent 2.
If a theme that worked for years suddenly produces rounded, padded visuals on a grey canvas, nothing in your JSON changed; the base theme under it did. Microsoft Learn's page on visual defaults (updated late September 2026) now lists three base themes, with Fluent 2 as the "default base theme for new reports". This guide explains the precedence between base theme, custom theme and per-visual formatting, what Fluent 2 changes, how style presets work in visualStyles, how the Update theme banner behaves, and what to edit in a pre-2026 theme file. It complements our theme JSON reference, which covers the file format field by field.
Three layers: base theme, custom theme, visual formatting
Learn describes the model precisely: "Every report has a base theme defining the default colors and style used across all visuals." Microsoft manages that base theme as part of Power BI. "The custom theme layers on top of the base theme, letting you override or add to any style or color defined in the base theme, including style presets for specific visual types." Formatting applied to an individual visual sits on top of both and wins until you reset the visual to default.
Two consequences follow. A property you do not set in your JSON is not "unset"; it inherits from the base theme, so a base-theme change alters your report without touching your file. And "reset to default" on a visual reverts to the custom theme's value, and for anything the custom theme does not define, to the base theme's value.
The base themes available in the Theme pane are Fluent 2 ("default base theme for new reports"), Classic 2026 ("previous default base theme, incremental refresh of Classic 2018") and Classic 2018 ("original base theme for legacy compatibility"). You can switch between them at any time from Design ribbon, Customize theme, Theme settings, Base theme.
What Fluent 2 actually changes
From the Learn page, the Fluent 2 defaults are:
Canvas: "New pages default to 1920x1080, giving you more space." Wallpaper and canvas background are "shades of grey". Learn adds the important caveat: "Existing reports and existing pages don't update their page size when you switch to the new base theme. Only new pages use the new default canvas size." So a report that mixes 1280×720 and 1920×1080 pages after an update is behaving as documented, not broken.
Visual structure: uniform fonts; "titles and subtitles are on by default; axis titles are off by default"; "increased padding with rounded corners applied across visuals."
Style presets per visual type: charts get a Default preset (axis, no labels) and a Data labels preset (no axis, labels and markers, aimed at small multiples); line charts are smooth by default with straight-line presets; buttons have Default, Outline, Transparent and Icon & Text; navigators have Default and Tab; the card visual uses less padding and no reference-label background; small multiples start in a 1x4 or 4x1 layout.
Built-in themes: the Dark and Soft dark themes "use styling that closely follows the Fluent 2 base theme."
If you design backgrounds or templates, the 1920×1080 default is the change that bites: a 1280×720 background still fits the aspect ratio but is upscaled 1.5× on a new page. Our background size and white-bars guides cover the measurements.
The Update theme banner, and undoing it
Existing reports do not move to Fluent 2 by themselves. Learn: "Power BI might update the base theme with new releases, but existing reports keep their original base theme until you update it." The upgrade path is manual: open Design, Customize theme; "if an update is available, a banner appears in the Theme pane"; select Update theme. The Reset to default tile in the Themes gallery also "removes any custom theme and applies the latest base theme".
Learn also documents the escape hatch: "If your custom theme doesn't work with the new modern defaults, you can undo the update to revert to the previous base theme until you're ready to update your custom theme." Treat the update like a dependency bump. Do it on a copy, page through the report, and look for visuals whose padding, corner radius or title now differ from what the JSON intended.
Before and after: a 2024 theme on Fluent 2
Here is a minimal theme many teams shipped in 2024. It sets colours and nothing structural, which was fine when the base theme was quiet.
On Fluent 2 the same file produces rounded corners, visible titles everywhere, extra padding and a grey canvas, because those values were never in the file. The second block shows the additions that pin the structural defaults you actually want, so the report looks the same regardless of base theme. Both files validate against the current schema (reportThemeSchema-2.159, October 2026).
theme-2024-before.json
{
"name": "Acme 2024",
"dataColors": ["#0F172A", "#EAB308", "#DC2626", "#2563EB", "#16A34A", "#7C3AED"],
"background": "#FFFFFF",
"foreground": "#0F172A",
"tableAccent": "#EAB308"
}After: pinning structure so the base theme cannot move it
The additions below do three things. (Canvas size is not among them: set it per page in the format pane, and decide it before you design backgrounds.) They set the page background and wallpaper, overriding Fluent 2's grey. They pin padding, border radius and title visibility for every visual through the wildcard entry. And they restore axis titles on bar and line charts, which Fluent 2 turns off.
Note the structure under visualStyles: visual type, then style preset ("*" is the default preset), then formatting card, then an array of property objects. A bare object instead of an array is still the most common validation error.
theme-2026-after.json
{
"name": "Acme 2026",
"dataColors": ["#0F172A", "#EAB308", "#DC2626", "#2563EB", "#16A34A", "#7C3AED"],
"background": "#FFFFFF",
"foreground": "#0F172A",
"tableAccent": "#EAB308",
"visualStyles": {
"page": {
"*": {
"background": [{ "color": { "solid": { "color": "#FFFFFF" } }, "transparency": 0 }],
"outspace": [{ "color": { "solid": { "color": "#F1F5F9" } }, "transparency": 0 }]
}
},
"*": {
"*": {
"padding": [{ "top": 8, "bottom": 8, "left": 8, "right": 8 }],
"border": [{ "show": true, "color": { "solid": { "color": "#E2E8F0" } }, "radius": 4 }],
"title": [{ "show": true, "fontSize": 12, "fontColor": { "solid": { "color": "#0F172A" } } }],
"subTitle": [{ "show": false }]
}
},
"clusteredBarChart": {
"*": { "categoryAxis": [{ "showAxisTitle": true }], "valueAxis": [{ "showAxisTitle": true }] }
},
"lineChart": {
"*": { "categoryAxis": [{ "showAxisTitle": true }], "valueAxis": [{ "showAxisTitle": true }],
"lineStyles": [{ "lineStyle": "solid", "strokeLineJoin": "round" }] }
}
}
}Style presets in visualStyles
A style preset is a named alternative to the default style of a visual type that authors pick from the Style presets dropdown in the format pane. In JSON it is a sibling of "*" under the visual type: visualStyles > lineChart > "Straight, no labels" > cards. Fluent 2 ships presets for charts, line charts, tables, matrices, buttons and navigators, and your theme can add its own. The schema forbids a preset from containing a stylePreset property of its own, and the name cannot be "*".
Presets are the right tool for the two-or-three-looks problem: one dense look for operational pages, one sparse look for executive pages, both consistent, both switchable per visual without editing the theme. They are not inherited across visual types; define the preset under each type that should offer it.
visualStyles-presets-excerpt.json
"lineChart": {
"*": { "lineStyles": [{ "lineStyle": "solid", "strokeLineJoin": "round" }] },
"Executive": {
"categoryAxis": [{ "show": false }],
"valueAxis": [{ "show": false }],
"labels": [{ "show": true, "fontSize": 10 }],
"lineStyles": [{ "strokeWidth": 3, "showMarker": true }]
},
"Dense": {
"categoryAxis": [{ "show": true, "fontSize": 9 }],
"valueAxis": [{ "show": true, "fontSize": 9, "gridlineShow": true }],
"labels": [{ "show": false }]
}
}Importing in 2026: the ribbon moved
Theme commands live on the Design ribbon in Power BI Desktop. Learn gives two import routes: "On the Design ribbon, select Import theme, and then choose the JSON file", or Customize theme, expand Theme settings, select Import theme. In the Power BI service, View, Theme opens the Theme pane, which imports, exports and customises. Older builds had View, Themes, Browse for themes; tutorials that still say so describe the same action in an older ribbon.
Importing a theme "removes any existing customizations you already added to the report" at the theme level, though formatting applied directly to visuals persists. Export the current theme first (Design, Download theme) so you have a rollback file.
Checklist for a 2026-ready theme file
- Validate against the current schema (the GitHub repo tags a schema per Desktop release; October 2026 is 2.159): open the file in VS Code with "$schema" pointing at that version. Theme Lab can import it, flag the fields it does not support and check contrast, and the theme it exports is one VizForge validates against reportThemeSchema-2.159.
- Decide the canvas size for new pages and set it, or accept 1920×1080 and resize your backgrounds.
- Pin page background and wallpaper colours; do not rely on the base theme's white or grey.
- Pin padding, border radius and title visibility in the wildcard entry if your brand depends on them.
- Restore axis titles where readers need them; Fluent 2 turns them off.
- Add presets only where authors will switch between looks; a preset nobody picks is maintenance.
- Test the file on a report with the Fluent 2 base theme and on one with Classic 2026, because both exist in your tenant now.
- Check text contrast on the new grey canvas; AA contrast that passed on white may not pass on grey.
FAQ
What is the default base theme in Power BI in 2026?
Fluent 2. Microsoft Learn lists it as the default base theme for new reports in Power BI Desktop and the Power BI service. Classic 2026 is the previous default and Classic 2018 is kept for legacy compatibility.
Does Fluent 2 change my existing report pages to 1920×1080?
No. New pages default to 1920×1080 under Fluent 2, but existing reports and existing pages keep their page size when you switch base theme. Only new pages use the new default.
Will my old theme JSON still work?
Yes, it imports and applies. What changes is everything the file does not set: padding, corner radius, title visibility, axis titles and canvas colours now come from Fluent 2 instead of the Classic base theme. Pin those properties in visualStyles if you need the old look.
How do I update an existing report to the new base theme?
On the Design ribbon select Customize theme. If an update is available, a banner appears in the Theme pane; select Update theme. You can undo the update to return to the previous base theme if your custom theme does not work with the new defaults.
What is a style preset?
A named alternative look for a visual type that authors pick from the Style presets dropdown in the format pane. In theme JSON it sits next to the "*" default under visualStyles for that visual type. Fluent 2 adds built-in presets for charts, line charts, buttons and navigators, and a custom theme can add more.
Sources
- Microsoft Learn: Visual defaults in Power BI reports
- Microsoft Learn: Use report themes in Power BI
- Microsoft Learn: Apply page size and settings in a Power BI report
- GitHub: Report Theme JSON Schema (microsoft/powerbi-desktop-samples)
Related reading
The file format field by field: dataColors, textClasses, visualStyles, backgrounds.
Build theme JSON in the browser with contrast checks; exports are validated against schema 2.159.
Design ribbon, Import theme, and what to do when colours do not change.
Fit vs Fill vs Normal, and 1920×1080 measurements.
Contrast-checked theme JSON files, light and dark.
About the author
Nawaf Sharaf · Founder & Reliability Engineer
Nawaf is a reliability engineer and long-time Power BI practitioner, and the founder of VizForge. He builds the product solo — the AI generation pipeline, the visual code generator, and this site — from the perspective of someone who has spent years shipping Power BI reports in production.
Cite this article as:
VizForge. “Power BI Theme JSON in 2026: Fluent 2, Classic 2026 and Style Presets.” November 4, 2026. https://vizforge.ai/blog/power-bi-theme-json-2026-fluent-2