SLDS 2: Salesforce rebuilt its design system for agents

In 2015 Salesforce shipped a CSS framework that told you what things look like. In 2025 it shipped a replacement that deliberately does not, because the visual style now has to be supplied per customer and, increasingly, generated. The reasoning is stated openly in Salesforce's own documentation, and it is the clearest vendor statement yet on what AI does to a design system.

Updated July 27, 2026

Independent analysis of Salesforce's public documentation and design-team writing. Identity Forge is not affiliated with or endorsed by Salesforce. Salesforce, Lightning and Agentforce are trademarks of their owner. Release details reflect the documentation at time of writing.

The problem SLDS 1 had

SLDS 1 launched in 2015 and, as Salesforce puts it, set the standard for enterprise design at the time. It is a CSS framework: import it, use its classes, and your custom Lightning web components look like Lightning Experience. That is exactly what an enterprise platform wanted in 2015, when the goal was consistency across thousands of orgs and the assumption was that consistency meant sameness.

The stated reason for the rebuild is that two things changed. Customer demand for deeper customisation grew, and generative AI began reshaping user experiences. Both pressures point the same direction: a framework whose visual decisions are baked into its class definitions cannot be deeply themed and cannot be a stable target for generated UI.

That is a fairly bracing thing for a vendor to publish about its own decade-old flagship system. It is also correct, and the same diagnosis applies to a great many internal design systems that have not had it stated out loud.

What SLDS 2 changed

The architectural claim is specific: the new CSS architecture is decoupled from Salesforce's default visual style, which means you are no longer locked into predefined design choices for components including buttons, modals, fonts and borders. The mechanism is global styling hooks — CSS custom properties — replacing hard-coded values inside the framework's rules.

SLDS 1SLDS 2
Where visual decisions liveInside the framework's CSS rulesIn CSS custom properties you can set
Changing a corner radius everywhereOverride selectors, fight specificity, hopeSet one custom property
Theming depthBrand colours and logo, roughlyButtons, modals, fonts, borders, spacing
Dark modeNot feasibleThe stated path forward
What the framework assertsStructure and appearanceStructure; appearance is supplied
The structural difference between the two generations.

The line Salesforce uses for the benefit is worth quoting as a design principle: one change updates everything. Instead of tweaking components individually, styling hooks let you adjust values in a single place for instant global updates.

That sentence is the definition of a token system, and it is the test to apply to your own. If changing your brand's corner radius means editing more than one place, you have variables, not tokens. The difference is whether the value has one home or many copies.

Around the architecture sit the visible changes. Salesforce Cosmos is the new default theme for SLDS 2, described as offering adaptable spacing, at-a-glance views, an enriched colour palette, a reader-friendly typography scale and reduced cognitive load. The expanded Themes and Branding feature in Setup lets administrators apply brand colours, logos and images without code, with nine new accent colour options.

The no-code/pro-code split is deliberate and stated: admins get click-based design, designers and developers get pro-code control through the styling hooks. That is a real design-system governance decision — deciding which audience gets which surface — and most systems only ever build the pro-code half.

The Figma library that matches the code exactly

One detail deserves separating out because it solves a problem nearly every design system has and nearly none solves properly. The SLDS 2 Figma library uses the same semantic naming convention for styling hooks as the code does — Salesforce's own examples are radius-border-4 and font-scale-4 — so designs map one-to-one to live code.

The stated effect is a shared vocabulary bridging design and development. The practical effect is that a design handoff stops being a translation exercise. When a designer says font-scale-4 and the developer types font-scale-4, the entire category of "which grey did you mean" disappears.

The library also contains all the variables and properties you can toggle, so components can be modified in Figma directly rather than by switching between the documentation site and the design file and updating components one by one. That is a small tooling detail with a large behavioural consequence: it removes the friction that causes designers to go off-system.

When a designer says font-scale-4 and the developer types font-scale-4, an entire category of handoff bug stops existing.

Enforcement: the linter

SLDS 2 ships tooling that validates components against SLDS rules rather than describing them. SLDS Linter is the code analysis tool; SLDS Validator scans markup, validates it against a database, and offers recommendations for fixes. Salesforce lists new rule sets, in-line guidance and bulk linting.

This is the same instinct as Stripe's app UI toolkit refusing arbitrary CSS, reached by a different route. Stripe removes the capability; Salesforce cannot, because SLDS is CSS in a customer's org and the customer can always write more CSS. So it does the next best thing and makes violations visible mechanically.

MechanismCost
DocumentationWrite down what is correct and hopeFree, and roughly as effective as free
LintingFlag violations in the editor and in CIReal tooling investment; needs a rule database maintained alongside the system
Removing the capabilityMake the wrong thing impossible to expressEvery genuine new need becomes a request to the system owners
Three ways a design system tries to actually get followed.

Most teams only ever attempt the first row. The middle row is where the return on effort is highest, and it is unglamorous enough that it rarely gets prioritised until someone counts how many hex values are in the codebase.

The agentic part, in Salesforce's own words

Salesforce's description of SLDS 2 is direct: it is the foundation for the agentic design system for Salesforce products built on the Lightning Platform. The blog announcing it says the new architecture sets the foundation for agentic experiences and dark mode, and describes reimagining how design systems work both within the design-development workflow and within dynamically generated user experiences.

