Home Videos Blogs Events
Learn
Live Apply for Voucher Playground Practice Data
MS Updates Contact
Power BI · July 2026 Update

You're Now Wrong About Conditional Formatting — Here's Why

The July 2026 Power BI update quietly rewrote the rulebook. Conditional formatting is no longer just about colouring cells — it now controls font families, text weight, borders, icons, headers, small multiples, and even matrix subtotals independently. If you're still using SVG tricks and calculation-group hacks, you're doing it the hard way.

AC Amit Chandak 📅 July 28, 2026 ⏱️ 9 min read 🔷 Power BI · Formatting
Conditional Formatting Power BI July 2026 DAX Format Strings Matrix

If you last read a conditional-formatting article in 2024, almost every rule of thumb you learned is now obsolete. The July 2026 update is one of the largest formatting overhauls Power BI has ever shipped — and most reports in the wild aren't using it yet.

01TL;DR

You no longer need calculation groups, SVG measures, or duplicate visuals to solve 80% of "conditional format this thing" problems. Here's the short list of what the July 2026 update unlocks:

  • fx buttons on font family, weight, size, italic, underline for almost every visual.
  • Per-row format strings driven by DAX — different formats in the same measure column.
  • Matrix subtotals can be styled independently from detail rows.
  • New Card visual accepts conditional formatting on subtitle, reference labels, and callout.
  • Slicer tile background, selected border, and chevron colour are now expression-driven.
  • Small multiples get per-panel title, border and background formatting.
Why it mattersAlmost every real-world report I audit still has three or four workaround measures per page whose only job is styling. Most of those measures can be deleted after this update.

02What actually changed

Conditional formatting in Power BI used to be split into two worlds. The "official" world (background colour, font colour, data bars, icons) was a curated list of properties you could bind to a field or rule. Everything else lived in the "unofficial" world — SVG hacks in measures, HTML tags in the new Card visual, or dozens of calculation-group format-string items.

The July 2026 update collapses that split. Microsoft added the small fx button (the entry point for conditional formatting) to what feels like every property in the format pane. If you can see a property in the pane, you can almost certainly drive it from a measure now.

Before (June 2026 & earlier)

fx button available on ~30 core properties. Bold/italic required calculation groups. Icons capped at 5 rules. Format strings were per measure, not per row. Slicer background needed a native visual workaround.

After (July 2026)

fx button on 120+ properties across visuals. Font family, weight, size & style are field-driven. Per-row format strings via DAX. Icons with unlimited rules and SVG binding. Slicer, Card, and small multiples fully expression-aware.

🎨Fig 1. The format pane in July 2026 — almost every property now shows the fx conditional-formatting entry.

03fx buttons are (almost) everywhere

Open any visual in July 2026, expand a properties group in the format pane, and look for the tiny fx icon beside the property label. That's your gateway. Anywhere you see it, you can bind the property to:

  • A field value — the exact value in a table column drives the property.
  • A rules list — ranges of values map to different property values.
  • A gradient — for numeric properties, e.g. font size 10–20 by revenue.

The last one is quietly the biggest change. Gradient conditional formatting used to be limited to colours. Now it applies to numeric properties like font size, border width, corner radius, and even row height. Which means a table can literally grow its rows for high-value customers without any DAX gymnastics.

New in July 2026You can conditionally format font family. Set your KPI measure to render in a display font when it hits target, and fall back to your body font when it doesn't. Yes, really.

04Per-row format strings

This is my favourite change. Historically a measure had exactly one format string. If some rows should show as currency and others as a percentage or "N/A", you either wrote two measures or used a calculation group. Both approaches leak into the model.

In July 2026, format strings are dynamic expressions evaluated in row context. Write your measure normally, then set its format string to a DAX expression:

DAX · Format string expression
-- Applied to measure [Value] under Format > Format string > Custom > fx
SWITCH(
    TRUE(),
    SELECTEDVALUE(DimMetric[Kind]) = "Currency", "₹#,##0",
    SELECTEDVALUE(DimMetric[Kind]) = "Percent",  "0.0%",
    SELECTEDVALUE(DimMetric[Kind]) = "Ratio",    "0.00",
    "General"
)

Point one measure at that format string, drop it in a matrix with DimMetric[Kind] on rows, and the same column now displays currency, percent and ratio side by side. Calculation groups — where you were only using them for formatting — can go.

Pro tipThe format-string expression is evaluated per cell. That means you can vary format by row, column, and filter context all at once — something even calculation groups couldn't cleanly do.

05The matrix is finally sane

Anyone who has styled a P&L in Power BI knows the pain: you finally get detail rows looking clean, then subtotals hijack the same styling and blow up the layout. July 2026 splits them properly.

Under Format > Specific column you'll find three separate scopes, each with their own fx bindings:

📄Values

Detail rows. Bind font colour, weight, or icon by category or measure.

