Build1 distinct publisher3 min readPublished
The styling engine moves to CSS variables and runtime style generation can be switched off, but the payoff sits behind React 18, an icons bump that cannot ship on its own, and a v5 deprecation log you have already cleared.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
Follow any of these and your For You feed starts watching them — no settings page required.
build
A missing package.json line broke every pnpm user of a React dashboard template1 distinct publisher
build
Two and a half years of design system work ended with one adopting team1 distinct publisher
build
With CRA out of React's docs, the new project default is a rendering decision1 distinct publisher
build
A build-tool swap that took 70 days and 166 files, and the build was the easy part1 distinct publisher
Start with ConfigProvider, because that is where a v6 migration bites first. Theming in v6 flows through a DesignTokenContext, and when `theme` is undefined the provider layer may be omitted entirely, which lets components remount without warning [6]. The dev.to migration writeup reports exactly that happening on its author's team: a lazily loaded theme value was briefly undefined during a render, ConfigProvider tried to read `token` at render time, styles failed and components remounted [7]. The fix given is one line, `const tokens = config?.token ?? {}` [8]. That line tells you the shape of the API: the theme object is a required input with a default, and it cannot be resolved later.
Now add the prerequisite that is easiest to skip. The guide says to upgrade to the latest v5 first and clear every console deprecation warning, because v6 expects a clean codebase and unresolved deprecations can hide runtime surprises [5]. Counting that one, the published checklist puts five gates ahead of the decision about zeroRuntime [18]. The performance mode sits last on that list, added only after everything else is settled.
zeroRuntime itself turns off Ant Design's runtime style generation and moves to a pure CSS-variables architecture, buying faster start-up and less JS work at render time [9]. The claim attached to it is that this "can dramatically reduce runtime cost and bundle size" [19], and no measured figures sit behind that phrase, so there is nothing yet to transfer to your app. The mechanism is still reasonable to reason about: work that was happening in JS moves to build time, so the size of the win scales with how many components render on first paint. It also scales with how static your theming is. If tokens are swapped per user session, the source is explicit that the pattern has to be reworked into precomputed variants, self-injected CSS variables, or theming limited to the variables you can swap at runtime [10].
The other audit is your own CSS. v6 refactors internal component DOM in places, so any rule targeting Ant Design's internal classes or element structure needs rewriting [13]. The writeup's example is a custom override on `.ant-btn > span` that stopped applying because v6 moved internal spans [14]. The recommended replacements are token overrides first, then a documented top-level selector or a component-level class, or a wrapper className you scope your styles to [15]. `.ant-btn > span` was always unsupported, even though plenty of production stylesheets treat it as one.
My read, for a codebase already on React 18: take v6 for the CSS-variables theming and the cleaner React baseline, and treat zeroRuntime as a second decision made after the upgrade lands and the selector audit is done. It pays when your theme variants are known at build time. When they are computed per session, you are trading a rewrite of the theming layer for a saving nobody has published a number for [19].
Ranked by verification strength, evidence, and original report placement.
Ant Design v6 raises the minimum React version to 18 and drops support for React 17 and below.
Migrating to antd v6 requires upgrading @ant-design/icons to v6 or later, and @ant-design/icons@6 is not compatible with antd@5, so the two packages must be upgraded together.
Any v5 React-19 patch, such as @ant-design/v5-patch-for-react-19, must be removed, because v6 assumes the newer React runtime semantics.
v6 uses CSS variables by default and no longer supports IE; the guide tells teams to confirm their browser support before upgrading.
Before moving to v6, upgrade to the latest v5 and fix console deprecation warnings; v6 expects a clean codebase and unresolved deprecations can hide runtime surprises.
In v6, ConfigProvider drives theming via a DesignTokenContext; if theme is undefined, the provider layer may be omitted and components can be re-mounted unexpectedly.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · September 2, 2026
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One practitioner's account, nothing checked against upstream
Most of what carries this story — the React 18 floor, the icons incompatibility, CSS variables by default, the DOM refactor — is the kind of thing Ant Design's own release notes would settle in a sentence, and our coverage cites none of them. The internally specific material is stronger than the general material: a named broken selector and a reproducible-sounding remount beat the unsourced version bullets, but they rest on one team's memory.
One anonymous migration
The whole adoption record is a team the author does not name, migrating an app we know nothing about. v6 is clearly shipping — the guide installs antd@6 alongside icons v6 and mentions behaviour drifting between early v6 releases — but there are no download figures, no named adopters and no sense of whether anyone has enabled zeroRuntime in production.
"Dramatically" doing a lot of work
The gap opens in the first paragraph and the piece closes it nowhere: zeroRuntime "can dramatically reduce runtime cost and bundle size" without a single millisecond or kilobyte to show. Set that against the same author's checklist — five gates, a stylesheet audit, a rewrite of any runtime theme swapping — and the honest reading is a real but unmeasured win with a well-documented price tag. Overstated in the headline, sober in the body.
Early-mover authority on a fresh major version
No vendor money is visible: the author is not writing for Ant Design and nothing is being sold. What the format does reward is being first with a comprehensive-looking checklist on a new major release, and confident phrasing like "dramatically" is how that reward is collected. Mild pull toward overselling the payoff; no reason to doubt the gotchas, which are the parts that make the author look fallible.
Trust the checklist, verify the version pins
Enough to act on the ordering and the defensive patterns tomorrow morning; not enough to quote the compatibility rules to a colleague without opening the release notes first. The soft spot is that every hard requirement in this story is single-sourced, and the one claim a reader would most want numbers for has none.