That last phrase is the one to sit with. Dynamically generated user experiences. Not "AI helps developers write code faster" — the interface itself is assembled at runtime, per user, per context, by something that was not a designer.

If that is your assumption, a design system that bakes appearance into component definitions is structurally unable to serve it, because the generator has nothing to vary. What a generated interface needs is exactly what SLDS 2 provides: a stable structural vocabulary with the visual decisions exposed as named, settable values.

It is worth noticing who is making this argument. This is not a startup selling AI design tooling. It is an enterprise platform vendor with a decade of installed base and every incentive not to rebuild a working framework, publishing that it rebuilt one anyway and saying why.

The same move, three times

SLDS 2 is not an isolated case. Three of the largest openly published enterprise design systems restructured within roughly eighteen months, each betting differently on the same premise.

What changedThe bet
Salesforce Lightning (SLDS 2)CSS architecture decoupled from visual style; styling hooks; linter and validatorStructure and appearance must separate, and violations must be caught mechanically
IBM CarbonAn MCP server exposing docs and code examples to agentsAgents should retrieve the system at generation time rather than recall it
Shopify PolarisReact deprecated for framework-agnostic web components served from a CDNDelivery must not assume what generated the page
Three systems, three responses to generated UI.

Nobody coordinated this. Three companies with different products and different constraints arrived at compatible conclusions in the same window, which is usually a sign that the underlying change is real rather than fashionable.

What to take from it if you do not use Salesforce

The SLDS 2 architecture is a large, specific answer to a question most teams have not asked yet: can something other than a designer produce an on-brand interface from your design system? Four things transfer regardless of platform.

  1. 1

    Separate structure from appearance

    Every visual decision that is currently a literal value inside a component rule is a decision a generator cannot vary and a customer cannot theme. Hoist them into named custom properties. This is unglamorous refactoring with a large payoff, and it is also the prerequisite for dark mode.

  2. 2

    Name hooks semantically, and use the same names in the design tool

    radius-border-4 in Figma and radius-border-4 in CSS. One vocabulary, two renderings. Every mismatch between design-tool names and code names is a translation step where meaning leaks out.

  3. 3

    Enforce mechanically, not editorially

    A linter that flags a raw hex value in a pull request does more for consistency than any amount of documentation. If you cannot build a rule database, start with a single rule banning literal colour values outside the token file.

  4. 4

    Decide what the no-code surface is

    Salesforce split it explicitly: admins theme with clicks, developers theme with hooks. If your system has non-developer stakeholders who need to change something, giving them a bounded surface is how you stop them from asking for one-off overrides.

There is a fifth thing SLDS 2 does not cover, and it is the one most teams need most. Styling hooks tell a generator what can vary. They do not tell it what the right values are, what each role means, or what is forbidden.

We sampled 299 DESIGN.md files written to give AI agents exactly that guidance. 86% specified colours as raw hex with no semantic role, 76% contained no prohibitions of any kind, 69% said nothing about dark mode, and 57% defined no motifs. A generator handed a set of hooks and that file has an empty theming API and no argument about what to put in it.

Identity Forge design kits are that argument, in a form an agent can execute: semantic colour roles across light and dark, type and spacing scales, motifs, and explicit do's and don'ts, serialised into a DESIGN.md. Browse the kits, or read what a DESIGN.md file is.

Practical notes on migration

Salesforce is explicit that switching is not required and that orgs can adopt at their own pace. The SLDS 2 site carries a Transition to SLDS 2 guidebook, and SLDS 1 documentation now lives at v1.lightningdesignsystem.com rather than the main domain — worth knowing if you have bookmarks or links in internal documentation pointing at the old URLs.

If you maintain custom Lightning web components, the linter is the sensible starting point regardless of when you migrate: run it, see how much of your CSS is asserting things the framework is about to stop asserting, and use that number to size the work honestly.

What is the difference between SLDS 1 and SLDS 2?

SLDS 1 is a CSS framework with Salesforce's visual decisions built into its rules. SLDS 2 rearchitects it around CSS custom properties, so the structure stays and the appearance is supplied through styling hooks. That is what makes deep theming and dark mode possible, and what Salesforce describes as the foundation for agentic experiences.

Do I have to migrate to SLDS 2?

No. Salesforce states you are not required to switch and can adopt at your own pace. The SLDS 2 site publishes a Transition to SLDS 2 guidebook, and SLDS 1 documentation remains available at v1.lightningdesignsystem.com.

What are SLDS styling hooks?

CSS custom properties exposed by the framework that let you set values like colour, radius and typography globally rather than overriding selectors component by component. They are the mechanism that decouples SLDS 2's architecture from its default visual style.

Does SLDS 2 support dark mode?

Salesforce describes the path to dark mode as starting with transitioning to SLDS 2 — the custom-property architecture is the prerequisite. Check current release notes for what has actually shipped, since this is the kind of roadmap statement that moves.

What does "agentic design system" actually mean here?

Salesforce uses it for interfaces assembled dynamically rather than designed screen by screen, in the context of its Agentforce platform. Structurally it means the design system has to expose its visual decisions as named settable values, because a generator producing an interface at runtime needs something to vary and something to stay fixed.