Why Redpapr Chooses Tailwind + DaisyUI + SCSS Over ShadCN and Others
At Redpapr, we care deeply about design, speed, and scalability. Our UI isn’t just about pixels—it’s about performance, accessibility, and how quickly our team can ship polished features.
While evaluating our frontend stack, we explored several modern UI solutions—including the popular ShadCN (based on Radix + Tailwind). But after careful consideration, we chose to standardize on a Tailwind CSS + DaisyUI + SCSS stack.
Here’s why.
TL;DR
Criteria | Tailwind + DaisyUI + SCSS 🏆 | ShadCN / Others |
---|---|---|
Setup complexity | Minimal | Moderate (Radix + Tailwind + shadcn CLI) |
Custom theming | Simple with DaisyUI themes | Manual or component-level |
Component coverage | Extensive out of the box | Partial, often handcrafted |
Design consistency | Easy with SCSS vars and Tailwind | Requires discipline / theming setup |
Team velocity | High | Slower for customizations |
Bundle size | Lean (utility-first + purge) | Slightly heavier (Radix deps) |
1. Tailwind Gives Us Control Without the Bloat
Tailwind’s utility-first philosophy aligns with how we build UI: start simple, scale with intent. We can build exactly what we need, without being forced into someone else’s design system.
With JIT mode and purging, we only ship the CSS we use—keeping performance top-tier.
2. DaisyUI Speeds Up Our UI Development
We evaluated UI libraries like ShadCN, Chakra, and MUI, but DaisyUI won us over for three reasons:
- ✅ Drop-in components with sensible styling.
- 🎨 Built-in themes (light, dark, corporate, etc.) that just work.
- ⚡ Tailwind-native—no extra learning curve.
DaisyUI covers most of the common components—buttons, modals, dropdowns, navbars—without locking us in.
We can use a prebuilt button today and replace it with a custom SCSS-driven design tomorrow. That flexibility matters.
3. SCSS Gives Us Fine-Grained Control
SCSS complements Tailwind in areas where utility classes fall short:
- Shared style variables (colors, breakpoints, z-index)
- Nested component styles
- Dynamic theming support
- DRY CSS for complex UIs
- DRY CSS for dynamic keyframe animations
Instead of relying on deeply nested Tailwind classes, we offload structural or semantic styling to SCSS. This gives us the best of both worlds—utility classes for layout, SCSS for design polish.
4. Why Not ShadCN?
We like what ShadCN is doing—design system + Radix + Tailwind—but it wasn’t a fit for us:
- 🔧 Radix is overkill for many components we need.
- 🔍 Customization was clunky—required modifying multiple layers.
- 💼 Too opinionated for our evolving brand identity.
- 🛠️ Requires ongoing maintenance of component tokens and imports.
Redpapr’s UI is simple but evolving. We needed something fast, not formal.
5. Our Workflow is Faster
With Tailwind + DaisyUI + SCSS, we:
- Prototype pages in hours, not days.
- Apply consistent theming across components.
- Maintain fewer files and configs.
- Have full control over responsiveness and accessibility.
And because our entire team speaks "Tailwind", collaboration is smoother and more consistent.
The Bottom Line
We chose Tailwind + DaisyUI + SCSS because it gives us:
- 🧰 The flexibility of utilities
- 🧪 The power of structured styling
- 🧩 The speed of ready-made components
It's not the flashiest stack, but it's the one that gets out of our way—so we can focus on what matters: building a better learning experience.
Curious about our component design system or how we manage themes at scale? Reach out—we’re always happy to chat about frontend architecture.