I want to share my first experiences with Jestream and Fortify in Laravel 8. I decided to give it a shot yesterday and all I can say is that I definitely will try to avoid the new scaffolding in future projects. Maybe doing my own scaffolding when I have some time.
From my point of view auth scaffolding was one of the best features in Laravel for a long time. It gave you a perfect (minimal) starting point for your application without trying to guide you in some specific direction or taking too much work off you. You just typed `php artisan make:auth` and you were good to go. This functionality gave you some perfectly working default controllers you could utilize with whatever type of frontend stack you wanted. You could build your frontend with plain blade templates in HTML, you could utilize Livewire components, you could even adapt a SPA to the existing endpoints. There was an `Auth::routes()` in your `routes/web.php` and it was clear where those routes come from and which endpoint they were hitting. Wanted to add or alter some behavior? No problem - just go to your auth controllers and override whatever method you wanted to override.
When I used Jetstream for the first time, I decided to give Livewire a shot because I felt like this would be the least kind of "intruding" scaffolding. Turns out you can now decide between pest and cholera. Even given the fact I'm using Livewire and Tailwind on a daily base, I had huge trouble starting a blank application from scratch. The provided auth scaffolding views were **entirely** built from custom components. I needed to look up where I could edit those components and came to the conclusion that I was required to publish the Jetstream assets. My IDE greeted me with a full monitor height of uncommitted files I could now edit to match the design of the components to my regular application layout and design.
Next on I wanted to look into the new login/register/password logic and looked for the controllers. Turns out they are gone. No more controllers. All the logic for authentication which is basically just worth some hundred lines of code are completely over-abstracted and hidden in some huge pile of interfaces, contracts and closures that I were required to dissect in order to understand how it's working under the hood.
Another problem I encountered were the huge load of features that are enabled by default. Some features or functionality you can enable in the Providers, other ones just in some configuration files. Everything is splattered in some other location. Though you were done taming Jetstream - well let me sing you the song of Fortify. Took me another 10 minutes figuring out how to add a simple array of data to the register view. Turns out you need to put some override-closure-method in your FortifyProvider.
I'm neither new to Laravel nor unfamiliar with Tailwind, Livewire or the framework core itself. But in comparison to what I was used to from Laravel 7 the new scaffolding with Jetstream in Laravel 8 is a completely bloated mess. Profile photo functionality enabled by default? Really? Please remove this stuff from the framework and stuff it in some 99$ package; that's what the Laravel community is used to. Whenever there were PRs in the past that added "too much functionality" to the framework were Taylor thought not everyone would profit from it, it got declined. Now it doesn't get into my head how some simple stuff like authentication, e-mail verification and password reset functionality could get **that** bloated and I'm really not eager to see what future may bring.