class attribute and the class: directive.
Class Attribute
Primitive values are treated like any other attribute:For historical reasons, falsy values (like
false and NaN) are stringified (class="false"), though class={undefined} (or null) causes the attribute to be omitted altogether. In a future version of Svelte, all falsy values will cause class to be omitted.Objects and Arrays
Since Svelte 5.16,class can be an object or array, converted to a string using clsx.
Object Form
If the value is an object, the truthy keys are added:Array Form
If the value is an array, the truthy values are combined:Whether using the array or object form, you can set multiple classes simultaneously with a single condition, which is particularly useful with utility-first CSS frameworks like Tailwind.
Composing Classes
Arrays can contain arrays and objects, and clsx will flatten them. This is useful for combining local classes with props:ClassValue Type
Since Svelte 5.19, Svelte exposes theClassValue type for type-safe class names in component props:
The class: Directive
Prior to Svelte 5.16, theclass: directive was the most convenient way to set classes conditionally.
Shorthand
As with other directives, you can use a shorthand when the name of the class coincides with the value:Unless you’re using an older version of Svelte, consider avoiding
class:, since the attribute is more powerful and composable.