🔥 Inertia v3, New Laravel Site & New Spatie Package (IRL w/ Freek at Spatie) !yt
Chapters8
Host kicks off the livestream, checks audio, and greets the audience before diving into the topics.
Freek and Nunomaduro dive into Inertia v3, spicy Laravel packages, and a fresh Spatie demo site with hands-on demos and real-world tips.
Summary
In this deep-dive livestream, Freek and Nunomaduro explore the latest in the Laravel ecosystem, with a heavy focus on Inertia v3, Laravel 13’s features, and the Spatie package ecosystem. Freek shares honest impressions of Inertia v3’s new capabilities, including optimistic UI updates and instant visits, while Freek and Shad discuss how these tools compare with Livewire and traditional Ajax workflows. The hosts also peek at the new Laravel 13 features (like attributes and the Laravel 13.x pace), and they test-drive a live demo app to showcase inertia v3's use of loyal props and server error handling. The conversation then shifts to Spatie’s open-source packages—ranging from backups and sitemap to a crawler and Sluggable—with live coding demonstrations and practical usage notes. They even install and run a crawler on a real project, showing how to crawl internal and JavaScript-heavy pages (with optional browser rendering). Throughout, the team reflects on AI tooling (Laravel AI SDK, Boost, MCP, and Ray) and how these tools fit into day-to-day PHP/Laravel development. The session also includes candid talk about backups (Laval Backups) with real-world horror stories and best practices for off-site redundancy. By the end, Freek and Nunomaduro leave viewers with concrete takeaways about adopting new features, choosing between Inertia and Livewire, and how to leverage Spatie’s packages to ship robust Laravel apps faster.
Key Takeaways
- Inertia v3 enables optimistic UI updates, allowing a UI to reflect changes immediately before the server confirms them, improving perceived performance.
- Instant visits in Inertia v3 render components instantly while later loading data, removing the need for full backend round-trips when navigating between components.
- Loyal props provide a simple way to manage layout-wide reactive props, improving consistency across pages without duplicating state logic.
- Inertia now supports robust server and network error handling, including specific behaviors for 404/500 statuses and network outages, enabling smoother offline or flaky-network experiences.
- Use HTTP with Inertia v3 to perform JSON-backed requests, expanding beyond traditional HTML responses and enabling richer API-driven interactions.
- Laravel 13’s attribute-based syntax is a hot topic, with participants debating its pros and cons and how it might influence future routing and controllers.
- Spatie’s ecosystem adds practical value: backups, sitemap generation, media handling, and utilities like Sluggable are demonstrated live, showing how to integrate them into real projects.
Who Is This For?
Essential viewing for Laravel developers curious about Inertia v3, Livewire vs Inertia decisions, and the practical use of Spatie packages in production. Also valuable for teams considering AI-assisted development workflows with Laravel AI SDK and Ray.
Notable Quotes
""Now with inertia v3 you can optimistically update the UI.""
—Freek explains the core idea of optimistic UI in Inertia v3.
""Instant updates in my opinion is my favorite feature of FB3.""
—A fan-favorite takeaway highlighting the appeal of instant UI feedback.
""This is instant visits, which in my opinion are really, really badass.""
—Freek extols the value of instant visits in Inertia v3.
""Loyal props... server errors... network errors""
—Summary of the new error-handling and prop-management features in Inertia v3.
""Use HTTP with Inertia to perform JSON-backed requests... expand beyond HTML.""
—Demonstrates the new HTTP hook and JSON response support in Inertia.
Questions This Video Answers
- How do optimistic UI updates in Inertia v3 improve perceived performance?
- What are instant visits in Inertia v3 and when should you use them?
- How do Loyal Props change layout state management in Inertia apps?
- What’s new in Laravel 13 attributes and how might they affect routing?
- How can I use Spatie’s backups and sitemap packages together in a Laravel project?
Inertia v3Laravel InertiaOptimistic UIInstant visitsLoyal propsServer errorsNetwork errorsUse HTTP with InertiaLaravel 13 attributesRay debugger (Spatie) and AI tools
Full Transcript
Black hey jump. Up. White. fight. One Everything. Hey, hey, hey, hey, hey, hey, hey, hey, hey, hey, hey. hey. What's up everyone? Welcome back to another live stream. I hope you guys are excited today. I hope the sound is okay. By the way, let me know in the chat how the sound is. It should be okay, but you guys let me know how everyone is doing. Today I'm here with the mighty freak Venh. Yeah. For the Dutch speaking people, Van. Okay. Okay. And for the hered works as well, okay. And I'm with the spicy office by the way, which is fantastic.
So you guys let me know how the sound is, how the video is, if you can hear freak, if everything looks perfect for you. Let me know how you go. Meanwhile, hi Adrian. Hi Miz. Hi Modi. Hi Bella. Nice to see you. Alexandra Pascal Reot agent once again. Wreak for the win. A lot of love by Spy. People love spicy, by the way. People love spicy. People love spicy. You know that, right? Yeah. I noticed that at the conference as well. Lots of people are going to to thank me and and stuff like that. So, yeah, I feel the love as well.
Okay. Everyone double freak on the chat. I want to see everyone showing the love for Spy and Freak chat. I want to know if the sound is perfectly clear because we are going to we're going to have a three hours live stream. Oh my god. And I want the sound, the video, everything to be perfect. So you guys let me know if W audio over there. It should be good. But you guys know the drill. Let me know how things are. Sunday is good. So I think we're chilling. How good it is. Is actually www or is just you know a little bit in betweens.
PHP annotated. Uh by the way he have been a lot in my streams already which is good. Yeah. Brand. Yeah. Yep. Yep. Yep. Yep. Nice. Nice. Nice. Okay. We have a W audio hardcore. Tobias. Nice to see you. Ian [ __ ] what's up? Nice to see you. Audio up, please. Okay. Well, I can make it a little bit more loud, but I think it's a you problem. Okay. I think it's a you problem. Uh, I can make the audio up a little bit more, but um, you guys let me know. Okay. Hello from Ukrainian. Nice to see you, Bruno.
What's up, dude? Welcome everyone. People on Tik Tok, how you guys doing? Shenito, nice to see you as well. A lot of people, a lot of a little reverb. Yeah, that's maybe also the room. The room is a little bit revery. Reverb revery. Okay. Well, everyone is saying audio is okay. So, I think we're chilling. We're chilling chat. Today we have an amazing live stream. Okay. We are going to talk about a bunch of new [ __ ] in the Laval world. I hope you guys are ready because today we are going to dive into Inertia 3.
This will be the main thing we are going to dive in today. Inertia 3 which looks fantastic. Freak. Haven't seen it yet. Nope. So we are going to have some genuine reactions from freak. I have seen a little bit from Joe Tennant live stream uh talk at Lonu. Yeah. So we are going to talk about inertia by3 mainly. Be sure you guys stick around because before we do that we are going to warm up the audience and have a few people here joining on the live stream. We are going to dive into Laravel 13 the spelt kit.
We have a bunch of spicy packages to review. And we are going to install them. So that will be fantastic as well. So, first in what I want to do first, I think I want to talk to you about Laval 13. Have you seen it? Uh, I've seen it. Yeah. Yeah. Yeah. I I've seen I've seen Taylor stock on it. I've seen the attributes. Uh, uh, I like attributes. Uh, I really like that uh that it's going in there that it gets uh gets more focus. It just feel it just feels better. It feels right.
That's what I've been that's what I've been told. By the way, Shad, what do you guys think about attributes type? Yes, if you enjoy this new addition to Laravel 13 or type no if you think it should be a little bit different. I also would love to know if you type no just why do you think it's not a good addition? So personally freak I think this attribute should not be used. What do you think about fillable? Um usually I have it like in my app service provider to ong guard every every on my opinion.
It's just the best. Um, you know, hidden of course, right? Especially inertia. Yeah. Yeah. Indeed, indeed. Super important. I actually almost never have the use case for tables though. Do you? Not really. Maybe when you override something from a package or something and it uses some kind of table that's already uh already used. But I don't do do that too often if I'm honest. Apparently in Laval 13, we have attributes for every single bit. So everything that was a property can now be used through attributes which I which is good which is very very good.
Same goes with cues. Okay. Same goes with cues which is nice. A lot of people saying here coding with is saying that he loves attributes uh himself. Bruno is also saying attributes are great if we have a ra Oh good good comment here from the chat. If we have a recctor to migrate everything would be sweet. Yeah that would be nice. Uh it would be nice. Here is an open source opportunity for many of you. You can literally create or cloud code it actually a recctor migration for Lavl 13 is just shouldn't be too hard I think shouldn't be too hard and zero breaking changes as well right so that should be good a lot of a lot of love for you by the way a lot of people saying the great Mr.
Spicy, thank you for your contributions. How many packages does Spasi have? Uh, I actually don't know the the right number, but it's like uh over 400 now, I think. Uh, 400 packages. Yeah, over over that. I think it may 400 packages. Is this real? Yeah. Yeah. Oh my god. That's kind of insane. Um, Agent is saying attributes can be like a car with lots of packages on top, which is a good point. Yeah. which is a good point because this stuff right here might become a little bit verbose like too much stuff, right? Yeah. Yeah.
Yeah. But but the same can be said with properties too. Yeah. Yeah. Indeed. Indeed. I think it's also a question of uh what you're used to. I think uh if you're going full on attributes, you'll get used to it very quickly. I think I think this is better than some loose properties where you don't get all the completion on. I like this better. Yeah. Generally here on the chat the reactions are that the attributes are like a good addition in is a good move about team talking about the chat we have more than a hundred people watching right now concurrently.
So if you guys are watching us and having fun this will be a three hours live stream we are going to jump into various topics inertia v3 we have a full demo app to try and see how inertia v3 is. We are going to see the new live website. We're going to jump into various topics. So, if you guys are enjoying the content today, just go all the way down. It is something you can click on, which is a like button. Okay? It's super important. Click on the like button, subscribe to the channel, and let me know what you think.
Now, Mr. Spy is not a human. He's like a coding machine. Well, well, I'm I'm human. I'm here. I'm a human. You can you can you can feel it. I'm a human. He's not AI. He's real. I can touch him. So, yeah. Yeah. Okay. Not an AI voice. Yeah. So, we have attributes which is the main thing right in Lavville. I really like this for console commands. Yeah, indeed. That's like the perfect stuff. Uh Yep. Yep. Yep. to uh to have there. Uh have a few additions here and there, but I feel like it's the main reason.
I saw somebody ask Taylor for an attribute that he decided not to add, which is the route attribute. uh which I think makes sense not to not to add it because it's not like the the the I I think uh Taylor doesn't feel like it's like the Laravel way uh way. It's a good point. It's we can actually jump here real quick to web. Let's go for example here to this organization controller. Yeah, I honestly sh I want to hear Freak's opinion about this. Uh but maybe like then we can also discuss a little bit this later on.
Yeah. So what Frick is saying is that it would be kind of cool to have this. You have a package for this, don't you? I have a package for this. Yeah, we're going we could to take a look at it uh later. So I think the goal would be in just do this. It would be nice. I'm going to be honest. I would love this. What do you guys think, Shad? By the way, let me know what you think about using attributes for routes. By the way, this is not coming a lot of 13. N however, Spasi has a package for it which we can open in a second, but let me know what you think.
W attribute or you think it's not actually a good idea? Let me know what you think. I honestly I would love to see this as well. I think in the symphony world they uh they they do this quite often. They don't have like a routes file uh like Laravel tends tends to have and for them it works pretty well. I guess it's a it's a matter a little bit of taste. There's also a matter of organization though because one question I have is that if you want to apply off like to a big chunk of routes how do you do it on the web PHP again?
Uh then it's on the web PHP again. Yeah, I think in the package uh it uh I think it's called Laravel route attribute. So it's always a very simple name. Uh this one uh I guess that is the one. Yeah, Laravel route attributes. There it is. Okay, I'm going to go I'm going to open the docs I think. Yeah. Uh maybe maybe this one is like a read me file directories. Yeah. So where it's being auto discovered and if you go to the usage chat and you see it like this is like get uh that we need to have there.
Uh yeah. Okay. And then you have the the the all of the all of the verbs. And here you can do do everything that you normally can you can do there. Okay. Yeah. Shadow I'm going to share a link with you all. Here we go. So you guys can see it. Okay. Uh, what's new in inertia? We're about to find out. We're going to jump into Nisha V3 once we warm up the people. What else we have? I prefer that leave the route in the routes file, which makes sense. Oh, yeah. A lot of people that's why I think Taylor doesn't want this.
It's because a lot of people actually love the web.php. And you know, I don't I think it's okay. I think both are okay. And um, you know, Yeah. For me personally, I have created uh this in your project. I have used it in a project but then I went back to the to the routes file because I really prefer like the discovery possibility of like a routes file. You just see like an overview of your app and you lose that a little bit here. So maybe for smallish projects maybe but for bigger I I tend to prefer the the the routes file as well.
And we have obviously bumping the PHP version on the level 13 which goes to 8 8.3 makes sense. I'm on 8.5 already on my all my stuff. So same. Which PHP version does all of you use by the way? Write on the comments. I want to see which PP PHP version are you guys using at the minute in your project. What do you use? Uh 8.5. Always the latest. Uh okay. Um cool cool stuff. Yeah. Agent saying PHP 8.5. The new website looks amazing. We're about to dive into that. By the way, a lot of people saying PHP.4, which is okay, right?
Yeah. Yeah. Sure. Yeah. Because system is like catching up with PHP 8.5, so it kind of makes sense. Most of the people hear PHP 8.5. We see a PHP 8.4 as most people hear PHP 8.4. We see some people PHP 8.5, PHP 8.3, 8.7 is impossible, by the way. I don't know where I don't know where you are. Unless you're from the future. Unless you're from the future, that's that's impossible. So yeah, reminds me of Java. Well, thank god it's not Java though, right? Yeah, that's cool. All of you in PHP.4. So that's new. What's new in Laravel?
Check it out on Laval News website. Next we have I want to show you the laval the new laval.com website. This is looking really really sick. That's very nice. That's very very nice. Shhat, let me know what you think about the new Laval website. I find this ridiculously just elegant, clean, slick. Honestly, I told them a lot about Slack every time there's a new Laravel site, I'm like 80% convinced it's better than before, but not 100% convinced. Like there's a few sections which potentially could be could be better could be better and everything, but like looking at this website, it's just looking so clean honestly.
Mhm. Also super it feels like 2025 like talking about agents and [ __ ] Yeah, indeed. it's smart to already incorporate uh that language here. So other people that aren't working with Laravel but are interested in AI and agent workflows they they already get to this uh that's a good point because Taylor mentioned on his speech at Laru which we are going to also talk today that um it's kind of there is a lot of people jumping now into web development which they don't know PHP they don't they don't know Laravel but they want to have a friendly agent framework.
Yeah, that's what Laval is trying to be now. It's like being this there's this new opportunity for a really sense of PHP and there is Laval which really works good because of the conventions. So I love this website. I think this is like fantastically great. Look at this just you know all of the examples using the AI SDK as well. Um obviously talking about the basic stuff like models and everything but like all these animations. Look at this just so clean. Also now with the new Lavelvelt starter kit by the way which which week we works really good.
Yeah Lavel with blocks Lego super nice. Spy website needs a redesign. Is that true? Yeah the spy website needs redesign. That's that's true. Why why it doesn't have a redesign because we're busy with with all the projects that we do but I really want to give like the the the spicy website some focus too. There are actually some sections of it. The open source section has received a redesign. Yeah. can show it if if you want to. Yeah. Yeah. Absolutely. B I assume. Yeah. But we want to Yeah. make it ready for the uh for the AI as well.
So this is like the old version and if you go to the open source section, you'll see that it already has like a new new house style. So Oh yeah, this is looking much better. So this is much better, right? And we need to do that for the for the whole website also. Focus uh on a on AI also bit because we're using it a lot at Spy. Uh this is looking this is looking good though. This is good, right? Yeah. So, this will be probably a uh uh the same style over the the whole site, but we just need some time to to do it.
We're not with 100 people. We're like with with with about 10 people. So, by the way, Sh, we have more thanund 120 people watching currently right now. Stick around because we are about to jump into Inertia V3. Okay, I have an example where we are going to dive into the new features of Inertia V3. Okay, exclusive access to this demo. Okay, this is brand new. I have access to the V3 features here on this example with code examples, how you should use them, why you should use them, like all that stuff here and we are going to see every single bit of the inertia v3.
Okay, so stick around if you're a lover of inertia or if you just want to see what's new. We are going to equally see all of the new features coming to Laval Spaci packages. So as you know freak is literally back with a bunch of major versions of the of the packages that you love and use Laravel backup Lavel sitemap. We are going to use them actually on the real Laravel app. So we are going to dive into all of this in a second including your cloud setup which I want to know everything about that.
So W stream make sure you put like on this live stream. Moving forward we have a new light website. Looks fantastic. Look at this man. It's just looking so great. Honestly, I love it. Very good job by the Laval team. I think all of these pages are literally new. Look at this. I haven't seen that. Uh, it's just looking so sick. Even like the Laravel AI SDK. Look at this. Every single bit, man. You can see that we have people now. Who's that guy? Who is this dude? You can see that we have people. What's up, Danito?
To nice to see you, Bruno Veltics. Um, I love to see you all here. Thank you so much for joining today's live streaming. This is really, really, really good. Click on the blocks. People are saying uh which box are you talking about? Like on the website? Oh, it's not it's not clickable there. Oh. Oh, that's a nice detail. Yeah, I can move. So, you can move around. So, I can say I like live wire and suddenly live wire is like right here. Nice. That's a that's a nice detail. That's good stuff. That's heavy for my Safari though, but it's good stuff.
Okay. And a lot of companies rely on Laravel, of course. This is the new live 13 website. I hope you guys joining. I hope you guys enjoy it. I like it very much. What else do we have? Bam, bam, bam. Should we move to inertia v3 chat? Let me know double inertia v3 if we should move to inertia v3. Are you inertia user? Um I probably use live wire more. Are we getting the polite answer or we getting the I like I like inertia. and like but uh people think like I'm some kind of super programmer but I actually like working in PHP my JavaScript launch is not that big but in the team a lot of people use uh use inertia as well so and like the big two spy projects flare is inertia male coach is lifewire so we love all the the Laravel children the same okay okay um devel thank you so much for subscription tier one 15 I mean 15 months already.
This is like the OGs of my live stream. They support me a bunch on Twitch financially which is really good. Yeah. Thank you so much. CBT Mal, what's up? Nice to see you all. A huge double inertia. Yeah, Sh. We are now jumping into inertia V3 and I promise you guys are not ready. Okay, Pascal actually give me access or early access to a full V3 demo plus the full V3 documentation which is not out yet. like this page we are seeing right now. It's not actually out yet and I got early access to it.
So, I'm going to demo to you guys every single thing coming to Inertia V3. Starting with an optimistic update and this one is actually super exciting. You will get it in a second. So, typically as Inertia developer like if you have something like this which is literally clicking on the like button like what would you expect using Inertia or even Livewire? Uh I think as as a user I want to have like feedback immediately and not wait on like the the server for that. But what typically happens is that you would do the round trip right you would click on the like you would wait for the like to be actually performed on your database and then you would see like the love thing.
Now with inertia v3 you can optimistically update the UI. So if I click on this like bam it's like instant. So that's how it should work. That's how it should work. It's not always like this. Okay, so to use this API is actually [ __ ] ridiculously. Let's actually go to this use form example and let's actually open the view page docs. View guy or react guy. More React. More React. If I do, if I do uh do front end, then it's mostly React. Okay. So, let's see what we have. Uh let's actually show this example. So, the way it works is quite simple.
So instead of doing a post and simply wait for the props to to become updated uh through the data, you basically just call this optimistic hook and you just perform the change on the state and then you do the post request. Which I think is really really handsome. Now and the the look and feel of this is actually this just feels instant which I think is really good. Now what do you think should happen if there is like um a server error for example? This is like mind-blowing stuff in my opinion. Um then after a while uh it should go back to the previous state and maybe add a little message like sorry couldn't couldn't happen.
Show us your love later or something like that. Well in this case we're getting a 500. Uh I was kind of expecting not that but but that's exactly what happens is a roll back literally um on the on the like button. It's not happening here. Do all the demo of course. But what hap what's happening like if you use this feature is that you click on the like button and then suddenly just rolls back with an error like your update could not be performed for example. Which I think is really hands. This is really cool.
Instant updates in my opinion is my favorite feature of FB3. How does it do that? I don't know if you're the right uh uh person to ask but like the the rolling back uh do you need to define that as well? like what needs to happen when it goes goes I'm not the right person to ask that but I do know the answer so inertia handles it internally okay so it knows like I changed this and I should do this mutation yes so we'll roll back the state to how it previously was okay so here is like the optimistic update on the UI but if there is an error the router optim the optimistic call back is revert basically to it previous state I think this is fantastic chat let me know what you think.
By the way, Shad, I want to hear from you. What do you think is just absolutely awesome? If it is, type W optimistic. I find this beautiful stuff. I I honestly would use this all the time. Yeah, I think. Yeah. Yeah. Yeah. It's it's it's the new default, I would say. Now, I'm super curious to see if LiveWire also supports this some sort of optimistic UI. Uh, I think it I think it does. You think it does? Oh, here we have an article with optimistic UI on Larcasts. Oh, it's Taylor. It's basically Caleb Pzu explaining on Lakas that.
So, I assume Livewire supports that. By the way, for the Livewire people explaining that on the chat, we have 150 people watching. I really appreciate that. Don't forget, go all the way down and subscribe the channel if you are having fun. Also, like this video. That's really, really important. So, very, very cool stuff. Optimistic UI. Really, really cool stuff. Moving forward, we have instant visits. Now, this is actually very cool. Um, again, on the same process of going to a different page. Typically, what happens is that you need to pay you need to wait for the page to be rendered on the back end and then be served on the front end.
Now, with inertia v3, you can actually visit a component and have it run it like instant. Okay? So if I go here, bam, no backend actual being performed and everything is just really just instant. Now one question that you may have is how what h what's happening with the state like because if I go within a component page there is state that needs to be rendered which is not there yet on the list. Mh. And the way it works is quite simple. So inertia will kind of render basic information inside and you can actually specify some of that information here.
for example. So I want to render this component and on the prop greeting I want to display loading and on the list of items I don't want to display any. And the way it works is that you go in you see like literally nothing and bam when the response comes back from the server it just renders. So this is called an instant visit. What do you think in general? Looks good. Yeah, that looks good. That's also something that needs to be used all over the place, right? And this is the moment we see like inertia v1 was not close to completion.
No, even though Taylor said it that the timeline for me is a piece of finished software. It's nice to see that uh it's it's progressing uh progressing a lot. Uh progressing a lot. Absolutely. A lot of W Pascal in the chat. Pascal indeed did a lot of the inertia v3 situation. Maxi Tacos, what's up? Nice to see you. Dabel, nice to see you as well. Valentine have a question for us which is what happens when the optimistic update happens and the user navigates elsewhere before the world happens. So in my opinion inertia will just handle that internally.
I don't have a way of demoing that to you but I feel like inertia will just handle that internally. So you don't have to worry about that. Um will the user understand that intended action actually failed? this talking about of course on the optimistic situation typically there's an error message that you should display that's your job doing that so um you need you have access to the error props so you can actually display those messages a lot of love to Pascal so this is instant visit and something interesting about this is that if we go here to the coding example let's click here on instant visits oh this this UI is like this is a demo app so it might be broken I'm going to just go again here we go do we have a view page we do it's opening Yes sir.
Uh yeah, you can just literally also tell them the initial props. And one reaction, one thing I think this should do as well is that sometimes you have let's say a list of articles and you have the article information already. So you can literally just say render the article show and use this. Which doesn't go to the back end at all. Okay. So really really cool stuff. Um Joe showed the error on stuff on his talk. Yes. Yes. Yes. Yes. Yes. So chef, this is instant visits, which in my opinion are really, really badass. Okay, moving I heard you say this is really bad ass.
Okay, badass. Badass. Exactly. URL fragments. Do we need to demo this? Let me double check real quick. No, we don't. This is not V3. Uh, loyal props is the next one. Loyal props. When do we have that once props? Prefetching stick management. Loyal props. This one I don't know how we survived so many time without it. All right. Well, props. Show me. Yes sir. I think the most clear example is that when you have like a subtitle on your navigation and you are suddenly going to a page and you need to kind of change one of the layout props with information that is on that rendered page and you can just now use use layout props and that will basically update the prop on the layout.
kind of obvious and you know I don't think it's mind-blowing feature but we were living without this. Uh so cool stuff you can reset the layout props if you want to and I think this is really really cool as well. Uh in terms of code kind of obvious you just type use lo props you change the prop and that's it. Easy peasy easy peasy lemon squeezy and we're good to go. Moving forward server errors. Honestly this one I think it was just broken on India V2 in my opinion and you let me know what you think.
Actually, I will ask you what happens right now if you have a 500 on the back end. What happens with inertia? Do you remember? Um, there's like a a function that gets called and like the whole screen I will get like the 500 screen like we just saw here. Yeah. So, that's the new stuff. But before you would see like a huge like a modem almost. Yeah. A little bit like in Lifewire it happens like that as well. Yeah. Right. So, yeah. You need to put in some extra work to make it better. Right. So it has broken since like forever literally.
So now what you can do is just basically this uh well the the snippet is kind of broken but I hope you guys can see a little bit. So now what you need to do is that you can either specify that on the back end or on the front end. So if you want to do it on the back end you just type inertia handle exceptions using and then you specify the page you wish to render if there's an error. That's nice. That's very nice. Yeah. Right. you can just do it globally really just works and then if you have a problem bam like you have actually a page who displays 500 you don't see the [ __ ] modal thing and also same goes with um let me see uh same goes with 404 you have you have actually a page which renders something 403 which renders something previously was just broken man it was just I don't know how people were surviving to this honestly usually I make a global context exactly context was the solution for loud props.
Um, exactly. I can finally remove my shitty implementation of that. Exactly. It's so good. I missed the second day, but I found that Lakonu have a YouTube channel. Yes. We need to talk about Lakonu though. Yeah, sure. What do you thought about Lakonu? Ah, it was good. I really liked it. Um, as some people may know, I missed like the the previous one due to health problems. So for me it was a while ago since I visited like the EU one which is like my favorite one because yeah my home crowd is just there. I've been going there for more than 10 years uh now and yeah this year's edition was yeah was a blast was a very good MC there as well.
What do you thought about Lakonu? Write on the comments if you watched it or if you were there let me know what you thought about Lakonu. Uh yeah it felt really good to see you around and to see you mingle with people. Uh also I think like we had a very good list of speakers. Yeah. I think the speakers were just amazing. Obviously you know as an MC I didn't have much time to mingle. Uh but you know felt like different for me. I really you had a new role there. Yeah. I tweeted about this cuz one really cool thing about this Lakon and I can show to people here real quick.
I tweeted um something that I totally meant from the bottom of my heart is that a lot of people were were literally almost cheering to be to be a good MC. Yeah. And I really felt that I I had multiple things I could say about this Lakon, but something I would mention is that I really felt like I had my heart full of joy just seeing people cheering for I want you to succeed on stage. So I really appreciate that. Okay. A lot of people loving Gladakonu. That's fantastic. That's fantastic. You know, and it's done two days.
I'm now c catching my train back to the spasi offices, which by the way, the spasi office is amazing. Okay, I don't know if you can see it on the background, but there is plenty of things. It is like your Here we go. You guys see this? This is your postcards. It is a wall full of postcards. There's a actual postcard wall. It's It's really fun. We still get postcards almost every day. And it really motivates the team for that works on on open source because it it lets us feel it's actually all being used and and loved.
It is a big wall though like the wall is like it's like I don't know I would say like 5 mters something like that. Five six meters and it's like full of postcards which is kind of insane. But the the space is huge. You also have a huge kitchen a huge backyard basically which you probably are going to grab a beer or 10 after. So really cool stuff there. Um, you know, feels good to be here by the way. So once if I don't have a job, I will do AI. I will try to pretty sure that won't be a problem.
Oh yeah, maybe AI, but yeah, then we're going to do I'll do something else. People are asking if this is an anter. This is an ant. Yes, indeed. Uh yeah, it's in a very nice neighborhood of Antworp as well. It's close to like a square there's lots of life. Uh it's it's close to like the two big train stations of Ant. So, it's also very reachable. It's quiet neighborhood. It's good. I I really I really love this. Um I love love being here. Yep. Yep. There was less technical problems on on stream. Yeah, that's good.
I haven't tried I haven't checked the stream yet, the Lonu stream, but obviously need to double check that. People loving Lakonu. That's awesome. Moving forward, let's continue here. Watching V3 because I'm not done yet. Okay, so we just checked optimistic updates. We checked What else have we checked? We checked a bunch of [ __ ] right? optimistic updates, instant visits, loyal props, server errors and now we have this thing which is really really cool which is network errors like how for example your website behaves if there is a network error like no internet for example. Yeah. Yeah.
Probably there is nothing happens. You assume it's normal for the user. But now you can actually hook into those things and you can just specify the behavior if there is no internet connection or if there is no DNS failure or if there is I don't know a timeout for example. So you can hook into those things and specify what the router should do if there is like an error visiting something which is very nice. It's very nice. Right. You need to do that with like uh what was it called? service worker before I think that's what it's called and now you can do it like this.
Yeah, you can you can specify what what exactly inertia should do on those scenarios. I think like it's probably something that nobody cares in the sense that nobody actually do those things but now you can do it with inertia. Yeah. I always find it nice if I'm on a service uh and I travel with train a lot you know. Okay. And uh when like a um web page or an application just has that amount of polish you know there's like a special page like there's no internet where you can have like a beautiful UI and like a button try again.
Even though it's the same as like trying it again in the browser, it just feels more polished if you have pages like that. I agree. You can also display something now. Oh, you don't have internet connection. Doesn't necessarily needs to display like a 4, you know, whatever it is if you don't have internet connection, which is good. Um, so yeah, this is now in B3 equally available. By the way, beta, I think it will be released today. Uh, so you can probably, you know, try all of this stuff out today. Okay, this is network errors equally coming to inertia v3.
Finally, I have something to show you on inertia v32 which is use http. So in the past if you wanted to do a json request with inertia there was not actually a way of doing it you so you had to kind of use axios for that. So now you can use the use HTTP hook which allows you to do an inertia HTTP request but you can have JSON back and do whatever you want to. Previously if you have JSON in return inertia would display something like you need to return back a page like an actual rendered page.
So now you can actually have JSON back and do whatever you want to do with it. So if I go here into the view page you can see me doing uh boom boom. Yes sir. Where do I have that? Is this a good example? Form post. Oh yes it is. So use HTTP okay with some state. You have the form which is actually an HTTP call. You can do a post and do whatever you want with a JSON response back. Previously to do something like this you had to play with um Axio directly and actually play a little bit uh with Axio.
You couldn't do this with inertia. So this is not available as well on inertia v3. How did we leave without all of this? That's actually a very good point, Uncle Dave. That's actually the question I had to Pascal when I saw this. So really, really cool stuff. So I think that's it for in B3. Oh, there is one point though about the use HTTP which is cool is that you have access to the entire API of the of the use form. So you can see if the HTTP call is being done. Yeah. You can see if the state you use is dirty.
You can see if it's successful, recently successful or if there is issues as well. So use HTTP. Good stuff. I thought you were an inertia guy. Uh you're wire more lifewire. Uh if if I'm honest, but but it's changing also because of like AI. Uh I haven't always felt comfortable with like all I I just didn't have it in my hands. I was faster with with LiveWire to create stuff. But it's changing with uh with with with AI also a little bit. Some love with LiveWire. I want to see you guys. Do you guys use Inertia or you guys use Livewire?
Uh type on the chat which um framework for the front end do you use? Live wire before just recently came out, right? Uh yeah, not too much ago. And also with that uh how is it called the the Blaze package to make everything blaze package. Absolutely. Do they have like a thing where just Oh, maybe this is the upgrade guide. I don't know if that's like a separate page. I thought it had uh Shad, by the way, can you tell me the link to the Livewire V4 like what's new thing? If they have that, it would be cool.
Let me try something. Live wire V4 what's new maybe. No extra page. Oh, here we go. Lav news. Boom. Yeah. So, the the view based components. Uh, what do you think about this? Uh, wait, wait, wait. Before talking about the emoji, okay, what do you think about having a component with that has everything? Uh, I like it for for smalish kind of things. If that goes a little bit too far, then I like to separate it again. But for like small things, it's perfect because you have all your your you have all your context uh like in one file, you know?
Right. Uh I like it too. That's why I did vault. Yeah, indeed. This is basically like vault but then built in, right? Yeah. Yeah. Bolt was basically incorporated. What do you think about the emoji situation though? I like it. You don't double emoji shack. What do you think? W emoji livewire 4. I think I like it too. Yes, I like it because you can see from the outside like these are livefire components. Yeah, they they also get like nicely grouped in your your IDE for people that you still use uh IDE. Yeah. I mean, also that I think also brings a little bit of joy.
Like programming doesn't have to be like [ __ ] strict and um you know, like just being annoying. Can we change the emoji? That's a good question actually. Is the emoji like changeable? I don't know. You don't know. I don't know. I don't know. It's it's it's a perfect emoji, I think. Why would you change it? Cuz life like the Yeah, absolutely. Well, you can make an octopus. Yeah. Yeah. Indeed. Indeed. An octopus probably will be a better change. A lot of people w emoji. I agree, man. I like the emoji. I think the emoji is good.
Yeah. So now you can have the style here. You can have the component JavaScript um as well in the same page. People are saying that the emoji is changeable which is good. Gabel is also saying that it's in a configuration file. Good stuff. So um a component was can also be organized by files meaning that you can have like an emoji component thing and then you just organize by files. Uh good stuff here. What else? Oh, we have this little change which is the component name is now used as well for the routed definition. This is small stuff I think.
Yep. Small stuff. Small stuff. Small stuff. Let me move here to islands. Have you used it before? Uh I haven't used it like in a real project but I know what it is. It's like these islands uh they will will become isolated. So if there something changes there there the it doesn't trigger like any uh any other change. So it lives a little bit on a on its own. which is good for for yeah it's good for islands for the win. I also like islands. Real quick slots attributes forwarding. Um oh this is when wait what let parent inject content into the children while keeping the everything reactive right.
So this is how it should have worked from the from the beginning. I was so confused when I used this for the first time. I was like why the [ __ ] my my component is not reacting. And now it works right. So if I have like multiple children components with props from the parent. Yeah. If the component prop if the parent prop changes will change the the children too. that's a breaking change though, right? Yeah. And I guess because it sounds a little bit negative like it should have been there for the first time, but I I think it it it's probably very hard to do, right?
And that's why it's uh only in in V4. So I I bet Kayla put in a lot of work to make this work good. Uh absolutely. Uh this is good as well. Drag and drop. This is kind of ridiculously good. Like uh yeah, that you don't have to do it. on your own anymore. It just supported in live. I like this very much. This is really good. For the live wire people who really love Live Wire, which one of the features we are demoing of Live Wire 4 is your favorite? Write that on the comments.
We want to hear from you. Truly understand what's the best thing here. We have some smooth transitions here and there. An optimistic UI talking about that optimistic UI updates little now we get to see that as well. So if you render a component you can specify now like what is the optimistic thing to see there which is good nice stuff loading states as well. Um so when the data is not there what it should be loading nice stuff inline placeholders so when it's nothing there you can display a placeholder real quick with this blade directive JavaScript powered tools and we also have blaze right blaze I have made a small demo about it.
Have you used blade already? Blaze already or not? Uh yeah, I toyed a little bit with with Blaze. Uh I really found if you have time to to to show it like the that inspector, it is very very cool. Uh the inspector thing where it can just give you like the the results in line of how much time uh a blade component needs to render and then you can just Yeah. compare it with with blaze without blaze. Yeah, you see it here. It can make a ridiculously big difference, right? Yeah. I think like um I have tried Blaze on the live stream.
By the way, Chad, I'm going to show you the video. I have actually a video already on my YouTube channel about Blaze. So, if you're curious to know everything about Blaze, I'm going to just display the video. Here we go. Here we go. Here we go. Here is the link on that video. I have everything about Blaze. Like inspector thing you just mentioned right now is literally there. And indeed, man, this is ridiculously tough. Um I think Caleb is a magician, man. Yeah. Yeah, indeed. Here's the machine. Very smart stuff there. The the code collapsing stuff.
Uh it's it's very cool, right? Have you are you using it already on any production application or not yet? Not on a production application, but we have it like in uh Yeah. We we have we have some PRs open where we're going to test it a little bit more and then going to uh let it marinate a little bit on. Because we we don't want to uh Yeah. break real production uh stuff, but we'll probably use it on Mail Coach very very soon. People saying islanding slots is like the best thing ever. People really like as well the single file components and pages.
Uh icons are changeable. Cool stuff. We need an emoji to auto add blaze optimization. That's a good point. That would be nice. That that's actually a very good feature. Like you can just use like the an emoji which is automatically hooks that component into Blaze. That's actually a very good point. Thank you. Thank you. Thank you, Shad. We have a bunch of people watching the live stream. Don't forget, go all the way down and click like on this video. Insanely important. So, this is Blaze Livewire 4. We have in the ecosystem at full speed. Inertia V3, Laravel 13.
We have Blaze. We have live wire passive five being cooked. Oh, nice, nice, nice. Uh, anything that you want to tell about about not yet preparing a good set of features that you are going to love? Actually, I can disclose something if you want to know. I'm working on optimizing the sharding. So currently like sharding is good and is literally saving people's C eyes in terms of speed. Yeah, I use it. I use it use it as well. But um you might find this case where a shard takes more time than other shard. Yeah. Or you're going to put like uh the the timing stuff together that you have like a slow one.
I will find a way of optimizing shards so all shards stays exactly the same time. Oh yeah. Yeah. That will be one of the things. So that's one of the teas I can do. I'm working on that. There is a few things I'm working on as well which I don't want to disclose yet. So I make it a surprise for Lon US. Maybe after the 10 beers you can uh you can tell me. Absolutely. Uh agent is saying shouting with coverage does not work. H that's a good point. Well I have a way of making it work but it does not work yet.
That's a good point. So this is in Live Wire V4 inertia V3. What? Oops. Let's close this. There we go. Now I want to dive into spicy packages, man. All right, let's do it. Spicy and a bunch of lot of packages. By the way, chat, type on the comments you see right below which one of the spicy packages is your favorite. I want to know. You want to know? All right, everyone type in which one of the spicy packages is your favorite. Is Daval data? Is the crawler? Is backups? I don't know. We want to hear from you.
Just type on the comments below which one is your f. Which one is your favorite? That's a good question. Um I think media library. I like that one. Media library. I like that one a lot. That's the upload situation, right? Not not not an uploader. Um it it's it can do a whole lot more. Uh it's actually uh uh it can handle the back end of the up of the uploads. The front end uh of this package is is a paid package as media library pro. And I I really like um yeah how this package works.
It's already like what's like the major version of this? I think we're we're a little bit up. It's already V11. So it's V1. So it's uh it's really it's really polished almost 40 million downloads as well. 6,000 stars. We can absolutely dive into this as well during this live if you have the time. So let's see what we have. First of all, huge thanks to indef for subscription tier one. 7 months already. appreciate more than six months in a row. Also, pick and flow, thank you so much for subscription tier one on Twitch. I really appreciate your support.
Thank you so much. I haven't checked the Tik Tok comments. I need to check that people on Tik Tok. What's up everyone? Hope everyone is having fun. Let's see how much packages people do really love about Spy. So, we have people talking about Laravel Spy permissions. Mhm. Okay, that's the most downloaded one, the permission one. Yeah, I mean some of the people here really enjoy the spy permissions package. We have people loving the mini library package too. good point. What else we have? Most of it is like Oh, Sluggable. What is Sluggable? Do you have a package for slugs?
A package for slugs? Yeah. Yeah. It's been around here for like the longest time to just automatically create slugs uh for for things. Yeah. So, you give your model like a name, you save it, you get a you get slug. That's sexy. Let me see how are you generating these slugs because that's the real thing. It's super super simple. Yeah. Generate slug s on generate. It's it's already been a while for me since I went into this code myself, right? Maybe add slug. Maybe it will be there. Generate. So curious to see like the actual generation of the slug.
Give me a moment here. I'm going to just uh here we go. So you do slug separator slug language and you just do string slug. Slug. Yeah. Yeah. And people can uh there is a way to override that probably. Is it nonique slug? Yeah, if it's a unique slug, then we'll check in the database. Have a while loop somewhere. Here we go. There we go. There we go. And then you get the the suffix there. Yeah, I do this stuff in all my projects So, which is I did it in a package. So, I didn't need to do it in all the projects manually anymore.
Laval translatable apparently. W activity log apparently a lot of people mentioning that a package skeleton as well. The package skeleton. Yeah, a lot of packages are being created with skeleton package skeleton typescript transformer is underrated. It is uh it is uh that's actually made by my colleague Ruben who put a lot of love uh in it and it is being used to uh transform PHP classes to Typescript. Oh, so we don't have to do it. You don't have to do it and it works in tandem with our Laravel data package. So it can Oh wow.
Wow. Translate data packages also to oh my god enums dude like I'm literally extending my I'm literally transcribing all my images all the time. We are working on on version three. Maybe we can take a look if Ruben already released. No v2 is uh only there but Ruben is working on V3 which is uh a total rewrite uh and which can do a a whole lot more even. Right. This is looking cool. Spicy data as well. So that's one that I'm going to be honest during my live streams I talk about action classes DTOS and blah blah blah blah blah.
People always mention like why are you not using Laval data? And I'm like because I haven't like tried it and can you pitch me like Laval data and why should I use it? Um so it's basically like the best data object uh library uh that there is and you can yeah just use these kind of objects. Yeah, everywhere in in your code and it can act as like uh for validation it can act as a transformer. It just has like many many use cases. Uh the TypeScript transformer can always transform this to TypeScript as well.
And it's basically one way of uh describing your data and you can use it yeah in in in multiple uh multiple scenarios. So maybe if you go to the uh yeah then I will say what what I think what I think why I think um it could be useful for me but uh do you want to see what so excuse me um let's see I don't know these docs too well because this is basically yeah from my understanding instead of just having simple simple classes for my DTOS I extend data from spas then suddenly I will leverage something which I assume it's like types on the front end too uh Yeah.
And then and and basically that it knows about like the request, you can use it as a as a validation kind of okay. Um if if you have like um validated um stuff from a request, you can immediately get it as a as a data object. Stuff like that. You can put validation here in that's nice here in here in as well. I want to see an example. I'm going to go from a from request. Well, let's see here. Song data. Yeah. And you get song data from the request and you get it all and the validation could happen inside of your data objective.
Oh, that's nice. That's nice. Laval data for the win on route response validation. Good stuff. Good, good, good stuff. All right, Shad, let's move forward to the actual plan of the live stream, which is talking about Laravel crawler. So, I'm going to just go there. Meanwhile, before we dive into that, actually, um, if you don't know, Spasira Ray is this incredibly powerful debugger from Spasi, can you pitch it real quick in one minute? Yeah. So, uh, I, uh, created Ray because I wanted to make, uh, die and dump debugging uh, a whole lot easier. Normally, if you die and dump stuff, uh, on a web page, then your web page gets broken.
or if you do it in a CLI, you might get confused if there's like a lot of things coming in. And basically, Ray is an application that makes that use case a whole lot better. So, you can where instead of just dumping to your console or your web page, you dump it into a beautiful uh window where you can filter stuff, you can programmatically clear the screen. Uh you can configure to show like all the queries or all the sent mails of a of a laral application. Yeah, I know that that Taylor used it. Taylor uses, right?
Interesting. Okay. Um, and we added like uh new functionality there as well. If you scroll a little bit up, I think we have like a slide on it somewhere about the AI stuff. Oh yeah, pass through it. Pass through it maybe a little bit below. Where is it? Yeah. So what you can what you can now do is uh in we have like a ray skill now and you can basically tell your AI use ray as my output window. So if you need to design something you can just say show it to me in ray.
So it doesn't need to like create like little files or you don't need a web server. It just writes HTML to Ray and we can just preview stuff there. It can also do mermaid diagram. So if you want to have like a schema of your uh database, it can just show you in in Ray now. Nice good stuff. This is good stuff, Chad. All right, I just shared the link with you all. If you guys want to check it out, go to my rateay.app and you are obviously by acquiring this product, you are also supporting spasi open source efforts.
As you may know, Spasi is this company who has 400 apparently open- source packages and by buying some of their products, you are literally supporting equally the the work they put into those packages, which I a lot of people think is for free and it is, but someone needs to pay the bills. So that really helps supporting spasi. They have 400 open source packages. Some of them you are very likely to use in your Laval project. So, make sure you do that. So, okay. Hey, show this page as well, the postcard page. Uh oh, you click.
Oh, yeah. There you go. If you go a little bit uh below. So, this is uh like our virtual postcard wall. So, each postcard that we get gets posted uh here as well. We have from Portugal here. Can I search it? Um it loads it lazily loads. I don't know if it will load in, but I'm pretty sure there will be some from from Portugal as well. Oh, yeah. Patricio, here we go. Yeah. Hey, Jean Patricio. He's missing one from Nuno though. 100% from Porto. Good stuff. Jeezio actually sent two, which is interesting. Um, nice stuff here.
Uh, was Ray created by Spasi? Yes, Ray created Spasi developer by Joshy saying the following. Hope you are good. Enjoyed Laku. Yes, I did. I slept literally 15 hours this night. So, feeling good. The image bill with the postcards. Uh, yeah, that's good. Big stuff. Uh I like the spicy guidelines for a lot of what is that? Uh so we have guidelines. Um we we uh created those very early on. This is all like our programming uh guidelines uh like how we do stuff. So when there's like a PR or there's when we're working on stuff, we don't need to discuss how we do things because we already agreed and sometimes we we we talk about guidelines and we try to make them a little bit better as well.
But these are the things that we agree on as a team. We should do it. Uh, right. This is actually one of the most discussed things on my live streams. Yeah. Yeah. Like how should because how the case should be which I'm curious to know. So in your opinion is Pasel case. Okay. I want to know you guys. Do you guys love Pascal case here or all uppercase? Write down the comments. We want to hear from you. Shouldn't this Oh, great point. Shouldn't this be a AI skill? It is also an AI skill. So if you go a little bit up uh maybe go to guidelines uh go a little bit below and here is uh nice cool stuff.
So now this is literally all into an ASQL which is with laval boost. nice [ __ ] I'm going to send you the links guys so you guys can just literally leverage all of this for free. uppercase all the way down for me. Agent also says uppercase. Okay. Well, it it really doesn't doesn't matter as long as you agree with with your team on it. Uh I think Yeah, that's a good point. Uh but it's cool that now with boost you can have just skills like this. Skills literally. Which is a good stuff. A lot of people Pascal case as well developed by Josh also G 87 NL is saying uppercase.
Yeah, that's you know I think it's it's always mixed basically the reactions I get from the community. I also am using Pascal case all the time. if I'm going to be honest. Uh but uh I get it. I get it. And I also get the latest version of those skills if I just type this as a script. Yeah. This is a little bit old because this has been I created this I think already in November or something. But now you have like uh yeah I think Laravel has uh now a repository for all of the the skills as well.
I should really add one one there too. that talking about boost in skills. Laravel also did an article which I wanted to bring a little bit of discussion here today as well which I'm going to share with you all by the way. Okay, let me share with you. Bam. This art this article is actually very interesting talks about the difference between Laval SDK, Laravel Boost and Laravel MCP. Y um so if you guys it basically explains you guys like what is the difference between these three packages for people coming to the ecosystem. Are you using already Laravel AI SDK or not yet?
Uh, I've toyed around with it, but there's nothing in in production yet. But I really like the the the API, Um, feels real like Taylor, man. It's quite crazy. What I really like is like how easy it is to cue stuff and then have like that then function on there to do something after. It feels so natural. And I also like how it's uh how it's implemented. So when when you I think it's when you cue stuff then uh a uh a a job will be fired in the background. Okay. And then that function of of den will be serialized and put on that job and that is how this will get executed.
Uh which is like a very interesting way to do it. And the catch is being I think serialized and put on the job as well. Uh, oh, okay. That's that's how the flow works, you know, because otherwise there wouldn't be if if you don't serialize this function, how would you be able to to to still call it? And I thought that was a very clever way to do it. And I've I've added this to to some of my other packages as well to quickly quickly cue stuff. Anyone using the Laravel SDK, type yes if you are using already a lot of LA SDK and type no if not.
I have played around with it. I haven't used it in the in the real project but I have played around with it and it feels like Taylor like in terms of API feels like tailor I love the images stuff um around this. So image of a donut sitting in the kitchen counter generate. I find this really really impa impressive. You can specify the quality, the landscape, the timeout and just generate an image like that. Really cool stuff. You also can specify attachments to it. So this is really cool stuff chat. Okay, this is a lot of AI SDK and you know you can start using it already.
We also have Laval boost which a lot of people are relying on to ensure quality applications through AI and LL MCP which is the one I've worked on. What do you think about MCP? I know. Yeah, I feel the same, you know. I know. I think I think skills and CLIs are are the better way now as a instead of MCP. I think MCP still still has its place, but I think for most people like uh creating a skill and CLI will feel better than having to configure an MCP. I think uh but but it's it's uh it's it's it's it's going so fast, man.
I think maybe people watching from the future to to to this stream and what is MCP? Yeah. And if the future is maybe just one month away skills, are you still busy with that? Are you still busy with MCP? Who knows how it's going to be like in this is Yeah, I think MCP is a very slow protocol like the way happens by the way Shad is that let's take as an example the playright MCP. Okay. So the way it works is that cloud code will ask playright what MCP endpoints you have available. Yeah. and play right will answer back bam another AI call oh I want to use this one and MCP will say okay these are the parameters another AI call and then I'm going to use it so it's just so slow and then costly so I think there is some work there um so and and and the skill you can already describe like this is how you should do it and I can go boom boom boom boom boom these things right so using a lot of LMCP also Alexandro Bella saying that they use a lot of AI SDK package all already Ignis 86 using already as well Laravel AI SDK that's awesome good stuff good good good stuff moving forward uh let's actually move to the spicy packages here we are getting lost so what you wanted to do the crawler but this is already another one and another one and another one now I want I want to start with the crawler where do I have the crawler situation here I think it's right here media library no it's below that so many packages too any packages.
All right, we just type crawler. Crawler. I want to install it. I want to see what it is. So, what is crawler, dude? Uh, so crawler, if crawler in one word, crawler, then the crawler is a crawler. Uh, so it can basically just discover every link uh that you have on a page and then uh go to that page and do the same thing and then yeah, you can define what should we do with uh with that. So you can go over an entire website. So I can try it out. Yeah, you can try it out.
If you have a little website somewhere available, just Can I do it? Everything on the console.php. Uh, I think you can. Yeah, why not? All right, let's do it, Chad. Let's do it or not. Type w do it if you think we should just do it. Let's do it. So I'm going to open the terminal. Bam. So I'm going to go to By the way, let me just share the link with the audience real quick. Bam. Here we go. OPUS 4.6. It said MCP is the new API. Yeah, for for a moment it is. Does it work with SPA websites?
Oh, SPA. SPA. Yeah. Uh the the crawler I I assume is it's meant Well, you can configure the crawler to execute JavaScript. So, Oh, good point. So, it's a real browser then? Uh it can be. It's not by It's not by default. There's like if you go a little bit uh to the side to to to the menu probably we have somewhere JavaScript rendering there and it's basically just adding like uh execute JavaScript and then it will do that but it will make the crawl process a whole lot slower because it needs to execute the JavaScript for every page.
Oh okay. So I will by default it doesn't do that. So I will go here and I will type composer. I'm going to actually change project chat. Give me a moment here. Yeah I just do this. I cannot leak any single internal project of Laravel. You close your eyes. Do this. You are still seeing. Yeah. Wait a second. You know, you know, I'm going to fetch some some water. You want some water? And I'll come come back in a second. I'm good with this one. You're good with this one? Yes. You just do all your secret projects.
I'll be back in 1 minute. What's up, chat? Are you guys having fun? Type yes on the sh on the comments below. We have a bunch of people watching, which I really appreciate. Yeah. And I'm going to spy the office. Look how badass this looks like. Honestly, there's people working over there. I can see just everyone. I'm on interer. It just feels good to be here. What are you guys thinking? You guys having fun? A bunch of people watching. Don't forget go all the way down and click like on this live stream. If this is having fun for you all, I'm having a blast, dude.
Okay, I'm having a blast here. I want to do what I want to do. I want to open my LL 12 project real So, let's let's actually do that. Uh, so then we can actually install this crawler project from Spasi. Boom, boom, boom, boom, boom. What's up? What's up? What's up? All the secret projects are gone, you know. Not yet. Not yet. Not yet. Not yet. Here we go. Not yet. They're gone. They gone. Yeah. All right. Cool. Uh, open this after the 10 beers. We'll talk about how I [ __ ] can put this full screen.
What the [ __ ] Is here. No. Can I open it? Huh? How do I Okay, I have an idea. I'm going to put here. Here we go. Laravel 12 console. PHP. every Spark C developer watching the stream right now. Well, I don't know. Hope they are. Uh, so coding, we back. So, we have a lot of L12 project here. The first thing I will do from my understanding is type in composer require spy crawler I assume. Yes. Yes. Yes. Yes. Yes. All right. All right. Let's open the terminal. A lot of L12. I'm going to go back to the docs.
Composer require a lot of [ __ ] crawler. Here we go. Boom. Boom. Boom. Boom. Boom. Boom. We got it. One more download. One more downloads. Meaning that I now owe you a postard. Postcard. Yes. Yes. Yes. Uh, what else? Let's create here an artisan command. So, artisan command. Let's call this freak. Is that okay? All right. Provide a call back as usual. Look at me coding without cloud code. I'm feeling like already productive. Wa wa wa. All right. Can I just stack more than I quoted this year? I think that's true. That's true. So, [ __ ] crawler just like that.
Or it is a facade or this is a facade. Uh, it isn't a facade because it's a uh an framework agnostic package. Oh, yeah. It's just a plain PHP. So, plain PHP. So, it works without Laval even if I wanted to. Cool. I'm going to specify the limb space here. So, here I specify like link. I think it's a link there. Yeah. Yeah. Uh. Oh, he's already like doing freak.dev. Wow. Why freakdev? This is so nuts, honestly. Uh, which probably because of the signature here. Should we do the should we do the Yeah, try larl.com.
Okay, cool. Just this. Uh, take a look at the docs because I changed the API a little bit there. Okay, so your first crawl. Nice documentation by the way. Thank you. Thank you. Great. And then it start. And then on crawled you can say what what it what it's what it should do. This okay on crawl. Uh this I should import this. Yeah, you should import that. I feel so good just to be able to code again. Honestly, I don't know what you guys feel shaded but now with AI people are doing zero code. That sucks man.
So we have links uh response statuses for each one of the links. you see if they are broken. Yeah. Yeah. But for for instance for instance you could you could use this for like broken links checking or mixed content checking or maybe you want to index something. I use it I prefer that and then we have the start to actually start it. Yeah. And then it will will will start um and I think it will by default use uh so under the hood it uses Gzle and Guzzle can uh be configured to crawl concurrently. So um so what it will internally do is it will put every found uh URL inside of a pool and then Guzzle will use uh async uh requests to visit those lines concurrently.
So you don't don't have to wait like uh one by one. It can do a whole bunch together at the same time. That can also be configured. That is JavaScript though on this level.com. So if it's if let's do the following. Let's start with my own website. Cuz I there is no JavaScript there of course. Okay. Then it will find every page there. Okay. So let's start it. Sh. I'm going to go to the console and I'm going to execute this console command which should output line for each URL finder on my website. I find this nerve-wracking myself a little bit.
So I hope it works. Oh, here we go. There. There you have it. And you can see it's very fast. This is 100% sure outputting links that are not on my website. Um probably because it is not uh configured to only do internal links. So I think uh you can do only or internal internal. Yes. Okay. Try it now. Now this is legit. This is legit basically. This is because probably first it found like a link outside of your domain and then it goes further and further like a real crawler. This was so fast though.
Yeah. Yeah. It's that's like the power of guzzle. Uh, wow. So, it went to my own website. So, by the way, Shad, I'm going to show you my website. Then you will see instantly why did I output those links. So, this is my website. Okay. Then I have like posts, I have sponsorships, I have talks. This is four links already. Within my about page, I have a few others, but this is supposed to be internal only, of course. Yeah. Uh so all of the posts here which are three two actually lot of alpine and blah blah blah good stuff here it really just works right so internal only if I want to stay within nunodro.com mhm and if I were to do this on a javascript page by the way I'm not sure if lar.com is javascript only if it is we're going to let's try let's try let's let's just do it see what it finds oh it is working actually yeah so it finds all those links really cool stuff.
And this could be very helpful to maybe autogenerate a sitemap or something. Oh yeah, you're probably using it for the site map. Uh yeah, the the sitemap package uses this uh behind the scenes. I'm not rate limited yet, which is a surprising, you know, because you you have good servers where you put this on. Yeah. Yeah. But I was I cancelceled it, but I I thought it would be rate limited. So all of the documentation of Laval, every single league returning 200. Which is cool. what other stuff do you have access to to the entire body?
I you can just spit it out. Uh body request DOM and etc. So for example, if I dd the body of the very first link retrieve it on nunum.com, this will be the HTML I assume the HTML of your website. Yeah. And you can't do stuff with Look how stupidly simple my website is. Like honestly just pros just pros it y and then tailwind with the very simple things. What are you building here? By the way Shad, if you just arrived my name is Nun Maduro. I am Vladian PHP developer. I'm here together with Freak MS which is a huge open source contributor.
He is the owner of Spasio of course but also he have made 400 open source packages and today we are diving into some of the packages he created. uh crawler being the very first one we are diving into which really just works in the first go and we are going to dive into other packages of him. If this is your taste, please go all the way down and click like on this video. Insanely important so we can show JavaScript developers how cool PHP is. Uh agent is saying the following. Happy to write code myself. Me too.
X is saying the following that can be used with an agent to understand the page. That's a good point. Yeah, indeed. Indeed, you can just bypass uh bypass the internal responses to an agent. Puyal just arrived. Really cool stuff. How you doing, brother? I'm doing fantastic. Thanks for asking. Fro crawler. Yeah, I want to see like a JavaScript page. Uh let me think. What's a good JavaScript site? Uh you should probably also um because under the hood it will use uh browser shot. Uh and so we should uh we we'll try it. Maybe you'll get an error and then we can see if we can install browser shot uh there.
It's like headless. It needs headless chrome to do that. Uh browser don't need to do this. Uh let's let's just try and see if it uh if it works. So you need to add like uh add on execute JavaScript on you said execute JavaScript. Yep. That's it. And maybe we need to have like a JavaScript heavy website. Laval is for sure. Yeah. Yeah, sure. You can do it. Laval the homepage. I mean, yeah. Let's see what happens. I just I I Yeah, just try it. I I guess you you'll get an error because of some some things.
Uh ah yeah, you need to install brows. Yeah, it isn't a require dependency anymore, right? I just type composer require spicy browser shock. All right. Done. Like that. That was two dependencies. Okay. Not not big. And I guess it will even fail now because you don't have the requirements for browser shot. I guess ah it just just fails. Fail. You think it fails silently? That isn't uh how it's supposed to to work. Um maybe go to the the browser shop docs. Maybe you have like the instructions there. Meanwhile, while I browser there, u people are asking if I can consume an API with this.
Uh yeah, you can. Oh no, no, no, no. because an API doesn't have uh like a page where all the the links are are there right the package will just visit a page and it will visit every link it it finds there so maybe on a list page it could but it's not designed for for that uh right I think I'm missing something on exactly literally missing this npm stuff to have a real browser here yeah yeah and I should look into why you don't get an error because I really would expect that yeah like we didn't we didn't find here.
So I'm going to take a note of that uh yes and fix it. So silence. So we typing now npm install puppeteer. So we actually have a real browser under the hood which can perform those visits. Uh also probably need to run this little thing which is installing Chrome very likely. Yeah indeed. This may take a while though but let's see. And after this it should just work. So I have already chrome. Maybe you already have it because yeah, you now will just work. Here we go. It's already probably Chrome is starting somewhere And there it goes.
Here we go. And now every uh URL that is being added to the DOM via JavaScript, it will be found as well because it's it's now crawling the exe the the result of the JavaScript execution. So as soon as it goes to the browser, waits for on JavaScript rendered or whatever like the the real response. And really just work. So that's how easy it is to yeah crawl a JavaScript powers website. Good stuff. A lot of uh sh this is spasi crawler. One of the packages um one of the packages done by spasi which I already lost the link once again.
Oh, it's the last one I think. Here we go. Now this is the bronzer shot. I can close this. This is the crawler. As a reminder, all this stuff is for free. If you want to help uh and support spasi financially, make sure you go to myraayapp.com and acquire their debugger tool for Laravel. Now for PHP actually uh now we just saw the crawler. What else we have here in the loop to do? Let me see. So here I have I have PHP attributes reader. I have lot of open AI CLI but we had prepared a few others here.
Yeah, there were a few others as well. We have a few others here. Maybe I because we're talking about the crawler you had at the Oh, you want to do the backup first? Backup backup can uh can uh can go too. And I have actually a very interesting question to do to the chat. How many of you are doing backups to your databases? Type yes if you are running backups in your databases and you know they work. And type no if you don't do any kind of backups. I assume you with product backups. You have backups in place.
I do backups at Laval. We obviously have backups, point in time backups actually. So we can back to a specific moment up to the second to many of our customers. Of course um you know you know I believe everyone is um I have we have a DevOps guy for this. Of course need to be people who actually know what they are doing. Um interesting here we have DB backups every night for every server. So this is daily backups this person is doing uh which is equally interesting. I do also well to be honest to my personal uh OB projects side projects I do also daily backups.
So I don't do up to the second backups because it would be daily is enough for stuff. I my my own uh blog here is also being backup daily and that's enough you know that's enough for a blog. A blog is actually a good example where uh backups should be used. So for my own stuff, I'm using digital digital oceans server backups actually. You're also using that. Yeah. So I'm paying like €1.50 a month. For having a daily backup every day of the entire droplet of the entire thing. So it's not only back. So Pinky for example is using that.
Well, but but I have a horror story about uh Tell me if you want to share of course if you can. Yeah. Yeah. Sure. This is this already happened like years ago and I'm pretty sure you tell the story while I grab a water. Okay. So, where are the secret lal projects? Uh no, we're not not going to do that. So, the uh the horror story that I have for you, I already shared on my blog. It uh it actually triggered me to create uh this package. Um, so basically what what happened is that uh Digital Ocean um they just lost one of our servers and and and all of its backups.
Um so one moment the server is there and the other moment the server was not there anymore. And since I've experienced uh that um I really want to have like backups at an at a at an other vendor as well. So not only on one one platform but on another platform as well. So even if if one provider just blows up or messes up, I still have a backup somewhere else. And that is why I created the package to easily create backups that can be stored anywhere that uh that I want. Um so I think I used in conjunction with the uh digital ocean uh backups.
So usually the backups are there but I for things I really want to back up I also want to have it like another provider as well and that's where the package can can help with. So you were just sharing that you were doing backups in a vendor and that vendor also went down. Yeah. Yeah. Yeah. And that that just basically just lost everything that we had due to a problem at their end and they didn't have backups. So now I want for crucial things I want to have like backups at uh at the vendor itself and also at an external.
So you cross stream backups to various places. Wow. Okay. That's important. Yeah. That's important. So the way I have Pinkery backups as you guys may know by the way I have this website called it pinkory.com which is a social media totally done with Laravel and live wire. Is it still…
Transcript truncated. Watch the full video for the complete content.
More from nunomaduro
Get daily recaps from
nunomaduro
AI-powered summaries delivered to your inbox. Save hours every week while staying fully informed.









