Laravel’s New Svelte Starter Kit, UUIDs by Default, Bun, OXLint, and More..

nunomaduro| 01:32:10|Feb 19, 2026
Chapters8
Host welcomes the PHP community, outlines the plan for the stream including Vue, Laravel, and a guest appearance.

Laravel’s new Svelte starter kit is out, UUIDs are default, Bun and OxLint rule the build, and Vue and React starter kits get updated alongside a handy “Mastering Laravel” tips read.

Summary

Nunomaduro dives into big updates for the Laravel ecosystem during this live stream. He kicks off with the official Svelte starter kit now available from the Laravel team, then shifts to his own Vue starter kit release, and finally highlights a mind-blowing blog post from Mastering Laravel packed with practical tips. He explains why UUIDs by default (UIDs) are a smart move for security and scalability, and he demonstrates how Bun powers the package manager for speed. OxLint replaces ESLint in these kits, while PHP 8.5 becomes the default runtime to stay current with the ecosystem. Throughout, he contrasts the new starter kits (React, Vue, Inertia) with his Essentials defaults, including strict typing, immutable dates, enforced HTTPS, and safer production practices. He also underscores practical tips from Mastering Laravel—like proper branch cleanup and testing philosophy—to help developers ship faster and safer. The stream features live demonstrations, commentary on stack choices (Vue vs. React vs. Livewire), and candid notes about tooling adoption and community expectations, all delivered with his signature practical, opinionated flair. Finally, he teases future updates like the Mafey kit and continued enhancements to the starter kit ecosystem.

Key Takeaways

  • Laravel now offers an official Svelte starter kit, expanding the available front-end stacks alongside React and Vue.
  • All starter kits switch to UID v7 by default, providing sortable, performant IDs that improve security without sacrificing indexing.
  • Bun is the default package manager across starter kits, delivering faster install and build times than npm.
  • OxLint replaces ESLint in the tooling chain, offering faster linting while remaining compatible with ESLint rules.
  • PHP 8.5 is the default PHP version for these starter kits, aligning projects with the latest language features and improvements.
  • Vue starter kit is released with isvelt-based components (dotsvelt.ts) and a shared back end and actions, mirroring the React setup for a consistent DX.
  • Essentials, a package created by the author, injects strict defaults (type safety, HTTPS enforcement, immutable dates, guarded models) into all starter kits for safer defaults.

Who Is This For?

Laravel developers evaluating starter kits for new projects, front-end developers weighing Vue, React, or Svelte options, and teams who want safer defaults (UIDs, Bun, OxLint, 8.5) out of the box. Essential viewing for contributors to starter kits who want clarity on the trade-offs and future roadmap.

Notable Quotes

""Lavel starter kit… Lavvel inertia view laval in nursery React the Mafy kit will now come with all these additions""
Intro framing about the three releases and the scope of the update.
""One of the very reason one of the many reasons why I think people should give spelt a try is if you are a fan of type safety is a compile language""
Explanation of UID by default as a compile-time safety feature.
""I think my next projects I'm going to do with is felt just because I really feel it's clean""
Wendell on his preference for isvelt and future plans.
""OxLint replaces ESLint… it’s faster, it’s modern, and it comes from the Vite team""
Tooling evolution from ESLint to OxLint.
""PHP 8.5 is the default… everything is aligned to the latest ecosystem""
Strategic platform version choice across starter kits.

Questions This Video Answers

  • How do UID v7 IDs improve security and performance in Laravel apps?
  • What are the benefits of Bun over npm in Laravel starter kits?
  • Should I migrate my Laravel projects to PHP 8.5 by default, and what are the implications?
  • How does OxLint compare to ESLint for Vue/React projects in Laravel starter kits?
  • What makes the Vue Starter Kit unique compared to React and Svelte options in Laravel?