ΣSubtotals

Every subtotal level. You can now bold Level 1 and italicise Level 2 independently.

🏁Grand total

Its own font family, background, and border. No more CSS-in-DAX to fake a total row.

A tiny but delightful addition: matrix column headers now accept a rotate conditional binding (0°/45°/90°). A revenue-by-month wide matrix suddenly fits on screen.

06Icons & Web URL 2.0

Icon-based conditional formatting had two long-standing limits: only 5 rules, and only a fixed icon set. Both are gone.

  • Unlimited rules and a SVG source field. Point at a column that returns an inline data:image/svg+xml string and any glyph is fair game.
  • Web URL conditional formatting now works on every text field, not just the special "Web URL" column type. You can turn any column into a clickable action link driven by a measure.
  • The new icon position > before / after / replace toggle is field-driven — useful for RTL locales and mixed layouts.
DAX · SVG icon by KPI status
Status Icon =
VAR v = [Sales YTD] / [Target YTD]
VAR colour =
    SWITCH(TRUE(),
        v >= 1,    "#22c55e",
        v >= 0.85, "#f2c811",
        "#ef4444"
    )
RETURN
    "data:image/svg+xml;utf8," &
    "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'>" &
    "<circle cx='12' cy='12' r='10' fill='" & colour & "'/></svg>"

07Slicers & the new Card visual

The tile slicer gained three long-requested bindings: tile background, selected border, and chevron colour. Combined with the existing tile text colour, you can now build slicers that feel branded without dropping a native visual on top.

The new Card (preview) visual — the one that replaces multi-row card — accepts conditional formatting on subtitle, reference label, and callout number independently. If you were maintaining twin cards for good/bad states, you can now collapse them into one.

The best sign that a new format update is working is when someone opens an old PBIX, points at four workaround measures, and says "wait, do I even need any of these anymore?" Every Power BI developer, July 2026

0812 patterns you can copy today

Here are twelve short recipes, in order of "biggest win for least effort":

  1. Dynamic number formats — bind format string to a DAX SWITCH on the measure kind (see §04).
  2. Bold on target hit — bind Values > Font weight to IF([Sales] >= [Target], "bold", "normal").
  3. Growing row height — gradient Row height 32–56 by [Revenue].
  4. KPI display font — bind Font family to a rule: on-target → "Segoe UI Display Semibold", else "Segoe UI".
  5. Independent subtotal style — bold subtotals, italic grand total, no more layout leakage.
  6. Unlimited icon rules — use SVG source with a coloured circle measure (see §06).
  7. Row-scoped Web URL — return NULL for non-clickable rows to disable the link inline.
  8. Slicer active-brand — bind tile background to your accent colour when the tile is selected.
  9. Card subtitle traffic light — bind subtitle colour to variance vs target.
  10. Small-multiples spotlighting — bind per-panel border to the panel key: highlight India, dim the rest.
  11. Alternating header rotation — matrix column-header rotation only for date columns beyond 12.
  12. Focus-mode auto-styling — bind background to ISFILTERED('Focus') to dim non-focused visuals.

09Pitfalls & gotchas

The update is generous, but there are edges worth knowing before you rebuild every report.

  • Performance. Format-string expressions run per cell. Keep them light — a big SWITCH is fine, a CALCULATE over a fact table is not.
  • Accessibility. Font-family swaps can hurt screen-reader flow. Prefer weight/colour changes for status; save font-family for hero KPIs.
  • Themes. Report themes now include a conditionalFormatting block. Set defaults there so you don't repeat rules on every visual.
  • Bookmarks. Bookmarks capture the current fx binding — if you toggle bindings via buttons, be explicit about which state each bookmark stores.
  • Publishing to older services. Reports authored in July 2026 that use per-row format strings will fall back to the base format on any service instance older than the July release wave.
Careful with SVG sizesIcons rendering from inline SVG can look great in Desktop and pixelate in the service if your viewBox and container widths disagree. Always set explicit width/height in the SVG string.

10Wrapping up

If your reaction to the July 2026 release notes was "cool, another format update, I'll get to it," go back and re-read them. The introduction of per-row format strings, font-family bindings, and independent matrix scopes genuinely changes how you model for a report. Some of your calculation groups, SVG-in-DAX tricks, and duplicate visuals can be retired this week.

Open a real report, delete one workaround measure, replace it with a native fx binding, and see how it feels. Then do it again on the next one. That's the honest way to internalise this update.

Source & further reading:
Inspired by and expanded from the original Fabric Community blog: "You Are Now Wrong About Conditional Formatting 🤯 — Power BI July 2026 Update" on community.fabric.microsoft.com.

Want more like this?

Follow along for hands-on Power BI & Microsoft Fabric walkthroughs delivered every week — DAX patterns, model reviews, and update deep-dives you can put to work the same day.