FAQ

Frequently asked questions

The questions people usually ask before adopting a CSS system, or after inheriting one with inconsistent conventions and overrides.

Are utility classes always bad?

No. They are bad when they quietly become your architecture. Utilities are useful for accessibility helpers and genuinely universal patterns such as .vh and .a11y-link.

If the same utility group keeps appearing together, it should probably become a named component instead of an ongoing pattern.

Is Tailwind bad?

No. Tailwind is good at fast delivery, consistency, and strict utility workflows. It solves real problems.

The trade-off is long-term maintainability. Utility-first often ships quickly early. LSCSS is often easier to maintain over time.

Choose based on project constraints and team goals.

Is this methodology based on formal metrics?

Not yet. LSCSS is a lived methodology shaped by real project work over time.

The recommendations here are based on repeated implementation patterns, code reviews, and maintenance outcomes rather than a formal benchmark dataset.

Does LSCSS replace BEM?

It keeps the useful parts of BEM, especially explicit modifiers, but removes much of the naming ceremony. Short scoped child selectors, layers, and state classes reduce the need for long block__element--modifier chains.

BEM helps naming. LSCSS fixes wider architectural problems first.

Does this work with React, Astro, Vue, or other frameworks?

Yes. LSCSS is CSS architecture, not a framework choice. It applies wherever you write CSS—whether that is with Astro, React, Vue, Svelte, Eleventy, server-rendered pages, or older sites you are refactoring. Your JavaScript stack is largely separate; LSCSS cares about how styles are structured, not how behaviour is attached to the DOM.

What about CSS Modules?

CSS Modules solve local class collisions. They do not solve full project architecture.

Scoped class names prevent collisions. They do not decide override order, theme ownership, migration strategy, or hack management.

CSS Modules are tooling. LSCSS is methodology.

Does @scope replace LSCSS?

No. @scope improves selector boundaries and reduces naming ceremony. It does not replace layers, modifiers, state rules, theme ownership, tokens, or hack management.

@scope is a feature. LSCSS is the wider methodology.

Should I avoid !important completely?

Mostly, yes. It is usually a sign that layer order or ownership is already broken.

Rare exceptions exist, especially for accessibility helpers or unavoidable third-party behaviour, but if your first instinct is !important, stop and check the architecture first.

What about old projects and legacy CSS?

Do not rewrite everything for sport. Start by adding layers, isolate old CSS in the legacy layer, and improve active components as you touch them. Migration should be controlled, not disruptive.

How big should a CSS file be?

No fixed number solves maintainability. The real rule is simple: if a file feels too large to understand quickly, review it.

Around 300 to 400 lines is often where hidden sub-components, repeated patterns, or old hacks start asking for attention.

Next useful pages