<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/a-history-of-styling-choices-leading-to-native-css-vl9qwhhjt" -->

---
title: A history of styling choices leading to native CSS
description: A personal account of how the todometer app's styling stack evolved over nearly a decade, moving from Less to node-sass/CSS Modules to PostCSS with...
canonical: https://daily.dev/posts/a-history-of-styling-choices-leading-to-native-css-vl9qwhhjt
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: A history of styling choices leading to native CSS | daily.dev
og:description: A personal account of how the todometer app's styling stack evolved over nearly a decade, moving from Less to node-sass/CSS Modules to PostCSS with...
og:url: https://daily.dev/posts/a-history-of-styling-choices-leading-to-native-css-vl9qwhhjt
og:image: https://api.daily.dev/og/posts/VL9QwHhJT.png
og:image:alt: A history of styling choices leading to native CSS
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# A history of styling choices leading to native CSS

**[Cassidy's blog](https://daily.dev/sources/cassidoo)** · [@cassidoo](https://daily.dev/cassidoo) · 3 min read · 25 upvotes · 3 comments

## Summary

A personal account of how the todometer app's styling stack evolved over nearly a decade, moving from Less to node-sass/CSS Modules to PostCSS with postcss-nested, and finally to pure native CSS. The migration was made possible by CSS nesting and CSS custom properties becoming browser standards, eliminating the need for preprocessors entirely. The post highlights the difference between postcss-nested (Sass-like syntax) and postcss-nesting (CSS spec syntax), and shows how an iterative migration strategy made the final cleanup trivial.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://cassidoo.co/post/css-todometer/>

## Community discussion

Top comments from developers on daily.dev.

**@petecapecod** · 2 upvotes

> Pure CSS forever!!! 🎊🎉

## Similar posts on daily.dev

- [Goodbye SASS](https://daily.dev/posts/goodbye-sass-lf9vddw6q) · Lobsters · 44 upvotes · 5 comments
- [Native CSS Nesting](https://daily.dev/posts/native-css-nesting-r3p5s5hro) · Flavio Copes · 15 upvotes · 2 comments
- [Un-Sass'ing My CSS: Native CSS Nesting](https://daily.dev/posts/un-sass-ing-my-css-native-css-nesting-t1my1vdhs) · Always Twisted · 5 upvotes · 0 comments
- [CSS-in-JS: The Great Betrayal of Frontend Sanity](https://daily.dev/posts/css-in-js-the-great-betrayal-of-frontend-sanity-yltrsmn2c) · The New Stack · 0 upvotes · 0 comments

---

Tags: [#css](https://daily.dev/tags/css)

[View this post on daily.dev](https://daily.dev/posts/a-history-of-styling-choices-leading-to-native-css-vl9qwhhjt)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"A history of styling choices leading to native CSS","url":"https://daily.dev/posts/a-history-of-styling-choices-leading-to-native-css-vl9qwhhjt","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/a-history-of-styling-choices-leading-to-native-css-vl9qwhhjt"},"datePublished":"2026-03-25T22:02:47.892Z","dateModified":"2026-03-26T19:00:21.392Z","description":"A personal account of how the todometer app's styling stack evolved over nearly a decade, moving from Less to node-sass/CSS Modules to PostCSS with...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2f847309023a929ccb0861433bb4ff38?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/2f847309023a929ccb0861433bb4ff38?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Cassidy's blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Person","name":"Cassidy Williams","url":"https://daily.dev/cassidoo","image":"https://avatars.githubusercontent.com/u/1454517?v=4","description":"making memes and dreams and software","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":2340}},"commentCount":3,"discussionUrl":"https://daily.dev/posts/a-history-of-styling-choices-leading-to-native-css-vl9qwhhjt","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":25},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":3}],"keywords":"css","timeRequired":"PT3M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Cassidy's blog","item":"https://daily.dev/sources/cassidoo"},{"@type":"ListItem","position":3,"name":"A history of styling choices leading to native CSS"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/a-history-of-styling-choices-leading-to-native-css-vl9qwhhjt","comment":[{"@type":"Comment","text":"Pure CSS forever!!! 🎊🎉","datePublished":"2026-04-02T12:40:23.981Z","url":"https://daily.dev/posts/VL9QwHhJT#c-MuNtsVgjg","author":{"@type":"Person","name":"Peter Cruckshank","url":"https://daily.dev/petecapecod","image":"https://media.daily.dev/image/upload/s--ZJhQyKws--/f_auto/v1721235024/avatars/avatar_A9xh33q0QoxtkGoJRCosp"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}}]}
```

