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 1 | SLDS 2 | |
|---|---|---|
| Where visual decisions live | Inside the framework's CSS rules | In CSS custom properties you can set |
| Changing a corner radius everywhere | Override selectors, fight specificity, hope | Set one custom property |
| Theming depth | Brand colours and logo, roughly | Buttons, modals, fonts, borders, spacing |
| Dark mode | Not feasible | The stated path forward |
| What the framework asserts | Structure and appearance | Structure; appearance is supplied |
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 saysfont-scale-4and the developer typesfont-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.
| Mechanism | Cost | |
|---|---|---|
| Documentation | Write down what is correct and hope | Free, and roughly as effective as free |
| Linting | Flag violations in the editor and in CI | Real tooling investment; needs a rule database maintained alongside the system |
| Removing the capability | Make the wrong thing impossible to express | Every genuine new need becomes a request to the system owners |
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 changed | The bet | |
|---|---|---|
| Salesforce Lightning (SLDS 2) | CSS architecture decoupled from visual style; styling hooks; linter and validator | Structure and appearance must separate, and violations must be caught mechanically |
| IBM Carbon | An MCP server exposing docs and code examples to agents | Agents should retrieve the system at generation time rather than recall it |
| Shopify Polaris | React deprecated for framework-agnostic web components served from a CDN | Delivery must not assume what generated the page |
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
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
Name hooks semantically, and use the same names in the design tool
radius-border-4in Figma andradius-border-4in CSS. One vocabulary, two renderings. Every mismatch between design-tool names and code names is a translation step where meaning leaks out. - 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
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.