React & Frontend8 min readJuly 18, 2026

Architecting Scalable Design Systems: Vanilla CSS & React Without Tailwind Lock-in

Why building on vanilla CSS variables and modular utility classes gives you maximum long-term flexibility, faster builds, and zero framework lock-in.

Nazmul Hawlader
Nazmul Hawlader
Senior Shopify & Full-Stack Engineer
Note: Key takeaways in this guide: • Establish consistent design tokens for spacing, typography, radii, and elevations. • Create composable React component primitives (Button, Badge, Card, Modal, Input). • Maintain lightweight, dependency-free CSS codebases that compile in milliseconds.

While utility frameworks like Tailwind are popular, crafting your own design tokens with vanilla CSS gives you 100% control over the generated output, eliminates build-step bloat, and makes it trivial to share styles between React, Liquid, and plain HTML.

1. Designing Token Hierarchies

Structure tokens into primitive values (e.g. emerald-500) and semantic roles (e.g. accent-primary). This abstraction allows you to adjust your entire visual palette without touching individual component files.

Summary & Key Conclusion

A solid design system accelerates feature development and enforces visual consistency across your entire application suite.

Nazmul Hawlader

Written by Nazmul Hawlader

Top Rated

Senior Full-Stack Engineer & Official Shopify App Store developer. Founder of Stockly and Kilo (kilo.nazmulcodes.org), specializing in high-performance Shopify apps, client-side media compression, and sub-second web performance.

Recommended Related Articles