Snapey I see that you can disable all requests of Livewire and reduce to single requests but then that become like normal ajax form submissions that you can easily do via JS with a few lines of code, for every forms, not just for single form, by creating a generic function that can be re-used. So when I create new ajax form, I don't write
anymore new JS code, but just adding a data attribute such as data-ajax-form and then I have an event listener
that process all forms with this attribute. And I can add extra code via on success event if I need.
Almost every JS code that I write can be re-used, so you end up without writing any JS code but only using HTML5 data attributes for initialize and configure the code.
About your example of username, there is a package that I used in past laravel-jsvalidation that allow to do remote validation for any field you want without creating a new endpoint and without writing any JS. Right now I am not using it since checking an alternative without jquery. But I mean is that something like that was already available.
And even without this package you can archive the same by passing to server an extra param like validation=true and then on server side validate only field in the same action, something like you do with Livewire for validate
single field using a method. Similar method you could have in controller, called by action when found param that you define.
I will say an obviously thing by saying that Livewire is written also in Javascript.
And that you don't need to write anymore Javascript is not totally true.
If you want to reduce server request like for open a modal, then you need to find a way via AlpineJS, which is not totally easy to understand and use. Yes for small interaction, but when you need to deal other plugins often become hard to manage.
I saw also all video of Caleb. Even if his videos are nice to watch, they raise even more questions regarding Livewire. For example his last video of datatable, you see that he make a request for every single interaction such as open a modal, toggle filters, etc. Then he said in video that this can be done via AlplineJS but why he don't do that? Just to show that everything can be done without writting any JS. Ok but this raise other problem with too many requests. Because all this status must be sent to server to livewire component to be aware of current state in order to hide/show and prepare variables. Then he end up with some caching of database query using component ID. I am not sure how much are this performante since that ID is unique for each request. Having many users using the same component would not make happy sysadmin.
I want to not being misunderstand, I am don't want to speak something against Livewire to not offend who love it, also much of respect for Caleb. But it's not a good solutions for every developer. For many others can be something awesome.
Regarding tailwind, the first solution to extract utility classes go against the concept of framework, if you do that then you are basically doing what bootstrap already offer. While second solution using component, apart that this make you create a single component for each element you have, for example Jetstream has even for single link in menu, ending up with 90+ views loaded in single edit profile page. But another problem that this second solution seem can't solve is when you need to override single or a few classes of a component. Example you want to change a background color, and so also text color, and let say padding. Using attributes->merge you can't override classes in component, you can only add new classes. This will end with a lot of classes in several views and not local. Marcel Pociot make a video regarding this by proposing a solution, but this seem still not yet updated, see https://twitter.com/marcelpociot/status/1310935864848117760
Another thing is that often you need to create multiple elements in single page for mobile and desktop, this for example for menu, as also Jetstream is doing. Having a large menu, is a lot of duplicated code.
The principle of CSS was (and I hope continue to be) that you have single CSS files that you share across many pages, and by just changing them you don't need to change HTML, csszengarden.com is perfect example of this. With tailwind seem opposite, you never change CSS but you need to change HTML. But this raise problem above.
Someone claim that you just work with classes and not anymore with compilation etc. But if you want to get full potential of tailwind you need to setup your classes in smart way using configuration file, extraction etc. This is not only changing of classes anymore.