CSS Preprocessors in Meteor: Time to Modernize the Defaults?

Context

As part of Meteor’s ongoing modernization effort, I’d like to open a discussion about CSS preprocessors and how Meteor ships them today.

The skel-full skeleton currently includes the less package by default. While LESS served us well historically, I think it’s worth revisiting this choice in 2026.

Native CSS has caught up — a lot

Modern CSS now covers many use cases that required a preprocessor just a few years ago:

Nesting (supported in all major browsers since Dec 2023):

.card {
  background: white;

  .title {
    font-size: 1.2rem;
  }

  &:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
  }
}

Custom properties (CSS variables):

:root {
  --primary: #3b82f6;
  --radius: 8px;
}

.button {
  background: var(--primary);
  border-radius: var(--radius);
}

@layer for managing specificity:

@layer base, components, utilities;

@layer components {
  .btn { padding: 0.5rem 1rem; }
}

color-mix(), :has(), @container queries — the list keeps growing. For many projects, plain CSS is now sufficient.

When you do need a preprocessor, SCSS is the clear winner

Looking at the ecosystem in 2026:

  • Bootstrap 4 & 5 — built on SCSS
  • npm download trendssass dwarfs less in weekly downloads
  • Framework defaults — Angular, Rails, and most major frameworks default to SCSS
  • Features — SCSS offers modules (@use / @forward), maps, richer functions, namespaces — things LESS simply doesn’t have
  • Tooling — better IDE support, linters (stylelint), and documentation

LESS is mostly associated with the Bootstrap 3 era at this point.

The current situation in Meteor

  • less lives in packages/non-core/ — maintained in the repo but not technically a “core” package
  • fourseven:scss is the go-to SCSS package — community-maintained, widely used, but not in core
  • skel-full ships with less by default, which sends a signal to newcomers that LESS is the recommended choice

For someone discovering Meteor today, this feels outdated.

Proposal

I’d suggest a two-part change:

1. Remove less from skel-full defaults

No skeleton should ship with a CSS preprocessor by default. Let developers choose. This is consistent with the other skeletons (skel-react, skel-blaze, etc.) which already ship without one.

2. Add a core scss package

Just like less lives in packages/non-core/, we could add an scss package maintained in the Meteor repo. This would give developers a first-class, maintained option:

meteor add scss    # or
meteor add less    # still available, still maintained

Optionally, meteor create could offer a --css flag:

meteor create my-app --css=scss
meteor create my-app --css=less
meteor create my-app           # plain CSS, no preprocessor

Summary

  • Native CSS is powerful enough for many projects in 2026
  • When a preprocessor is needed, SCSS is the industry standard
  • Meteor should reflect this by not defaulting to LESS and by offering SCSS as a core option
  • This is a small change with a positive signal for newcomers evaluating the framework

What do you think? Would love to hear from the community