A look at where SCSS sits alongside modern CSS – native features that overlap with preprocessors, CSS-in-JS, component styling, and what that means for projects starting today.
CSS has caught up (partly)
When SCSS arrived, CSS lacked variables, nesting, and mixins. Modern CSS now has custom properties (variables), nesting (in supported browsers), and a growing set of functions. SCSS still adds value – logic, maps, partials, functions – but the gap has narrowed.
CSS-in-JS
In React projects especially, some teams write styles in JavaScript using libraries like styled-components. CSS lives alongside component code and can respond to props. SCSS remains a solid choice for projects that prefer separate stylesheets – better for designers to read, easier to share across non-React pages.
Example: styled-components
import styled from 'styled-components';
const Button = styled.button`
background-color: ${props => props.primary ? 'blue' : 'gray'};
border: none;
color: white;
&:hover {
background-color: ${props => props.primary ? 'darkblue' : 'darkgray'};
}
`;
Different approach, same goal: styled buttons that respond to context.
Component-level styling
React, Vue, and Angular encourage styling per component rather than one giant stylesheet. SCSS fits this model well – a .scss file per component, imported where needed, with variables and mixins shared via partials.
Design systems
Design systems need consistent tokens (colours, spacing, typography) shared across many components and pages. SCSS variables and maps are a practical way to define and distribute those tokens, though CSS custom properties are increasingly used for runtime theming (dark mode, user preferences).
What is likely to continue
Closer alignment with CSS specs
SCSS will keep tracking new CSS features. As native CSS adds capabilities, SCSS extends rather than replaces them.
Better tooling
Linters, compilers, and editor support continue to improve. Source maps, Autoprefixer integration, and build tool plugins make the SCSS workflow smoother.
Theming
Dark mode and user-configurable themes are standard expectations now. SCSS handles compile-time theming well. Runtime theming often needs CSS custom properties alongside or instead of SCSS variables.
Choosing for your project
SCSS is not going anywhere, but it is not the only option anymore. For traditional multi-page sites, WordPress themes, or teams where designers work directly in stylesheets, SCSS remains a practical choice. For React-heavy apps where styles live in components, CSS-in-JS or CSS modules may suit better. Many projects use both – SCSS for global styles and layout, component-scoped CSS for individual pieces.
Learn SCSS for the patterns it teaches – variables, nesting, mixins, partials. Those concepts transfer even if your next project uses a different tool.

