I used to love Bootstrap. God, now I just hate it
ruky.me
ruky.me
Bootstrap remains one of the better frameworks out there, and certainly one of the better (if not the best) maintained frameworks out there.
Bootstrap 5 is not perfect, but in many respects its a great improvement over what went before (e.g. removing jQuery, improved flexbox support etc.).
Bootstrap 5 is not without valid criticism though, for example a small number of heavily opinionated decisions such as removing support for dropdown nested menus - the authors, when asked for their reasoning behind the decision presented no reason other than "we decided five years ago its was too difficult and that's that".
However the author of this HN post does touch on the underlying problem. There is no real competition to Bootstrap which is well maintained.
Often I have looked around for alternatives. But I end up coming back to Bootstrap because it has the most complete featureset and is the best maintained. Other frameworks have simply either become abandonware (e.g. Foundation), are just too complex in syntax for their own good (e.g. Tailwind) or simply don't have the featureset (others).
What's the difference between exaggerating and slightly over-exaggerating?
An adverb. :p
(In all seriousness, technically a reflection of the severity, but more likely a turn of phrase).
I've yet to experience the same result with utility frameworks like tailwind as their class names are based on intuitive short-hands of CSS properties instead of made up artificial semantic names which can change on a whim.
The main thing I dislike about tailwind is needing a background process which further complicates a website build process, so I've resorted to maintaining a useful subset of primary tailwind utility classes and just the color themes I'm interested coming in at ~60kb unzip / ~12 kb gzip [1]. Ultimately I'd prefer if a popular framework like Bootstrap to become a static utility stylesheet, but I don't believe they know if they want to be a semantic CSS framework or a utility based one so we end up with short-hands like ms-* and me-* for left/firght margins instead of tailwinds intuitive ml-* and mr-* which results in basic spacing classes being pointlessly incompatible between major CSS frameworks.
I tried to look into Tailwind for a small project I'm developing right now, and literally got stuck immediately on this:
Right now, I use toggles from Bulma-Extensions [0]. They work great!
If I wanted to have those in Tailwind [1], that would be $279 (+tax) please.
I don't need anything fancy, or any other Tailwind UI component. I just want a nice toggle.
Maybe I could write that myself, but you probably get that it's more about the principle of "how easy is it to find well-made second-party UI components and extensions". And Tailwind is not looking great.
[0] https://wikiki.github.io/form/switch/ [1] https://tailwindui.com/components/application-ui/forms/toggl...
https://tailwindcomponents.com/search?query=toggle
You don't actually need to pay for TailwindUI. Most people just use those as starting packs to get good looking projects off the ground much faster cause then they don't need to style so much from scratch
My google-fu must have had an off day.
Tailwind and other utility frameworks aim to solve (well, avoid) the naming problem, and address the common tendency for a project's CSS to devolve into hyper-specific rules where you can't modify or remove anything for fear of breaking something else. The downside is that it doesn't provide any pre-made components for you—you've either got to build them yourself or use something someone else has built.
Bootstrap, Bulma, etc. are largely focussed on providing pre-made components (albeit with some utility classes), with the downside that making one-off modifications (e.g. "I want this panel, but in this one specific place it needs to have no bottom margin") is typically very awkward—or at least was in the Bootstrap 3 days; admittedly I haven't really used 4 or 5.
I think Bootstrap 5 came with important improvements over Bootstrap 4 like not requiring jQuery (although it works very well with it) and the "gap" utility classes.
There's a lot worse version bumps like ExpressJS where the (at least seemingly) entire API got rewrote in a major version jump.
I've been using v3 and v4 in various projects without issue.
I don't feel like upgrading a CSS framework is as important as an NPM library, since I wouldn't expect security issues etc. to crop up here.
I've been trying to argue against it, but in the end management would rather waste money on completely pointless bootstrap updates than change their policies. Oh well, not my money…
I agree the changes between each major version are non-trivial. So much so, I've basically not updated some websites because it's too much work. And like the author, I've tried other frameworks and they have their corner quirks or get abandoned.
But, Bootstrap is the only one that has tested time, and sits in the 'just works' camp. Once I've learned the DSL, I'm incredibly fast at how to structure UI elements (assuming the designer followed the grid, which is hardly a guarantee).
Still, 100% agree on the pain of upgrading.
It is too opinionated and still uses a general :focus { outline: 0} which is a big no-no. Development of real products invariably turns into overriding its CSS.
The carousel for example is outdated and limited so here's an alternative (shameless plug) – https://nativecarousel.com