Laravel Starter KitsLaravel Svelte Starter KitUID v7 (UUIDs)BunOxLintESLint replacementPHP 8.5Vue Starter KitInertiaReact Starter Kit
Full Transcript
What's up, beautiful PHP family? Welcome back to the live stream and oh boy, we have an amazing schedule for today. We are going to talk about we're going to talk about Vue.js. Okay, VueGS. I know how much you guys love Vue. And we are going to talk about this beautiful blog that I found calling Mastering Laravel. So, it will be fantastic. What's up everyone? The nice to see you. Dmer, what's up? Did you saw me on the last? Well, very nice to meet you here as well, man. Thank you. Thank you. Thank you. Uh Tim is saying the following. Super hyped at finally joined the cool kids. Yeah, I am I'm a fan of myself. I'm going to be honest. I've told this multiple times on stream. You know, I kind of wish this adoption on the market will be a bit better bigger and better at the minute, which is not. But we are going to talk about that as well. We have a a huge guest today by the way. I literally forgot to talk about that. But we have a fantastic guest today. Will be awesome. you guys are going to see in the next couple minutes. Denosaurus, what's up? Nice to see you. It's 1:00 a.m. in your city. Thanks for staying awake and watching my stream today. Filocks, what's up, dude? Nice to see you, man. Patrick, what's up? Nice to see you. The Max, what's up, man? Now you don't have to maintain your own starter kit. That's right, man. Smeelt is out is officially and we're going to talk about everything. Chad, so today, okay, today we have an amazing schedule. We are going to do three things. Okay, number one, we are going to talk about the Svelt starter kit. Okay, it's officially out. It's officially from Laravel. We're going to see all of this. This is the thing number one we're going to see today. Thing number two, I have just released my own view starter kit. So, as you guys may well know, if Twitter is even working, um you guys know that I've released in the past uh two starter kits, my base one plus the React one. But today I've released as well the view starter kit and we are going to see everything about that. Finally at the very end we are going to dive into this beautiful blog I found called it mastering Laravel and the set of tips we are going to see here are actually mind-blowing. Okay so we are going to talk about that as well. Now before we get started and before we introduce you the first guest let me just say to you the following. Let me say thanks to our sponsors Titan of course they build you in rescue web app apps um and development teams check them out they actually have written the very first book I have written about I have read about Laravel called Laravel up and running it's fantastic check them out Titan and of course we have Redb International as well one of the best digital best digital agencies out there to make view in Laravel code check them out they are awesome check this beautiful team I would trust them with my house on it we have of course Mail trap You you guys know Mail Trap for being this development email solution that now also works for production. Check them out. They're awesome. Jet Brains, of course, the company behind the huge the best editor in the planet, PHP Storm. Check them out. Jet Brains is absolutely awesome. Red Code Rabbit, of course, if you want to have some AI reviewing your code through pull requests, Code Rabbit is your partner. Okay. And of course, we have Devon AI, of course, if you want to delegate some tasks to AI through linear or Slack. They're absolutely awesome as well. Check them out. Okay, so huge thanks to our sponsors for making my dream come true. And before we jump into the very first guest of the day, let me just also tell you that we have new videos on the channel. Okay, new videos on the channel. And this one is actually one of my most successful videos so far with almost 20k viewership and it's about uh open code. It's actually with the creator of Open Code, Dex Red. If you haven't checked this video already, here is the video, okay? Check it out. Check it out. It's absolutely awesome. and and click on this like button if you enjoyed the conversation with Dax Redra. He's absolutely awesome. Okay, the like button is right here. Just be sure to click on it. Now, moving to the very first topic of today's live stream. I don't know if you guys have seen, but Laravel have just released the official Zvelt starter kit. Okay, so I decided to basically invite the guy behind the creation of this starter kit. So chat, I want everyone single one of you say Wendell. Wendell, what's up, dude? Welcome to my live stream. How you doing, man? Hey, man. Hey. First, thanks for inviting me here. It's pretty exciting to be here. I watch your streams every time that I can and they are like awesome and it's like almost a dream come true being here. So, thanks for for inviting me. Ah, you're too nice, man. You are too nice. By the way, Shad, for those who don't know, Wendell is the creator of the Laravel starter kit, but also joined the Laravel open-source team recently. How many How many time ago have you joined the Laval open source team? Um, yeah, it was at the beginning of January. So, it's Wow, that's recent, man. And a half. Yeah. Yeah, that's recent. And you are already delivering the the Lavvelt starter kit, man. Which is absolutely awesome, man. So, congratulations on that one already, huh? Thanks. Thanks. Thanks. It's been awesome working with the team. Uh I've been just joined like less than two months, but um it's been total awesome to work with with these amazing team. Everyone everyone typing Wendell Wendell thank you so much for joining me today. I want to ask you a few things about okay so in chat by the way feel also free to answer this [ __ ] because I'm also curious about your site. Okay. So, Wendell, you obviously have created this Lavvelt starter kit which we are going to talk about it in a second, but I want to ask you first, if you had to start your new SAS tomorrow to become a millionaire, would you start with React, Velt, Livewire, or what is your you know, what what is your favorite starter kit at the minute? Man, that's that that's difficult because uh like I've been using like Vue.js JS since it was like on its 0 something version before it released like the first uh stable version. I I started using Vue.js. So I'm a huge fan of View View Guy. Oh, you would be surprised, man. All my chat this is this is all Livewire and Vue people. You know you want to see want to see just watch this chat answer on top which one is your favorite stack at the minute. This live wire view reacts. You will see this chat will just smash view and live wire. Everyone is super up to I'm I think I'm the only React person at the minute on this chat because everyone just [ __ ] loves Vue and Livewire here. It's crazy. Crazy. So you are a Vue guy, right? Yeah. Yeah. Like uh I one of the first frameworks that I worked was Angular when it was in in its first version, version one of Angular and I loved it. I I I did a lot of things with Angular and then when it released version two, it was like a really big really big change from what Angular one was and it was a lot of more like verbals, a lot of more code boiler. I didn't like it much. I was already um working with Vue at the time and then I did my full transition to Vue to Vue and started Yeah. and started using just Vue.js. I did I do love LiveWire as well like that thing it's it's awesome. It is it is but Vue it's on my heart. I know I know a lot of people on my chat love Vue and you know I was a Vue user when I was working on uh Vapor um and Forge as well but recently like with the project I've been working on at Laravel I've been super into React and kind of using in React all the time. I also feel like I don't know what is the experience with Vue at the minute with AI but I know the experience with React with AI and AI is very good just smashing React code you know it just just smashes the entire thing you know so what is your opinion about Zvelt um like what do you think about Zvelt um especially now that you have developed this starter kit what do you think about it so um I I think that my first the first time I I worked with Zvelt it was Zvelt 3 I think it was version. Yeah. Yeah. And I really liked it. I started doing it and I oh this this feels good like VJS. It seems even simpler. And at at the time when I first found it, I did a lot of like small things just to play around and catch up. But then um I saw that the adoption of Zvel was not getting a lot of traction at the time. And then I I didn't uh spend too much time on it. I spent some time on it. I learned like the basics, created some side applications with it. I really liked it. But then I saw, okay, this is it doesn't seem to be growing as I thought it was going to be. So I I I left it. But then I saw that Zeld 5 was like a really big release with a lot of new things, a lot of new cool things. And then I checked it again and I really love it. I really loved it. And um when I was working with this this starter kit, I when I finished it, I even told Joe, I said, "Oh man, I I think my next site projects are going to spelt because I'm loving working with it." You're having fun with it. Yeah. But you also feel the community was asking fort. you felt that a little bit or do you felt like the community was asking for the spelt kit or did you guys release it because you think it's a good option too? Yeah, I I think that there that is already be before as I said it was it didn't had a lot of traction but I do think that it's not like it doesn't have a user base like Vue or React butt has already a really uh good user base right now and it's a modern uh a modern framework for for UI front end and I think that we were kind of not losing But people that are like fun oft that usevelt and there's already a lot of companies that usevelt. So uh I I I think that we were missing that part to give this the this starter kit for all these people out there. So we thought about creating yeah makes sense. Makes sense. I'm going to put voice Wendel's voice a little bit higher. Chad one second. Here we go. So I have so I just saw a question on the chat. by curious team BDD which is actually a very interesting one. Tell me one reason to usevelt instead of keep using Vue. Do you think you can find one or um so I I think I have an answer for this one but uh you let you let me know endle what do you think about answer? Okay. So, one of one of the very reason one of the many reasons why I think people should give spelt a try is if you are a fan of type safety is a compile language meaning the following uh to have type safety on view it's still at at runtime basically so just like react basically it's not at compile time like you would have you know with any compile language however at the minute it compiles before to the production build. So if you are a fan of type safety, one of the biggest compelling reasons to usevelt is it's a compile language. Okay. So that's one of the main things I think um people really liked um at the minute. So yeah. Yeah, I I I completely agree. And uh if you check uh the starter kit, the starter kit comes with uh a script uh npm script that doesn't in it's not in the other ones because it's anvelt thing and it's uh it runs uh something called zvelt check that does this check kind of and check for a lot of things. It checks for type errors but not only things that it would catch but even for things uh like accessibility issues. It's like when I was creating it um I run it the first time and said okay you have this this and this page that have things that are not accessible for for screen readers. So you you need to change this. Damn that that that's pretty cool. Did you guys heard this? In other words, basically is so powerful in terms of compilation step in terms of type checking that just literally warn Wendle about this accessibility issues. Are you able to share with us that that precise script on screen? Sure, sure, sure. Let's do it. Let me just let me go here. So, um here you have the I think can you see it? Yeah, I can see it perfectly. Uh if you can make it even even bigger, that would be awesome. Just type a control plus like 100 times and that will be even better. Okay, let me You don't have to. I think people can see it on screen, but let me know. Okay. Okay. Yeah, you can just type command plus and that will just do it. You will just increase the size of the screen basically. Yeah. Yeah, I'm on Linux so this is not Oh, okay. Well, you can leave it like that. That's perfect. I can see it. I think it's fine. But let me check your let me check your I don't even remember. Yeah, I think I think it's okay. Yeah, people can see it. Shad, let me know if you can see everything. Okay, which OS is this? One question from the chat. Which OS is this? You said it's Linux, but is it DRO or Yeah, this is a DRO called Tuxedo OS. Dude, it looks so much like Windows though. Yeah. Yeah, that that's true. That's true. But like it it it's very friendly and I just left it as it is because I have a computer that's from these it's Tuxedo computers and they are they they do like Linux machines and I wanted to to change to Linux and then um the the the OS kind of it comes already pretty configured for all the hardware that it's a configured machine. So, it has like an Nvidia uh graphics card and everything. So, things just work the hardware. So, it's pretty it's pretty cool. I do have another Linux machine that's it's with Omar key, but it's not this one. But Oh, right. A lot of people are super into it. So, this is the the check script you talked about, right? And apparently you provide like a D-T config. Does is that telling me that it also does a type checking with TypeScript as well? Yes, exactly. So you have this val check. You can pass the the TypeScript config and it's going to run all the type checking and a lot of other things like accessibility uh things that are valve only. For example, if I go here and um people that uh work with Zvelt um already know that, but Zvelt has something called runes and runes are basically things like this and they are kind of keyword. Oh, we see a dollar chat. We see a dollar [ __ ] dollar, man. Here we go. Dollar for the win, man. W dollar everyone in the chat. W dollar, man. Here we go. Yeah, man. That that that's a perfect match for PHP. So all the runes in Zvelt start with the dollar sign and they have like state that that's for creating reactive state. They have also something called the deriv or deriv. I don't know how to pronounce it but it's kind of computed from view that it computes a value from another one. So those things are called runes. And if you put these things here, these runes outside a file that it's not a isvelt file or not isvelt.ts or isvelt.js, it's going to fail as well because these are keywords from are kind of compiled things and they don't work. If I put uh this state inside for assembly's initials. It's not going to work because it is right. What what is the main difference between So I see files that have TS I see files that have dotsvelt.ts and I see files that have dots only. Um what is the difference between like the dotselt.ts in the dotselt only? Um the dots are usually the components. So the components you have uh you can have the script, you can have the markup here, you can have even uh the style here. So they are kind of the components. If you have like view, react, they are components. Uh while the iselt.ts, ts they are pure uh typescript files with just functions and those can uh kind of replace not replace but they are the alternative from zvelt for example uh on view we have the composables on react we have the hooks and here on on zelt they don't have a particular naming for those for those files but those are just files that you can put like a shared logic between your application. So, um this is one of the main differences from this starter kit and the other ones. For example, you have um in the other starter kits, the view and the react one, you have something called use appearance that it's composable. Yep. Yep. Yes. And here the the same one it's this theme.ts. So instead of using the same naming of use something, you just name it towards what it's related. So this controls the team. So you put it team.svelt.ts. And here I can have things like it was like a hook or a composible that I'm going to share. And you are going to see here that I have here I export this function that ex that expose those uh some functions and the value for appearance. It's kind of a hook and it's kind of composable but it doesn't use the same naming. It's just the alternative from val right. It look it looks clean man honestly you know and uh the appealing of the comp. So there is some people here who are talking about vapor mode as being vapor as being view his alternative of compilation of basically which I have I have not tried it so I have not tried it but um but I would love to try it. Okay. So yeah um one question I have to you there is that so you you just said that you are a view guy. You are a huge Vue guy at the minute. After developing this kit, would you still be like the Vue guy? Like would you still go to Vue or after what you have seen onelt, you would just try? Man, I'm really thinking that my next projects I'm going to do with is felt just because I I really feel it's like it's clean the um what we've been talking about the compiler option and the check script that comes with isvelt it's very powerful so it helps a lot and one thing that's pretty cool that I use it uh when working with this uh the starter kit is that Zvelt has uh his own MCP server that has a lot of cool things. MPC. Oh, interesting. What is that about? Yeah. Yeah. It it like it has even something called Zvelt autofixer that if I say okay, use the Zvel MCP check those files and run the autofixer on it. It's going to kind of run that check and it can kind of do what the ESL and prettier does and for things that are easy to fix, it's going to auto fix without you don't need to touch anything. It's going to do it for you. That's insane man. So it's you see the adoption of this MCP tooling like being you also use at framework level which is insane. So at Laravel we have MCPs right? We have MCPS with boost. Now we have MCPs also being provided with Sevelt. um not familiar with if React and Vue offer any of that, but um I would I would assume it does. Um or at least the community does at the minute. Um yeah, you know, I want to be really respectful about your time, Wendle, like I feel like we could talk about one more hour easy, but um since you you told me that you have a hard limit of um actually having to be out at 5:30, um I want to just ask real quick, do you want to share anything about your socials? Anything you want to share with people where people can find more about you? Oh, sure. If you guys want to talk uh about this valstarter kit or anything else, you can find me on X, it's window_adriel. So, you can find me there. We can talk about this, about PHP, Laro, anything that you want. And again, no, thanks so much for having me here. And if you want, I can come back anyway. Here we go. Wendell, everyone on the chat, thank you so much for the brief explanation about the spelt kit. Catch you next time, dude. Thank you. Thank you. Thank you. See you around, man. Thanks. Thanks. Have a great time there. Bye. Bye. Bye. Here we go. Shhat. So, this is the Laravel um felt offering basically, which is something I think the community was kind of asking for. So, it's out. By the way, in order to basically have access to it, the only thing you have to do is first of all update your installer. So, you go to her and you update your installer. After doing that if you type platvel new whatever you'll be offered to usevelt okay so you obviously have react you have view we have livewire all these crazy options but you now will be offered to usevelt which is you know it's something that appeals to a lot of people okay which is very very very cool by the way chat we have close to 100 to 100 people online at the minute watching this stream don't forget go all the way down and put like on this stream if you're having fun thank you so much airist for 14 months months in advance. Dude, you are absolutely awesome. Thank you so much for supporting my work. I really appreciate Tins. Oh my god, dude. I really appreciate you supporting my work since day one. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. You're absolutely awesome, man. Theel, thank you so much for the subscription. Tier one 14 months as well in a row. I really appreciate your support since day one as well. Is pen PHP dad? No, of course it's not that. See you with Lakonu. Yes, man. See you, too. Yeah, Handel only had literally 30 minutes from me, so I kind of have to, you know, uh, stop the conversation there, but hopefully we'll be back. You know, he will be back. [ __ ] So, this is Lavel starter kit. I'm going to give you this Lavel news link, but we need to jump into my own release today. Okay, so today I've released something really, really interesting, and I'm going to show you in a second. If I can load my Twitter screen. Here we go. Uh, load, load, load, load, load. Here we go. Prown to announce. This is basically today. Just out. Okay, just out. Proud to announce the release 1.4 of my starter kits. Okay, and this release adds the view starter kit, which by the way, huge thanks to developed by Josh, one of the many viewers of this live stream. And what this does is kind of had a bunch of opinions to my own starter kits. And we have a bunch to talk about. Okay, we have a bunch to talk about today. Of course, we have this new Vue starter kit, which is exactly like the React starter kit, but the Vue version of it. We now also have UU ids by default. Shhat, I want to have a huge conversation about this. Okay, I've been using GU ids by default in all my eloquent models and it [ __ ] just works. Zero problems whatsoever. Okay, and I want to talk to you about this heavily today. We are using now bun by default on every single starter kit. There is no reason why to use anything else. Bun is fast, crazy good, and it really just works. We are now using ox lint as well which is equally crazy fast crazy good and we are using it instead of eslint. If you are not using oxlint already you probably should. Okay, you probably should just by the way we're using preacher combined with eslint. Oxlint apologize. So oxint basically replace the eslint part I had on my previous library starter kits. And of course we have PHP 8.5 by default. So we're going to jump into all of this right now. Okay. So, in case you're not familiar with my starter kits, I'm going to give you a brief explanation why my starter kits are [ __ ] unbelievably good. Okay. Okay. Thiago is saying the following. Pen PHP no longer works. Stop working for me in December. Dude, feel free to do a pull request to fix the issue. Okay. Okay. What is owned by anthropic? uh DL I'm not familiar with that a lot of people on Tik Tok as well what's up Tik Tockers thank you so much for joining me today when you release malfeit so first of all malfeit release will be come after this three releases so basically this is a three combo release I have just done today let me show you this one okay this is basically three releases of the laval starter kit laval inertia view laval in nursery react the mafy kit will now come with all these additions which I still need to work on okay it will hopefully will be out in the next couple weeks I cannot promise you win. Okay. Okay. So, what else? Boom. Boom. Boom. Boom. Yeah. About the pan PHP. Just basically do a pull request if you can. Just dropped the like on on YouTube. Thank you. Thank you. You're absolutely awesome. You're absolutely awesome. All right, Shad. Let's talk a little bit about my view starter kit. So, if you're not familiar with all this [ __ ] let me just open GitHub uh and show you real quick. So on GitHub I have my Lavel starter kit which is by the very basic version of the Lavel skeleton with my opinions on it. We're talking about 100% type coverage uh immutable first architecture you know a bunch of type safety features like PHP stand max and more. We have bun PHP all of that [ __ ] We have my React in view starter kit and the View starter kit came out today. Okay, this is literally the project I have open right now on screen. Okay, so all of this code right here is Vue powered code. Okay, we have composables, we have components, and all this [ __ ] is literally just Vue.GS. And I know that a bunch of you were asking and begging for a Vue.GS starter kit. Well, it's out. Okay, it's out and you guys can start using it today. Okay, now of course the Vue starter kit shares some of the many things that React starter kit does. So the back end is actually the same. Okay, it's literally the same. We have our favorite actions like create user, create user email, we have delete user, update user kind of comes with that full story as well. Okay, in terms of actions you guys love actions. I love actions too. Okay, boom boom boom. Why not tinker on the starter kit? Um, that's actually a very good question. We don't have Laravel Tinker here. I think we should have Laravel Tinker. If we don't, feel free to do a pull request. We should. We do have a lot of other things like security advisories, a bunch of cool things we can talk about today as well. Okay. Okay. W Actions for the win. I agree with you man. Both use essentials package. Yes, Essentials powers these three starter kits. And in case you don't know essentials, it just comes with a bunch of opinions which we can talk about today as well. Okay, so W actions. Actions are always using transactions. Beautiful stuff. Easy peasy 11 squeezy. My starter kits all rely on actions. What else we have? We have controllers which the live starter kit the basic one doesn't have a lot of controllers but the reacting view version of it they do have a lot of controllers for the session for creating a user on the system for deleting a user on the system uh to change the email and all those cool things. Okay, actually by the way in case you don't know let me just show you real quick. Do I have this open real quick? I think I do. Bada boom bada boom bada boom. Do I have this open? Oh, I think it's this one. Yep. Wait, what? View starter kit level cloud. Not this one. Is this one? Yeah, it's this one. So, yeah, in terms of UI, looks insanely similar with the React one. So, obviously, you can create your account. So, that's the the basic stuff. Okay, you can verify your email and bada boom, bada boom. So, all of that is just the same as the React starter kit. Okay, now I want to show you a few things I have changed in all starter kits. Okay, the very first one is using UIDs by default. Okay, so let's start by asking you guys if you guys are familiar with Detroit as EU ids. And if you are familiar with the trait, just type yes. If you are not familiar with the trait as EU ids, just type no. I want to kind of get familiar with the current knowledge about EUIDs you guys have. Okay. But now like all my starter kits, they use the UID straight by default. Okay. All of them, all models have this. Okay. Okay. I see a lot of people saying yes, but a lot of people are saying no. Meaning that they are not familiar with the trait yet. So let me get you familiar with that to begin with. Okay. So a lot of people when you create the model like a user for example if you access the user ID you'll get an integer like one two three four you know will just basically be an incremental integer now what is the problem about incremental integers the problem about that is that your system becomes predictable in terms of ids meaning that your competitor not only your competitor but also like external people can just guess what is the the URL for other people as Well, meaning that I go to your system, I see something like articles one for example and I can predict that you have exactly one article. I see articles, you know, 100 and I can see exactly that you have 100 articles in your system. So your next ID becomes predictable. Your system in terms of numbers also becomes predictable. Okay. Now what you can do about this is obuscate a little bit this number. Okay. You can offcate a little bit by instead of using this use UIDs right here. And to use this, the only thing you have to do in Laravel is actually use this straight. And after that, automatically Laravel will transform the existing ids into UU IDs. And a UID by the way looks something like this. Okay? Looks something like this. It's a little bit more offiscated and it just looks a lot different. So you cannot easily predict the next ID. Okay? Now, I want to kind of clear a little bit one of the basic misconceptions people have about EU IDs. People think, especially this trait right here, people think that this trait is slow, takes more space and blah blah blah blah blah. That's all [ __ ] It's not true anymore. Meaning the following that when you use Azu ids in Laravel, Laravel automatically will use a UID format that is fast is easy indexable just like regular ids. It doesn't take a lot of space because behind the scenes is actually converted to an integer. So you can safely use asu ids and have zero downsides. Literally zero downsides. The only downside I have discovered so far about ASU ids in Laravel is the following. If you go to the database and you want to easily kind of saying, oh, I want to see like the information of this user ID. Well, you kind of you kind of have to copy the thing. Okay, you kind of you kind of have to copy the entire story to basically um carry that EUD around basically. Okay, so that's the only downside. But in terms of uh like good stuff, it's only positive stuff at the minute. Okay, so I'm using UIDs by default and I hope you guys are going to enjoy this too. The Maxi saying the following. The downside is the URL. That's true. However, in my all my apps and at Laravel at least, we actually don't use the the ID for the URL. Okay, I understand that many of you guys do, but in fact at Laravel when you work with uh URLs we we always use something called it the slug. So typically if you have something like an article the article will have ID of course but it will also have a slug. Okay. And what I do is that when I'm specifying my route uh what I do here is that I do always something like this article and then I like to specify article here with um the column slug instead. It's a little bit more work because you want to make sure slugs are unique and [ __ ] like that. Uh but in terms of friendly URLs, it really becomes good. Okay. Okay. So, you can use uh UIDs and if you don't like ugly UIDs on URLs, you just use a slug. You just need to be mindful that slugs need to actually be something that works in the URL system. Needs to be unique, ideally lowerase as well. So, there's some work on that one. Okay, slugs are truly unique. So on the database, this is actually good stuff to talk about. I hope you guys are enjoying this conversation. Okay, uh so when I talk about slugs, let's go here into the migrations users. So of course the table needs to become UUID. So it's no longer just ID, okay? It needs to become UID and primary. When we talking about slugs, this needs to be a string like that. And you guys can specify this. You need to have some extra safety in terms of the slug as well. Okay. Uh standard scander is saying string slug helper. I don't think the string slug helper does enough. Okay. I am quite quite positive that in Laravel I have end up writing my own slug myself. My own slug rule. So you need to be mindful about that. Okay. So I want to ask you guys um was this explanation about EU IDs clear? Do you guys still see any downside besides the ones I have mentioned? What do you guys think in general about EU ids? Okay, logic BR by the way the as EU ids uses UIDs V7 by default. Okay, so UID v7 is sortable, easy indexable. It just doesn't take a lot of space on the database. It really just works. Okay, Richie is saying that spicy sluggable can be useful. I'm not familiar with that. Uh but I believe I believe spicy does also great things. So okay, Tim is saying the following. If UIDs are unsigned big integers under the hood. So I cannot give you a perfect explanation, but I've spoke with Jess Archer about this situation on Lakon, India. And what Jess Archer told me, she's super into databases. She's like the best person about asking stuff about databases and she told me like um actually under the hood this is just regular integers. I don't know about inside big integers but it's just regular integers. Scander is saying the following also incremented ids are not good for distributed systems. Oh I feel you man. Yeah that's pretty good man. Honestly I am in love with UIDs. I'm using UIDs all the time to all my models. Okay, so something you might think is that I'm going to just use Azu uids like sometimes you know no just use it all the time. Azu ids can be used and should be used in my opinion at this minute all the time. Okay, all the time I use it all the time. And I feel like so what I end up doing by the way just to let you know is that I've developed the full product using regular IDs. Okay, so regular ids as as integers. Okay, and then people came to me and saying, well, no, no, careful because ids can be easily guessable. Now you need to have like you need to work with external ids every single time you expose that. And I was like, [ __ ] now I need to go with some, you know, some U ID as well. And you need to keep this two on a database. And what I feel is that if you just go by default with this, you don't need to worry about [ __ ] It really just works. Okay, it's fantastic. By the way, Chad, we have a hundred people watching this live stream. Chad, go all the way down and I would really appreciate that to the to the bottom of my heart if you could just put like on this video. Okay, just go all the way down. Put like on this video. Subscribe the channel if you want to see this number going up. Okay, you see this number? It's going up. If you subscribe the channel, okay, on Twitch, on YouTube. What's up, Tik Tockers? Yes, I am Nunaduro. Yes, yes, yes, yes, yes. All right, Shad. I think like we are in understanding about SEU IDs being a good option by default and I'm happy that you guys are happy with it. Okay, now I'm going to be truly honest with you. Sometimes you may work with a package that is not ready for this. You might need to tweak the migrations. Okay, you might need to tweak the migrations to work with UIDs. Okay, the Max Viper just confirmed has UID V7 which is the ones used by default on this trait. Okay, here we go. Here we go. Has a UID V7. It's easily sortable as well. Beautiful. Beautiful. Beautiful. Um, what else do I have in terms of new stuff here? Let me try to show you a few things. Uh, bada boom, bada boom, bada boom. So, we obviously are using bun now. Okay, I don't know what you guys think. I've been using bun all the time and it's [ __ ] great. Okay, bun is fantastic. It's really fast. It really just works. I've been using bun now for everything. Okay. Um, and it's really just fantastically much faster than uh npm. Okay, I know a lot of people still rely on npm. I can tell you from experience in the last two projects I have worked on. You can safely change to bun and will be just much faster. Okay, I have already ran benchmarks here on stream with you guys and we we have seen with our own eyes how much faster bun is compared with npm. Okay, so you can safely change to bun. Okay, it really the same stuff. Honestly, it's really the same stuff. Okay, for the stuff I do, it's really the same stuff and really just works much faster. I haven't tried V+ yet. No, probably should, but I haven't tried V+ yet. Yeah, Bun is [ __ ] unbelievable. When I was first trying it, then I w then I actually changed some of the Laval projects to it and we are really happy with it. It really just works. I'm not familiar if Laravel Forge has bun or not. Good, good, good, good stuff. Okay, now there is also a nice discovery I have done chat in terms of speed and also in terms of features as well is ox linked. Okay, let me show you. So in the past I was using every single time I would go to um I would go to um do some of my linking I would use two tools. Okay. I would use preacher and I would use ESLint. Okay. So now I'm relying on oxint. If you're not familiar with oxint is this tool by the the view vit team. Okay. Let me just show you real quick. Here we go. Okay. So the team behind VIT view also have worked and developed this thing called oxint. It's effectively a replacer for os eslint as you can see here. Okay. And even supports apparently eslint core rules. So okay safely. This is also like nun no stamp approval for moving from yes to x. Really just works super fast. Really cool stuff. Okay, I'm in love with it. In love with it. And here we go. The chat just confirmed OSLint also supports is backward compatible with ESLint. Okay, that's awesome, Shad. That's awesome. Okay, so I'm using this stuff all the time. Really just works. No problems whatsoever. Yes, the Alex is saying the following. You need to enable typoare linting in your starter kits. Uh can you make a pull request for that? I would really appreciate Carex is asking what is ox. So again in the past I was using preter combined with eslint for linking and I have just noticed that oxint is much faster, much better, much more modern as well. Comes from the vit team at the same time. So in love with it. So, I effectively replaced ESLint with Ox in all my starter kits. Oh, thanks, Alex. Thank you. Appreciate, man. Okay. So, that's oxint replaced um by ox linked. So, the next thing I want to tell you and talk to you about is PHP 8.5. Okay, so we talked about how the ecosystem takes a little bit to catch up with PHP 8.5. Okay, we talked about this but I have noticing that basically everyone in everything is supporting PHP 88.5 right now. So all my starter kits require PHP 8.5. Okay, by the way, tell me on the chat which PHP version are you using at the minute and if you see any problem about just being on PHP 8.5 on the next project. I don't see any I don't see any problem but let me know. Dabl, do we have um PHP linting? Of course we do. Yeah, of course. You know, the PHP linting is uh pint. Okay, so we'll of course run ractor then pint and then preacher plus oxlint. Wow, a lot of people are already relying on PHP 8.5. No problems whatsoever. That's surprising. Honestly, I would expect you guys to answer like PHP 8.4, 8.3, you know. So, how do I have these icons? I have no idea, man. I honestly just installed material theme and that was it. That was it. Okay. Nothing really special about it. Okay. So, Okay. So, what we talked about, let's go here. Boom boom boom bada booma boom bada boom. So we talked about spvelt. We talked about my starter kit. Here we go. So we talked about bun has uids ox lean php 8.5 by default. I also did a bunch of bug fixes but um you know I think it's a little bit lame to talk about them. Shad this is the this is a tweet in case you want to give a a nice retweet. Here is the tweet. Okay. Dallas is asking did you try oxmt instead of preter yet? I have not. So that's the reason why I haven't made the change yet. So I kind of need to give it a try. How about thevelt starter kit? So I have, you know, I have none experience with at the minute to develop my own starter kit onelt. I don't think I also would use it. So you know I understand is awesome but you know I'm just not using at the minute. So thanks Alex. I appreciate. Okay. I appreciate sh. Don't forget go all the way down and put like on this live stream. Okay, bada boom, bada boom, bada boom. What else I want to speak to you So that was the main changes. There is also a bunch of React PHP, Reactor PHP changes, okay, in terms of using the latest and the greatest of Recctor PHP. Recctor PHP is always improving and I've actually had a bunch of things that are actually nice improvements on top of what we had on Recctor PHP. Okay, the Max Ver is asking the following. Um, are your kits based on the stock starter kits? I don't know what is stock starter kits, man. Carter saying the following. I have no idea how these things can help me as a beginner in a new Laravel developer. So, I can tell you by a fact that my starter kit is one of the most strict starter kits in the planet. It's very type- safe in terms of uh, you know, PHP stand, TypeScript. will bring you, you know, you kind of cannot make mistakes with this project. So, in that regard, we'll help you a little bit. Oh, if my starter kits are based on the Laravel starter kits. Um, yeah, I mean, a bunch of the code is based on the Laravel starter kit. And of course, I come with my own opinions on top of it. So, Laravel starter kits, for example, don't use actions, and I use actions. A lot of our startism use essentials which is one of my packages and we can talk briefly about that by the way in case you guys don't know Essentials is badass by the way. Okay, so Essentials is this uh package I have developed and it what it does it just has a bunch of strict defaults on top of your Lavel package Lavel project. So use strict models by default, use automatically autoeer loading, uses unguard models, uses immutable dates by default, it forces https by default. It doesn't allow you to just nuke your database in production. So there is a bunch of little things that I always do. So I compacted that in a package so that package can be included in all my starter kits and just that stuff gets used automatically. Okay. So, that's what Essentials is about. By the way, in case you don't know, I'm going to give you the link real quick. Okay, here we go. Okay, good, good, good, good stuff, chat. Now, I want to Yeah, I think that's it regarding my starter kits. Unless you guys want to talk a bit a little bit about anything else, but uh let me see. I think models, we are up to it. Yep, yep, yep, yep, yep. By the way, in Lacon India, a lot of people ask me why did I mention this? Okay, so I actually use every single column in my database. I always apply a casting a cast to it. Do you guys know why I do this? Do you guys know, for example, why do I like to cast something into its proper type on the front on the back end when it's coming from the database? Not a lot of people know about this, but I can tell you a good reason to do this. Okay. looks sick. Thank you. Thank you. Good [ __ ] Thank you, man. Appreciate essentials for the win. Thank you, Devel. Thank you. Thank you. All right. Here is one of the reasons why I always apply casting in my models no matter what is the type on the back end on the on the database. Okay. So, if you were this is actually good reason. If you have a table, if you have a column on a database, okay, if you have a column on a database which is an integer on a database like a big integer potentially or an inside integer, depending of the database system you are using on the back end, it will be converted to an integer or to a string. Okay? And a good example is SQLite. If you use SQLite, okay, if you use SQLite and if you try something like a user age, SQLite will give you a string back, not an integer. Okay, however, if you use MySQL, MySQL will give you an integer instead. Okay, a little bit kind of unpredictable behavior in my opinion. So to avoid any kind of problems, I always apply casting on Lavel, runtime casting, meaning the following. When Laravel does a query something like get user XYZ, okay, we'll always apply the correct runtime casting to its proper type on the back end. Okay, I know I know not a lot of people know about this situation, but it's important. So, I always make sure you know any kind of single date ended with it is a date time. Um, everything is a string blah blah blah blah blah. I always apply the correct type uh through casting. Okay, good stuff. I always do the same thing with property reads all the way top. Okay. Bada boom. Bada boom. Bada boom. Agent approved. That's a good stamp to finish this one. [ __ ] I just discovered the best blog in the entire planet. Okay, I don't know if you guys know about this blog, but yesterday I was just walking around on the internet kind of finding cool stuff and I found this thing called it mastering Lafel. Do you guys know this blog? Okay, cuz if you don't if you don't, my friends, that is actually [ __ ] W tips right here. Okay, W daily tips and we are going to see a few ones. Is AI good writing test? Yes, it is. Just be sure to have good examples. Oh, you are the subscriber of their blog for half of a year. Yeah, it's just crazy. I'm going to send you the link. Okay, this is not sponsored stream. Okay, I don't know. I didn't know this blog yet. So, let me just show you a few things about this blog. Okay, let's see the very first article and you guys are going to clearly understand what I'm talking about. Okay, the very first article comes from Joel Claremont, which is actually a friend of mine. I didn't even know he was kind of behind this [ __ ] And it what says is the following. Okay. Okay. What says is the following. Clean up that G branch references automatically. If you have a g branch locally in your machine and it gets merged in deleted on the remote the next time you get gpool it will not automatically clean up. Okay. So means the following. If you create a branch you just work in blah blah blah blah blah blah blah you do a pull request and suddenly your friends on the pull request they merge and delete the branch that branch will still exist in your system forever. meaning the following. I have basically 3,000 pull requests on Laravel Cloud at the minute. Okay, 3,000 pull requests that I have made. All those branches, they still exist on my system because I never cleaned them up. Okay, I never cleaned them up. Okay, so this tip right here will tell me a tip that will automatically keep my branches locally kind of up to date with remote kind of cleaning all the branches that are no longer in use. Okay, so let's see the following. That remote branch will still appear as if it existed until you manually run gpool- prune. Okay, so if from my understanding, if I run gpool- prune, that will automatically clean all of those branches that I still have locally but are not yet being used remotely. Okay, so I just have to run this and this will automatically kind of delete all of branches that I have like living here being stale. Okay, now it also says the following. After running this manually run hundreds of times, which makes sense. So you kind of want to not have to run this all the time. I finally got annoyed enough to see if there is a way to do this automatically in that is okay. Run g config fetch.print true. So let's actually run this real quick. So I'm going to go here to type clear. Okay, and type this command g config fetch.prun.spacer. And now okay, now every single time I type g fetch or gitpool, which I always do all the time, this will automatically clean up this branches locally. Okay, so now that I have this option true, I just have to type gitpool and this automatically will make sure that I don't have any stalled branch locally. W tip, don't you guys think? I think this is an wonderful tip. I when I was reading this, I was like, "What the fuck?" You know, this is like a very cool tip. Love it. It feels like tips like back in the days on top of it. What do you guys think? Good, good, good, good, good, good. W tip chat, what do you guys think? Bada boom, bada boom, bada boom. I think this is awesome, man. I think this is like a tip from back in the days. Feels like Laval from back in the days, man. I love it. It comes from the UIDs come from the database as a string but also I applied the casting anyways. Okay. Kapadura evil said I need to reread the article. I didn't follow up. H that's that's fine. That's fine. They are killing it. Yeah, man. They're awesome. Mastering lot of for the win. So that's one of the many tips they give. They also um they also talk about other tips. Let me show you another ones. This is actually a very interesting one as well. I have never faced because I haven't actually used different databases for my models in the past. But also says the following. Eager loading can query the wrong database. That's an interesting one. Okay, let's read about this. If you are working with multiple database connections in Laravel, there is a sub a subtle trap waiting for you when eager loading relationships. Okay, so in case you don't know, when you create eloquent models, you can actually specify a different connection for those models. Okay, so you can have a user model using a different database in another user order model using a different connection too. So you can effectively have every single model using different connections. It's not like something you would do all the time, but you can effectively also have this. Okay. Now let's say you have a order model that lives on external database and the customer model that um is working in your default MySQL connection. Okay. So we have this model which is using this external connection but the user model is basically or the customer model is doesn't have any connection default. So basically just uses a default. Okay. Now you may expect that if you run order with customer so eager loading the customer for all the orders um you may expect that those orders will query the external database for orders and MySQL database will be used for customers the default one but that's not what happens instead laval tries to find the customers table also on the external connection and it fails okay so basically what laval does if you use something like this is the following. I'm going to load all of the orders and because the orders are using the external connection, if I type a width, I'm going to equally load the customers table from the external connection which is not exactly uh what we have on the back end. Okay, so the solution for this which I don't think is actually a nice solution, okay, is the following. Explicitly set connection to property on the related model. So instead of not having any of this uh to rely on default, you kind of have to specify the connection itself on every single model. I think the fix is simple but kind of hacky it feels to me. Okay. Ba boom bada boom bada boom bada boom. Nuno should not be sick for so long. Oh my god, dude. I know, man. Just you know the last year, I don't know about you guys, but in the last year I've been sick like four times. Like actually sick. like real sickness. Now I'm feeling much better though, you know. So props W sickness healing, you know. So I love this kind of articles. Like it really feels like back in the days when people used to like to write articles. It doesn't happen often now with AI. People just don't write content anymore, which is kind of sad. Okay, I'm going to be honest with you. It's kind of sad. I kind of wish people writing more articles like this. Okay, let me know what you think. Okay, what else we have more? Bada boom, bada boom, bada boom. Oh, this one I kind of know. Okay. Oh, it's a video though. Okay, let's skip this one then. How to tell if you are testing the framework. This is actually one of the biggest questions I have literally all the time. Oh my god. So, let's read this one real quick. How to tell how to tell if you are testing the framework. A quick way to check if your test has real value. Okay, let's go back here. I have a simple trick for this. Take let's make this bigger. Take the test you are questioning and then see if you are coming if you can comment out a chunk of application code and make the test fail. Uh this actually a good point. So if you comment your application code and the test fail that's a good thing and actually it's actually this is actually a very good thing. So every single time you comment your application code and your test fail means that your testing is adding value. Okay, it could be a single character, a method call or an entire statement. If you can make the test fail with this approach then your testing logic is worth keeping. And if you cannot make the test fail with anything uh short of ripping out the whole route, it's probably just a testing the framework. Exactly. Um you know that's why I don't use mocking. I I think mocking is like a huge mistake in terms of testing. None of you guys should be using mocking. Okay, mocking is [ __ ] outdated in terms of techn in terms of testing. Okay, I am the creator of one testing framework. I have I have written 10 [ __ ] thousand billion tests for Laravel cloud vapor and forge and I can tell you mocking is always a mistake. Okay, always a mistake. Like 99.999% mocking is a mistake. That's a hot take. I It's 100% sure a good take. Okay, mocking is for people who have no idea what they are talking about in terms of testing. You can always use fakes instead. Okay. And laval facads are probably the easiest way of using fakes in testing. What is mocking? I can explain it for I can explain it real quick. I can explain it real quick. Let's go here into this uh yeah do I want to kind of showing you here's one examples where mocking is really naive for example so one of the approaches people would think especially when they talk about unit testing is that people talk about unit testing in the way they mention like you shouldn't eat the database for example Okay. And not hitting the database is also a mistake by the way, especially when using Laravel. And what people used to do in the back in the days is doing something like this. All right. So, I need to hit the database on this action. So, I cannot hit the database. So, I'm going to do something like user repository and I'm going to [ __ ] mock uh this user repository class. And then I'm going to just [ __ ] inject this user repository when creating uh this user uh this user action. And then I'm going to set expectations on this mocking. So the user repository should receive um you know should receive create once blah blah blah blah. So all this [ __ ] is just crap. Okay, do not do this. Okay, what you can do instead is using fakes. Okay, so what is fakes about? Fakes is about having this implementation behind the scenes that can also be using for testing. Okay, in this scenario right here, what I can do, okay, is just make sure the user is actually on the database. That's it. takes no time whatsoever. So what I could do here potentially is using something like this assert database have for example, okay, I'm going to assert the database has the [ __ ] user on the system. I can also do something like I'm going to go to the to the database and type something like all right give me the user that I just created for example to see if it exists on the system. So this is way more and you are also testing much more you know you are testing much more you are actually testing the migrations at the same time you are testing that the database rules actually work as expected you are you are navigating around the platform and just testing much more okay so you know same goes when you're testing controllers or front end effectively okay so if I were to go into this user controller test what I really want to test is that if I just type this information on the form I actually created that user on my system. Okay, this is exactly what you want to do. Uh kind of just testing the full story. you have mo you have mocks on the mail gun SDK. Well, you know what what you can do instead is something I do all the time on my projects is is create fake implementations. So every single time I have something like let's say uh mail SDK or whatever I never create only the mail SDK I also create the fake SDK at the same time. Okay. So then I can I can kind of fake the implementation that it should be used behind the scenes. I do this [ __ ] all the time like mail SDK will be a fake XDK as well. If I have a log SDK this will have as well a fake log SDK as well. So I just use fakes all the time. never use mockings and I think mockings are a mistake. How do you test that an action is used? That's the [ __ ] point, Adrian. You don't. And using an action is an implementation detail. You can in in theory, you are able to just remove the action and still make sure the code works, you know. So when you are on controllers, you don't test if the action got used. That's the [ __ ] point is that you don't test the implementation, you test the behavior. What you want to test is that if you post this information, the user got created and is logged in. How you do that is not up for testing. That should be just that's an implementation detail basically. So you should be able to come here change this entire action right here and the testing is it still passes you know now I also test the action in isolation so that's a good point I also test the action in isolation that's typically to test more edge cases about an action because you know I want to kind of save the controller testing to basically make sure I can post this information and see if the user exists but in but then I want to kind of test the action in isolation so I can basically test the edge cases like things like events got dispatched emails got sent so that's where I would test the action in isolation okay hope you guys enjoy this explanation if yes type w testing because testing is important okay by the way agent if you want to make sure your team uses actions, what you can do is use this thing called architectural testing and you can specify an architectural testing that will ensure that. so you can effectively write architectural tests. Make sure that all the controllers are using actions, all the controls are using form requests and you are kind of living up to the architecture gods in terms of um in terms of that [ __ ] Okay. How do you organize a Typescript project with inertia? I'm going to be honest, man. I'm not a Typescript architecture guru. Okay. Um, you know, I can give you the way I typically do things, but um, I'm not a guru in terms of organizing JavaScript code. What I well what I can what I can tell you though is that uh, I typically organize my pages um to match my my controller naming. So if I have a controller name user user profile controller I will have equally all of the pages right here. So this is the edit this is the create of this controller. This is the create and edit of this controller. So I basically try to mimic kind of mimic exactly the controller naming I have on my system. That's the only thing I do special. What else I can talk about this? Yeah that's the only thing I do special really. I do pages. I have every single time I have reusable components. I just have this components folder. Okay. Um, but I do know for a fact that there is a little bit more regarding testing that I could do. Uh, so at Laval, we basically just hired someone recently and he introduced me to something called it study book if I'm not mistaken. I don't want to lie. You guys correct me if I'm wrong by the way, but uh, it's called storybook. And what story book allow him to do is test his components in isolation as well. Okay, so besides having browser testing with past, you can also test these components in isolation, which is something I'm not super familiar with it, but we were using it. Okay, chat, if you are enjoying today's live stream, don't forget go all the way down and put like and subscribe this channel. If you want to see this number going up, you see this number right here. It will go up if you subscribe to the channel. Very, very, very important, chat. Very important. Rafi is saying the following. Nuno, how do you update the attributes of a model replica with property read without using update? Oh, can you elaborate? Why wouldn't So, I use the update all the time, by the way. Okay. I use the update all the time. Um, so explain me the question a little bit. I don't use also model replica. So, I actually don't trust a lot the model the model the model replicate uh function. Let me go here and try to do it real quick. Yeah, I don't trust a lot this method. I'm going to be honest with you. I don't use it a lot. And the reason why I don't trust this method, it's because sometimes you might want to add an extra field in your database. And all of the code that uses replicate will also replicate that field. So, you know, I tend to store API tokens on my database, things like user API token or whatever. And I feel like if I use replicate right here on an Eden's part of the system, there is a likelihood that it will exactly also copy that field if I forget to the accept [ __ ] you know. So I kind of not trust a bunch of on this. I don't use this [ __ ] all the time, if ever. So which package of do you use with inertia? package of O off. I just use Laravel O. That's it. Just by Laravel Oth just works by the way. Okay, you don't need external packages or whatever. Really just works. Yeah, I don't trust the replicate method, man. Apologize. Okay. Agent is saying, "Isn't Roberto working for or with Storybook?" I don't know. So, I don't know if it's called Storybook, though. I think it is. Laravel does uses 45 for O. Exactly. Let me just double confirm. I'm using 45 like 100% sure. Let me just confirm. Uh yeah, 45 as you can see here. Okay. So, inertia Laravel with 45 for inmemory for in-memory replica use clone. I think like even clone is kind of weird, you know? I wouldn't use clone or replicas. Oh, never basically. Hello from Cambodia. What's up, dude? Welcome to the live stream. Nice to see you, Oh my god. Okay, so yeah, that's it about my starter kit. I don't know if you guys have any more questions, but I think we good. We are using boost, of course. Boom, bada boom, bada boom. And we were just talking about um uh testing the framework about testing which is absolutely awesome. Bada boom bada boom bada boom. Be careful with dd raw. What is this? Be careful with dd raw sql. Um laral use dd raw sql is handy for debugging queries. It shows the complete SQL statement with values interpolated in your eloquent query. Okay, that output is ready copy paste in MySQL console. But keep in mind is not using prepared statements like Eloquent does. This is new for me. I literally thought it would use the exactly uh statement that Eloquent does behind the scenes. Okay, so the values are interpolated directly with SQL into the SQL string. Laravel scapes is then but it's not the same as the proper parameter binding for debugging is usually fine but a couple notes into the consideration. Do not assume the output is injection safe. Oh, that's a good point. Just do not just copy paste. Um, this is meant for displaying and is not protecting against malicious output. Interesting. They have a an alternative though. They don't. All right. Well, still nice tip here. Don't get defensive during code review. Sometimes even a small observation can lead into a big improvement. Yeah, code reviews. What do you guys think about code reviews in general? Do you do a lot of code reviews in your team or you guys or you guys just allow everyone to just push to master to master? That's a good point. At Laravel, we do code reviews. Okay. Especially on existing projects. Agent is saying it does code reviews all day. Interesting. Yeah, at Laravel we also do code reviews um in all Laravel projects especially the ongoing ones. If we are working on a PC or something like just fresh new, we kind of allow ourselves to just move fast. Okay. I code review my own code. That's a very good thing to do by the way. I also do that all the time. Code review my own pull request all the time. That that's actually something that a lot of people should do because it's super useful. Okay. A bill is saying I'm the only one in my team. Well, you can also work uh like Scander is saying which is you do a pull request and you automatically automatically just review your own code. That's very important. Okay, you just start questioning a lot of things if you do that. Hi Nuno, how are you? I'm doing fantastic man. Thanks for asking. By the way, sh go all the way down and click like on this video. Subscribe the channel if you want to see this number going up. Okay, subscribe me on Twitch. Subscribe me on YouTube. Subscribe me on kick. Subscribe me on Tik Tok. Do the full thing. You don't review, test, or nothing. Oh no, that's no good, dude. Need to make an effort. Okay. Yeah, code reviews in general in my opinion are a must. Okay. I don't think especially if you have a very experienced team like at Laravel we are very experienced people you know so typically code reviews especially on the very early phase of the project are not necessary but on an ongoing project they are they are a must they're actually required by um by the laws we have behind the scenes okay you want to you want to learn more about Laravel. I think the best place to learn more about Laravel is this website called it laccast.com. So they have this path thing which you can follow. Okay, a lot of people here are fans of Lacasts. Okay, so I won't tell you anything that it's it's not they are not even sponsoring me anymore. So you know and I still recommend them because they're absolutely awesome. Check them out. Lavel path by lots. use AI to code review. Um, yeah, AI is actually a very nice tool to do some code review. You just be you just need to be super mindful about if AI have all of the context to do a proper code validation. Okay. There is a lot of little nuances that AI may not know about that code you are reviewing. Okay. Why not the Laravel boot camp? I don't think we have any more Laravel boot camp. Do we? I think the LL boot camp is gone. Oh, we have the lava.com learn. That's right. I forgot about this. Here we go. PC is now now on mobile. Welcome, man. This is actually a good place to learn Laravel, too. Very interesting one. Chad, here is a mega tip. I want every single one of you looking into my eyes right now. Okay. Never. But like never rely on two fields in the Laravel. Okay. Here are two fields that I never rely on. Okay. Never ever. I see a lot of projects that query based on the created or updated. These are not two two fields that you should rely on for any kind of logic. Okay, so as you may know the created you might actually rely on a little bit but the updated 100% sure you should never rely on. Okay, the updated is actually used every single time your eloquent model gets updated and sometimes you might actually be doing some updates that should not update this field. Okay, and of course that is there is ways around it but in general the chance of you making a mistake and actually updating this when you shouldn't is super high. Okay. So in general if you are storing something like last posted at or you know last activity just [ __ ] create new columns for this kind of [ __ ] Okay. Never rely on the updated assuming that the updated will always be like what do you think it is. Okay. So I always create specific date columns for the things I you know for the logic I need on. Okay, mega mega mega tip chat. Okay, mega tip I'm KJ saying the following. Hi Noo-Noo. Is it normal for Laval Herd not to have the latest patch of PHP? I think they update it um every now and then. I think they have a a schedule actually every Friday I think. But uh we probably should ask him. Stogl what's up man website is saying thanks for the tip. You're welcome man. You're welcome. You're welcome. You're welcome. It's possible to build a lightweight app in Laravel using serverless. All right. Here's another tip. Don't use serverless. Serverless is a scam, man. This is my opinion, okay? Don't clip this [ __ ] My opinion that serverless in general is a bad idea. Okay, I won't say a scam, but it's a bad idea in general. Okay, don't use serverless. Use things like uh managed cloud is actually very good, you know, on top of Kubernetes is actually a very good option. cloud or forge and you are very good very good set you know serverless Postgress yeah maybe I'm not a fan of serverless in general I think serverless is just hard to you know serverless databases actually perhaps but like um but not serverless architecture for a lot of apps at least when you are coming again to India actually pretty soon I'm thinking about doing a road trip on India just by myself you Yeah, serverless chat man you know in in Laravel has a serverless product like vapor is serverless but I just don't think it's a good it's a good option you know Verscel builds bankrupty people exactly so that's one of the examples that uh we have seen some horror stories so I mean loveless So the cool thing about uh Laravel cloud for example it's that there are actually physical servers running with Kubernetes Kubernetes behind the scenes so it's not serverless technology you know it's not lambda basically okay so that's the thing you want to avoid in my opinion I think like to work with lambda and serverless you really need to have someone who know what it's doing okay um and there This is for people who know what they are doing. But if you're a regular Laravel dude that is like doing inertia and [ __ ] like that, just stay away from serless. Okay. Will Laravel become more like Symfony? Why it should do that? They are totally different frameworks. Okay. Laravel is convention by default. Symfony is configuration by default. So totally different spectrums of conventions. Daniel Philip is saying the following. In your opinion, when should we use microservices? Never. Microservices are equally a scam. Okay. Stay in the [ __ ] monor repo for your projects and you will be good for 99% of the projects you are building. Okay. Microservices like in general, first of all, to work with the microser architecture, there's a lot of little things you guys are not aware that will become a problem. One of them being like the deployment. Okay. So you know if you are splitting a a specific service as microser and then you have your web app and you need to make sure that every single time you have a new version of the web app the micros service needs to be compatible with it. You cannot simply just do two deployments at the same time that won't work. So that's deployment is one of the issues uh with microservices plus testing. Exactly. Chris is saying the following testing a microser is a nightmare. Exactly. So you want to have nice integration tests between all of the parts of your app. But if your microser lives elsewhere, you cannot just do it. Yeah, it's a it's just a f it's just basically setting yourself for insuess if you use microservices. That is my opinion. Okay. And I have built countless apps. I have bu I have built apps with microservices and people coming those consultancies coming and saying microservices are really good. They are not. They simply don't develop apps themselves. Okay? And this is like, you know, every single time you guys listen to tips, just question yourself this is that guy giving me the tip building apps like for daily on this daily job. And if the answer is yes, you can hear the tip and question the tip. But if the answer is like the guy does not is not building apps, he's basically paraphrasing people on Twitter, that's a issue. You know, that's a very very issue. Yeah, that's why most devs wants micro monor repos. Yeah, monor repos are easy to deploy, are easy to test, are easy to maintain. Um it's just a thousand times easier. You know, monor repos with the [ __ ] backend, front end with the entire story are just more much more easy to maintain. And you see big companies like I think like um there is a lot of services or a lot of companies today that have huge products that are literally a a huge monor repo. I think Google at the minute is a huge monor repo. I don't want to lie on this one but I think it's Google which is a huge monor repo difficult to maintain with a large team. Can you elaborate why you think it's difficult to maintain? Hello to Barcelona. How you doing? You guys are absolutely awesome today. By the way, go all the way down and click like on this video if you're enjoying the moment with me. And also subscribe to the channel if you want to see this number going up. Very, very important. Okay, you see Mike is just saying Google is one [ __ ] monor repo with terabytes of data. Told you, man. Told you. Too many devs coding in the same repo is more difficult to maintain. Um I don't know man you know I you I trust your judgment there but I haven't faced myself that issue waits is saying the following. Twitch is video system was a microserbased and now they reverted to a mono service because it's was too complex. You see, you see, Shad, I'm not lying to you. Like, this is like people who work with stuff with real projects every single day. And if Google and Twitch have done that, I mean, you know, if if you want to if you want the answer like what happens at scale, like those are [ __ ] big things, you know? Do you think it's important to write the PHP doc for every single function? No, I don't have any single PHP doc. Uh, let me just confirm if I don't. [ __ ] I do. I need to revert this. Oh, I don't. Here we go. So, I don't use uh PHP docs on my code besides the ones that add type safety. Okay. And lot and you may know that in um in PHP we don't have generic types on arrays. So, I use you know only comments to add type safety. Hi, Nuno. Are you writing those model property annotations manually? Well, to be fair, I don't write any code myself anymore. It's just cloth code doing it for me. So yeah, cloud code does it for me. Microser hype is over. Thank God. Amen to that. W microservices being over, Agent is saying the following. I remember some months ago you were all docs and to have the I know I'm uh you know I've changed my mind. I've changed my mind and I don't use docs anymore ever. Okay. Okay. So, the only thing I'd use is just to add property value like um typing value and that's it. I used to like them. Yes. Not anymore. Mike is saying the following. Aren't you afraid of losing your coding skills if you don't like if you don't write code anymore? So, I don't write the code anymore, but I always review the code, you know. So I I like man I prefer this AI area than before. I think like now I'm much more productive and I make sure like I review every single character going to production. Okay. Bruno is saying they have a blog about that. Can you share that blog with me please saying the following is GitHub copilot pro subscription enough? I don't use GitHub copilot. Well, to be fair, I do use GitHub copilot, but just for small auto completions like this, you know. So, I use GitHub Copilot just for small autocomp completions like this. But I use uh cloth code oo uh 4.6 at the minute for actual code. By the way, [ __ ] don't forget go all the way down and put like on this video. Okay, don't forget super important. Stog is saying the following. Nuno, what would you generally do in case of implementing third-party services like you have products and whatever in your DB and they need to be sent one by one? Rate limiters should be considered. Ooh, they need to be sent one by one and you need to also keep them like in check updated all the time if you were to change anything in your product. Do you find the cloud cloud AI pro consuming too many tokens? U I don't know man. I'm using like the latest subscription. I don't even know how much I'm paying. I know it's worth regarding of how much I'm paying. That's for sure. Where should I start to learn Laravel fast? You can go to laravel.com/learn. Bruno is saying the following. I'm thinking about documenting code because I have seen AI can understand code much It is one of the reasons why Elixir is considered the best option to AI to produce code. I haven't tried the elixir ever, so I probably should. What do you think about policies from companies do not share source code with AI? I think they are they are just uh making a huge mistake in the sense that they are they are compromising the productivity of their developers just because they don't want to share code with AI. They will change their minds anyway. Okay? like you cannot get away of not using AI. So that that that will be temporary. So website design is saying the following. If you use UID column, should I have should should you have a ID column? No. So the ID column should be a UID. Okay. Uh let's go here into create user stable. So every single time in the past where you would create the ID column, now you just use UID in primary. That's it. That's the only difference. Okay. Looks the same. Does it work fine with for lunch key relations? Yeah, it just works. No downtime, no downsides. Okay, it really just works. Susi saying the following. They use local models. That's a good point. So those companies who are relying on AI, they can effectively ow their local models and probably work that way. Mike is saying, "What happens if I want to order by ID?" You just order by ID. Just works. This is sortable, man. This is sortable. So, you can you can sort this stuff by ID. It really just works. Spicy noodle is saying the following. UID is terrible for performance. It used to be terrible for performance. That's the misconception of people. They think that EUIDs are terrible for performant, but they are not anymore since the version seven. Okay, so that's a misconception by the way. Okay, in Laravel using Azuids will give you a UID…

Transcript truncated. Watch the full video for the complete content.

Get daily recaps from
nunomaduro

AI-powered summaries delivered to your inbox. Save hours every week while staying fully informed.