Back to Engineering Notes
Frontend Engineering & DX
6 min read

Starting from Scratch vs. Building Boilerplates: Lessons from Migrating Ant Design to shadcn/ui

Why building custom internal templates accelerated our prototyping by 4x and how we managed component library shifts from heavyweight bundles to composable Tailwind primitives.

Next.js
shadcn/ui
Ant Design
Tailwind CSS
DX
Boilerplate
Key Engineering Takeaway

Standardizing an in-house starter template with pre-configured auth, tables, and headless primitives cuts prototype-to-production time from weeks to days.

1. The Bottleneck: Starting from Scratch on Every Enterprise Tool

In fast-moving environments, new operational utilities, internal portals, and ground-support tools frequently need to be spin up from scratch. Early on, developers spent days re-configuring TypeScript configs, ESLint rules, auth token refresh interceptors, responsive layout shells, and basic table filters before writing a single line of business logic.

2. Shifting from Ant Design to shadcn/ui + Tailwind CSS

Many of our earlier systems relied on Ant Design for quick out-of-the-box data tables and modals. While convenient initially, customizing dark modes, overriding heavy CSS-in-JS style specificity, and tree-shaking bundle sizes became painful. Shifting towards shadcn/ui (Radix primitives + Tailwind CSS) gave us complete ownership of component code, zero runtime style overhead, and superior keyboard accessibility.

3. The Solution: An In-House Boilerplate for Rapid Prototyping

To solve both the component inconsistency and the setup fatigue, we built our own modular starter template. It bundles accessible shadcn/ui base primitives, predefined data table filters, standard form validation, and dark/light theming. Now, when a new stakeholder requests a prototype, we spin it up in hours instead of days, ensuring UI consistency across the entire company portfolio.

Written by M. Hamamul Fikri L.

Facing a similar engineering challenge in your team? Let's discuss.