Why there is no CSS4 – explaining CSS Levels

We had CSS1, and CSS2. We even had CSS2.1 and we then moved onto CSS3 – or did we? This post is a quick explanation of how CSS is versioned today.

CSS versions 1 and 2 were monolithic specifications. All of CSS was included in one massive document. Selectors, positioning, colour – it was all in there.

The problem with monolithic specifications is that in order to finish the spec, every component part also has to be finished. As CSS has grown in complexity, and new features are added, it doesn’t make sense to draw a line at which all work is stopped on all parts of CSS in order to declare that CSS version finished. Therefore, after CSS2.1 all the things that had been part of the 2.1 specification were broken down into modules. As the new CSS modules included all that had gone before plus any new features, they all came into being at Level 3. Hence CSS3, and people like me who understood CSS as a single specification referred to the group of Level 3 modules as “CSS3”.

While referring to all new CSS as CSS3 worked for a short time, it doesn’t reflect the reality of where CSS is today. If you read something about CSS3 Selectors, then what is actually being described is something that is part of the CSS Selectors Level 3 specification. In fact CSS Selectors is one of the specifications that is marked as completed and a Recommendation. The CSS Working Group is now working on Selectors Level 4 with new proposed features plus the selectors that were part of Level 3 (and CSS 1 and 2). It’s not CSS4, but Level 4 of a single specification. One small part of CSS.

We also have specifications for features that were never part of CSS 1 or 2, and so these specifications are at Level 1. They are brand new. Examples of Level 1 specifications are CSS Grid Layout and Flexbox. Flexbox is already a Candidate Recommendation (CR), Grid has been voted to CR too. Therefore any new features that are proposed are at this point likely to end up in the next Level of these specifications – Flexbox Level 2 and CSS Grid Level 2.

If you want to see the status of various CSS features, and the level they are currently at check out the CSS Working Group Current Work document. To understand the different statuses that a specification moves through, see the information on Maturity Levels in the Process document.


Šime Vidas September 14, 2016 Reply

https://drafts.csswg.org is also quite useful; you can quickly check which modules have multiple levels and which one is “Current Work”.

Bob Kruse September 16, 2016 Reply

Huh, I’ve been working with CSS3 all this time and didn’t even realize this was the case. It actually makes me feel kinda silly, in a way. Oh well. TIL!

thierry rene matos September 20, 2016 Reply

great article, very enlightening. I thought the CSS would change again only because of the “new version”. Anyway, thanks.

Neil October 4, 2016 Reply

What? Hahaha.

I thought there’s a coming CSS4. But that does make sense. Thanks for sharing.

Leave a Reply