People berate new frameworks for their bloatedness and that older frameworks do similar jobs. I'd make the argument that new frameworks are only worth it if you've personally experienced their "pain cases".
New frameworks are developed because old ones "don't work", and are documented and built with the assumption that people would be moving into the framework with the same problems. If the problem doesn't sound familiar to you, it means you haven't encountered it.
This means you don't get what the framework is meant to solve, you'd end up fumbling thinking "why is this abstraction important?" "why is it vital that I make this deliberate choice in the configurations?".
I tried learning Django to host a website without having hosted my own before, so I naturally started wondering why all the abstractions were needed, and why Django wasn't just python-server-pages, which felt like all I needed. Only after finding myself hosting a site where I had to copy-paste a section of the code on every single page, I found myself understanding some of the reasons I needed many of those abstractions. If I had insisted on using Django, I probably would've rebuilt the site anyways by using it the wrong ways (by making a model for every page or something)
This applies not only to frameworks but for languages. Rust is new and fun, and looking long sequences of dots look really fun to program, but I find myself wondering: why is borrow checking so useful? (until I realized in python list.sort() actually modifies the original list and returns None, an obvious choice mechanically but inconsistent with the rest of the library)