Salesforce Design System Explainer

Motivation

Today, existing customers and new customers alike are building complex solutions with the Salesforce Platform using Lightning Web Components. The standards-based approach to building UI has opened up the doors for the desire to share high-quality components within our ecosystem and beyond.

It has become increasingly difficult for customers to build high quality, complex experiences with the customizations their UI/Brand teams seek in a supported way. Limiting customers to customize their experiences is not because the standards approach does not allow for it, but because we—as a community that aims to build with standards on the web—have not prioritized the complexities of building shared experiences across the web.

At Salesforce, our control lives with the customer. Historically, that control has not embodied making customizations to the visuals of their user interfaces. This customization goes beyond the desire to change the data display of their components; customers want to build rich and complex experiences that meet their brand requirements.

Goals

The Salesforce Design System aims to solve:

Principles

Services of the Salesforce Design System rely on the following principles:

  1. Predictable - Eliminate ambiguity, helping people see, understand, and act with confidence. Create clear, concise, and accurate documentation that provides clarity and guidance.
  2. Flexible - Eliminate dependencies, making it faster and easier to consume or modify core building blocks.
  3. Extensible - Low-level services that can be easily consumed and modified.
  4. Standards-Based Design - Adopt and adhere to established and emerging standards-based technologies. Work with internal and external stakeholders to influence and define standards that push the Web and the Salesforce ecosystem forward.
  5. Accessible - Enable accessible development with a set of semantically correct components, each with appropriate ARIA markup to identify users of assistive technologies.
  6. Transparency - Make decisions in the open. Encourage open and honest dialogue about current and proposed goals.
  7. Performance - Make decisions with performance in mind. Rely on the browser's rendering engine as much as possible. Don’t hinder or slow down our users’ experiences.

Salesforce Design System (SDS) and Sub-systems

One of SDS's driving factors was to enable business verticals to create, own, and maintain their design system, which we're going to refer to as a sub-system.

Shared Services

An image showing the location of the salesforce design system services

The Salesforce Design System is the low-level design system that provides the thread between all sub-systems built on SDS. The thread is achieved through SDS services that codify business decisions and universal design choices.

What is the Salesforce Design System trying to achieve?

Some highlights of SDS today that will support full styling customizations in a native shadow DOM world are:

A business vertical should consider a sub-system as a 1st class standalone project. This will promote proper resourcing to ensure your sub-system can stand on its own with SDS's support. By becoming a contributing partner in our centralized design system process, you are doing your part in promoting the highest quality, continuous experience that’s familiar, user-centered, and engaging.

A sub-system has a seat at the table, and we (SDS) want to encourage collaboration and engagement to make sure we're providing the proper services at the SDS layer.

To visualize the layers, you can review the following image:

This image is subject to change but is currently our north-star vision of SDS

An image showing the layered tiers of the salesforce design system architecture