I would not go as far as saying “bad”, it is after all a preference and it depends on what you want to do.
It has cool parts and ideas. A plugin? Hell yes. In core!? Nope thanks.
In my experience, and in the experience of many people I talk to, the Blocks thingy - while being many things - is not really stable and it is more oriented towards an “end user” than a Developer.
I still laugh at how Matt introduced the Blocks (AKA Gutenberg) as a “chance for developers to redo existing work using Blocks” (https://ma.tt/2017/08/we-called-it-gutenberg-for-a-reason/, Developers and agencies section).
That’s almost offending. As if I would have the courage to go to a client and tell him “what I did before was garbage, now there is a cool way, pay me 5k and I will make you king of your own website”
Anyway, using blocks, you will find yourself being positively surprised how fast you can add some fancy header, loop section, quote or whatnot. With an army of new plugins providing all kind of add-on settings for blocks or advanced blocks, you can do cool things like create lists and searches all only using drag and drop and change some settings.
Fancy shadow under the box, perhaps a link wrapping your box, and that link shall be dynamic? No problem.
It’s like shortcodes, but visual. Like Elementor, but integrated in Core (and not that much HTML garbage).
Just, what will happen is that after doing all the fancy stuff, you turn off the screen and next day, or perhaps next week, or who knows after an update you come back and stuff will look as chewed by a cow.
All those fancy paddings suddenly may be lost. Or perhaps added, where previously there where none, just “because”.
Maybe you will find yourself in front of an empty editor.
Or, and that was my last experience with it, you will be observing how the console piles up 146 lines of the same error, all due to a wrongly saved “reusable” block, something that literally can happen with one click in the new interface without your conscious intention.
At this point you wont be able to save, edit, change or else any post anymore, because on any post it will try to pull in that faulty saved reusable block wether you use it or not.
Now everything is “on the fly” and once this “on the fly” stuff has a single error in the process, that’s it.
You can stay there looking at your console going from 146 lines of error to 230, and then 460 and 500, and after half an hour waiting just because its fun, you will delete the website and/or call psychiatric assistance rofl.
Joking apart, the above was my last attempt and since then I decided to not give it anymore trials unless where used already.
I have had more issues than actual advantages on each site I had to, or decided to use Blocks.
In the begin I was like “give it time”. Now it is been 3 years, and it doesn’t get any better.
Just the concept is already frightening to me.
Basically, the clear border between back- and front- end is gone. An example. This is complete utter garbage, my apologies for the choice of words.
It makes no sense, and is not only annoying but also dangerous.
Suddenly code intended for the backend will run on the front end and code intended for the front end will run in the backend.
(I am not referring to the security aspect of code, we need to check if a user can (current_user_can) for that, but still is_admin is a clear high level command and programmatic way of telling a wp php based program “check if is admin area”.)
Thus now you need to check on a number of new/other checks, and that may or may not be enough, and may or may not ruin the “visual” building experience.
If, say, you have a shortcode that should not execute in the backend, the user will see “old school” syntax in the middle of a Visual Builder. Confusing. But what’s worse is you actually need to tell that to your shortcode meanwhile, otherwise, it will just try to execute in the very post editor, because that thing now is not anymore considered “admin”.
Not to forget, this blocks thingy will destroy any incentive or motivation for a newbie to even learn real HTML and CSS. Not to speak of some other more advanced programming language to perhaps perform a query or else. I consider this … very, very bad.
And I just don’t like how the community was basically ignored, and the plans of a company sticking behind a community open source project being pushed thru. Just check this out:
millions of installs of a plugin which disables the whole blocks thing. Note that WP Stops counting after 5 million installs. It could well be there are 10, or 20 million sites with that plugin active, thus, disliking Blocks. That plugin appears on the actual landing page of WP Plugins, under the “Popular Plugins” section. That is how popular it is.
That said, I am not going to stop anyone using WP. It was and still is a great tool. But it is getting narrow, sooner or later disabling blocks will not be an option anymore (with 5.8 now that option just got a significant part smaller), and I can’t befriend the drag and drop interface. I consider this “plugin or theme” territory and I love Blocs (no K) exactly because it keeps off the site. I can use it if I want, and then use the exported theme and mess around with the code, instead of relying, and keep using, a Drag and Drop experience which no matter how good, will always be less powerful than a directly accessible code.