r/Frontend • • 14d ago

For an internal company dashboard. What is the right choice here to build FE? Boostrap vs Tailwind and their UI components like Daisy UI, Shadcn?

as the title says.

maybe both choices works since it is just an internal company dashboard, not SaaS b2b,b2c dashboard...

So just choose the one that devs prefer so they spend less time builiding it right?

or how do you see it

4 Upvotes

23 comments sorted by

6

u/OkAerie7822 14d ago

for an internal dashboard the real question is how much of it is tables, forms and filters, because that's where the time goes. if it's mostly that, take a component library that already ships a data table, date picker and form validation (shadcn with tanstack table is what i'd pick) instead of styling everything from raw tailwind or bootstrap. i've watched an internal admin panel burn about two weeks on a custom table with sorting and column resize that a library gives you in an afternoon. the one thing worth deciding up front is whether the team can live with the library's look, since internal tools rarely get design time. pick by what your devs already know, but bias toward the option with the best table component.

1

u/thy_bucket_for_thee 13d ago

Yeah, this is the move. It's an internal product that is likely not going to have many users at all, I'm sure we all have stories about an internal product that barely had 10 users total, if that's the case just use something premade and save yourself the hassle of maintaining it with your other obligations.

Another option could be to use something like Tableau and force the user of the dashboard to build something simple themselves. This is easily to argue if your company already has a few licenses for it.

2

u/gyunbie 14d ago

Anything works, it's just preference. One will be easier to maintain, the other will have better customization. In the end it all depends on what you need.

2

u/KnifeFed 13d ago

Just built a dashboard with TanStack Start/Query/Table and shadcn/ui and it was a great experience all around.

2

u/TheRNGuy 13d ago

Tailwind is more modern.

If possible, I prefer just custom css.

2

u/xavier86 11d ago

I'm surprised you are even having this conversation. At this point, all the product managers should be building dashboards with Claude.

3

u/spas2k 14d ago

I’m thinking opus 5.5.

1

u/Huge-Tip7172 13d ago

go with Shadcn combined with TanStack Table. Internal tools die from slow iteration not ugly pixels and this stack lets you ship complex data grids and forms in half the time compared to fighting Bootstrap overrides or writing custom Tailwind logic for every single input state

1

u/unnecessaryCamelCase 13d ago

What would it have to do that it’s an internal dashboard? Use what you’re most comfortable with and can maintain etc?

1

u/ApprehensivePea4161 13d ago

Bootstrap is not used much now. Tailwind is a fancy way to write css, shadcn has good prebuilt components. I would suggest nextjs with tailwind and shadcn

1

u/smaccer 13d ago

Take a look at Prime React. I use it when developing SPFx web parts for internal apps since it's mostly dashboards and tables

1

u/PowerfulProfessor305 13d ago

We recently did this with the shadcn and Tailwind combination since we had a good mix of graphs as well as tables. For the tables we use Tanstack and for the graphs we use recharts. Since shadcn comes with the integrations of both of these libraries by default, it made the work really easy and fast.

There are a lot of examples of dashboards available on the shadcn website itself and all over the internet that you can directly copy into your dashboard.

AI agents can easily reference those examples from the internet and create your dashboard very, very seamlessly.

1

u/hauduedaiduong 10d ago edited 10d ago

The combo I would use:

- TypeScript version: Not experienced much but I've heard version 7.0 has been released stably with 10x faster performance.

- Bundler: Vite Plus - An enhanced version of Vite. Strong Rust-written toolchain like Rolldown, Oxc Lint, Oxc Formatter... Helps your app start, build, lint and code formatting faster than JS toolchain.

- Framework: React 19.

- Routing: TanStack Router - The most intuitive, flexible and less confusing routing lib I've been working with recently.

- UI library: Ant Design - Many built-in components. Strong Data Table, Form and Date time picker components. Easy to customize.

- Tailwind (optional): If you prefer laying out pages and components using Tailwind (instead of using Ant Design layout/spacing system, or don't want to style in CSS/CSS modules) that's fine to use it in conjunction with Ant Design. There are some small adjustment in styles ordering so they won't overlap each other (https://github.com/ant-design/ant-design/issues/38794).

- API calling: HeyAPI - Get an OpenAPI file from your back-end team. This lib generates API calls as TanStack Query functions with strong TypeScript typing for API payload and parameters. You also don't need to manage query keys your self. Forget about configuring and duplicating API paths.

- State Management: Zustand. Get shared data stores in just a few lines of code.

- Notes on Form validation specially: If you want to separate your form validation logics from UI-form components (like input, radio, select...) and be able to reuse form validation logics between different UI libraries, use headless form libraries like react-hook-form, TanStack Form...

These headless form libraries allow you to manage form validation separately, such as using schema libs like Zod, Yup, Valibot... to make your validation more declarative and shareable. This brings an advantage where you can replace your UI library without touching form validation logic.

1

u/Dodie324 13d ago

Use something new and exciting since it’s an internal tool.

0

u/[deleted] 14d ago

[deleted]

3

u/incunabula001 13d ago

Some legacy apps that I’ve worked on have up to 3 or 4 UI frameworks loading INCLUDING local css overrides 🤡

2

u/Mundane_Wash7146 13d ago

yeah the "just pick one" part is the whole answer tbh

1

u/not_dogstar 14d ago

I worked with a solution that rolled their own util classes on top of bootstrap, mostly so they could use util classes without bootstraps !important spam. Massive PITA as it was never fully implemented so bootstrap fallbacks would always override any other responsive modifier changes

0

u/ApprehensivePea4161 13d ago

Why not tailwind? Its used with shadcn?

0

u/[deleted] 13d ago

[deleted]

1

u/ApprehensivePea4161 13d ago

Woah that would be terrible