Laracon EU 2025 :: Taylor Otwell // Laravel Update

In his Laracon EU 2025 keynote, Taylor Otwell reflects on Laravel’s 15‑year journey, emphasizing the framework’s productivity‑first ethos that fuels its rapid growth (300 k daily Composer installs). He recaps 2024 milestones—Inertia 2.0 acquisition, Flux UI for Livewire, a VS Code extension, and the upcoming redesign of laravel.com. Otwell announces Laravel 12, a non‑breaking major release, and introduces Laravel Nightwatch for monitoring. He unveils consolidated starter kits (React, Vue, Livewire) built with ShadCN components and a free tier of Flux UI. The centerpiece is a live demo of Laravel Cloud, a managed platform that automates deployment, serverless Postgres, Redis‑compatible cache, Cloudflare R2 object storage, auto‑scaling, hibernation, background processes, queue workers, multiple environments, custom domains, and a pricing model (Sandbox pay‑as‑you‑go, Production flat‑rate, and enterprise plans). Otwell closes with a call to ship, a challenge to the community, and logistical details for upcoming Laracon US.
Chapters
The man, the myth, and the legend. I give you Taylor Otwell. All right.
Welcome, everybody. Thanks for coming out to Laracon EU. It's good to be back. It's good to be here. I think this is like my, it might be my 10th, maybe 9th or 10th Laracon EU. So thanks for having me back. It's always a lot of fun. We've done some big reveals here at Laracon EU. Back in 2019, we unveiled Laravel Vapor, which is a big moment in Laravel's history. And hopefully we have some cool stuff to show you today. So thanks for coming out. Laravel. It's been about 15 years since I wrote the first lines of what would become Laravel, and when I first started writing Laravel, I didn't actually set out to, like, create an open source thing, you know, or an open source community or a framework that I was going to share with the world or any of that. I really just had business ideas, side project ideas, startup ideas that I wanted to build, and I wanted to build them quickly and ship them quickly, and so, of course, I needed to create my own framework to do that. Like every good programmer does. But as the months went by, the framework kind of became my passion project. It kind of became the goal in itself. And I got so carried away with just making it as incredible to use as possible, as easy to use as possible, to making it fast, making it feel really great. And after about 6 months of building it, I thought, hmm, maybe there's actually something to this Laravel thing. And decided to put it out on GitHub in the summer of 2011, and it was definitely not an overnight sensation. I think the first day I got 4 stars on GitHub, but I was actually super pumped about that, that anyone out there in the world would actually care about something I had built, and it became a journey that, you know, would change my life and change a lot of people's lives around the world. If you're here today, you're using Laravel. It's something I never expected. To happen. It's a position I never expected to find myself in. But of course, it's been a totally awesome journey with all of you building this framework. And after all of these years, we're still seeing incredible growth. So as of just this week, we're seeing 300,000 daily Composer installs of the Laravel framework, which is actually a 30% increase from this time last year at Laracon EU. So Laravel just keeps growing, and, you know, what is keeping Laravel relevant all these years later? And I think it's this right here. Laravel is really an ecosystem that's built for productivity, and when you enable people to ship super fast and super quickly, you know, that is something that sticks with developers. That's something developers love. Developers love to just ship code. and to build amazing applications. You know, things like authentication, queuing, scheduling, validation, all of these things are built into the framework, and you have one comprehensive and cohesive ecosystem, so you're able to build awesome full-stack experiences without patching together a Frankenstein of third-party libraries and code. And I think this is what has has kept Laravel so relevant all the way to 2025. It's just a laser focus on productivity. And, you know, as I look back on 2024, in a lot of ways it feels like the closing of a chapter for one era of Laravel and the beginning of another one. And even though the framework is approaching Laravel framework version 12.0, in some ways it feels like the last 10 years were kind of Laravel 1.0. as a company and as a community and as an ecosystem. And it feels like we're kind of entering a new era. And what does that mean? That sounds kind of scary when I say it that way. But what I think it means for me is that we're setting out on an ambitious new journey to hold ourselves to incredibly high standards for everything we do. We want to build absolutely world-class products, tools, and libraries for developers and companies to build with. And that goes from indie hackers all the way up to Fortune 500 enterprises. The Laravel development story needs to be really phenomenal from local development all the way to production. It's what this community deserves. I think it's what the framework deserves. And I think it's what all of us want out of this community. And when any new web developer decides they want to build a new web application, I want Laravel to be the obvious choice for building that application. You know, PHP's been around a long time, I think over 25 years, and many of us got into programming through PHP, but many of the people starting today, the younger generation, they often don't come into programming through PHP. And I think they're actually missing out on a lot of what Laravel has to offer because they simply don't know of how productive it can be to build with Laravel. So I'm trying to reposition Laravel and refocus on making Laravel the default choice for building new full-stack web applications. And I think we can do that. So we started working on this in 2024, you know, this goal of thinking incredibly, or thinking really big, thinking really ambitious. You know, what if we could make Laravel the default choice for all new web development? That's a crazy lofty goal, right? But we started moving the pieces around on the chessboard to try to make that happen. So let's do a quick recap of some of the things we did in 2024 to kind of start getting these pieces into place. It started at the very beginning. Thanks to some help from the team at Beyond Code, we made it easier than ever to get started with PHP. So a single command on the php.new domain will get you started with PHP, with Composer, with the Laravel CLI in 1 minute. You know, it's not, it's not really good enough for developers these days if it takes 30 minutes to configure your laptop for development. Developer expectations have changed. You know, standards have risen. And I'm incredibly thankful we have this new way to get PHP running on Mac, Windows, or Linux in 1 minute or less, thanks to the team at Beyond Code. We shipped Inertia 2.0. Any Inertia fans in the house?
Yeah.
Inertia is an awesome library that lets you build great full-stack applications using React or Vue on the front end, but pairing it with a Laravel backend, all in one monolithic application. It feels really great to use. It feels incredibly productive. Uh, Inertia 2.0 is now totally stable, uh, out for everyone to use. It has awesome features like deferred props, async requests, prefetching to make your apps feel really fast. It really lets you build world-class experiences with Laravel while enjoying the power of React or Vue on the front end. Inertia actually began as an open source project created by Jonathan Rennig, who is now a partner at Tailwind Labs, creator of the popular Tailwind CSS framework. And we've been contributing to Inertia for a long time. Joe Tannenbaum led the charge here at Laravel on developing Inertia 2.0. But I'm super excited to announce that last week we actually officially acquired Inertia into the Laravel company, and we can take the full control of pushing this awesome project forward as we move into the rest of 2025. And I'm super excited to officially bring this library in-house. And I just want to thank Jonathan for the years he spent shepherding the project, and we'll continue to push it forward with the full power of the Laravel team. At Laracon US, Caleb Porzio introduced Flux, an awesome new UI component library for Livewire applications with all the components you need to build Laravel apps, including buttons, modals, dropdowns, cards, and even layouts. In many ways, building with Livewire feels like a cheat code. It's so productive when you're just editing the code and it live updates on the screen and there's no build steps and there's no complicated, you know, scary JavaScript to write for those of you who prefer to write PHP. It lets you build really modern reactive applications. Just in your full-stack Laravel application. And now with Flux, it's easier than ever to get started building great frontend experiences with Laravel and Livewire. And we'll talk more about Flux in a little bit. We shipped a beta of our VS Code extension. So PhpStorm and JetBrains have done such an awesome job of building a really robust pro-grade editor for PHP. Many newcomers to PHP are coming from VS Code, the most popular free editor in the world. So we felt like it was really important to have a really great experience for this editor. And Joe Tannenbaum on our open source team here at Laravel developed this VS Code extension, which is now in beta. It has really great features like IntelliSense on Eloquent queries, clicking through to config definitions, or to your environment variables and Vue autocompletion and a host of other really convenient features. And I think this helps bring Laravel to a new generation of developers, many of which are already using VS Code. Our VS Code extension will go stable later this month, and I hope you give it a shot. I think it's just such a productivity boost to have one comprehensive extension that new Laravel developers can use and trying to piece— instead of trying to piece together dozens of other extensions to build a good experience. This lets you get it all in one comprehensive package. So that's a quick recap of some of the big things that launched in the last half of 2024. But we've really been cooking so much more that I'm excited to share with you. And in the next few weeks, you'll begin to see the full picture of the future of Laravel taking shape for the first time. And I really couldn't be more excited about it. And I feel like everything we build has to work together to create an amazing full-stack experience. It has to feel really cohesive, incredibly well-designed. So we've really been sweating the details with everything we've built over the last year. So what have we been cooking? First, we've been cooking up a brand new laravel.com, which is going to look absolutely incredible. The design is just really blowing me away. I think it's pretty fitting if we're moving into a new era of Laravel that, of course, it should come with a new marketing website at laravel.com. And I think it captures the power and productivity that Laravel offers. And David Hill, our head of design, he's actually going to be speaking tomorrow. He's going to give you more of a sneak peek into the new laravel.com. So I don't want to totally spoil his fun, but it looks really great and we can't wait to ship it to you soon. We've also been working on Laravel 12. My goal with Laravel 12 was to ship a major update to the framework that doesn't have any breaking changes. So I want every Laravel application to simply be able to composer update, get the latest framework edition, and not have to change your code at all. And I think we're gonna achieve that goal with Laravel 12 later this month. This— Laravel 12 is a more relatively minor release of the framework compared to years past potentially, mainly because we've been working on so many other big projects. But we are going to sneak in a few goodies for Laravel 12, of course, and it will ship later this month. We've also been working on Laravel Nightwatch, which after speaking to a lot of you today seems to be very highly anticipated. If you didn't see this, we unveiled this at Laracon Australia back in November. It is the future of monitoring Laravel applications. It gives you so much data and so much insights into what's going on in your application. Jess Archer, the Nightwatch team lead, is here, and she's going to be giving you a full demo tomorrow. So again, I don't want to spoil her fun, but it's really an incredible application. I remember the first time I started to see it come together, I was just blown away, and I think many others at Laravel were as well. So I'll let Jess tell you more about that tomorrow. We've also been working on new starter kits. So for the past 5 or 6 years, Laravel has had 2 starter kits. We've had Laravel Breeze, which is kind of our, our basic starter kit that gets you registration, login, password reset, and some settings screens. And we have Laravel Jetstream, which has all of that and like a couple extra features. It has 2-factor authentication and team support. To simplify the process of getting started with Laravel, we're consolidating that down into one starter kit per stack. So new developers into the ecosystem don't have to choose between multiple stacks, multiple starter kits, and sort of enter this decision paralysis that we don't really want them to have. And so when you create a new Laravel app using the new starter kits, you can choose, of course, to have an empty skeleton application like you can now. Or you can simply pick your stack, React, Vue, or Livewire. And our previous generation of starter kits didn't use any of the modern component UI libraries that are so popular today, things like ShadCN or like Flux. So we're changing that in our new starter kits to make it incredibly fast to build great front ends and full-stack applications. But rather than talk about them, let's just give the new starter kits a test drive. All right. So I'm going to jump out of my slides. Let's see here. Let's go to— yep, we're in our code directory. I'm going to make this a little bit bigger for you. All right. So let's create Laravel new React app. I'm going to pick the new React starter kit. We'll let that install. This new React starter kit is built with React 19. Inertia 2, TypeScript, and the popular ShadCN component library to make it super, super fast to build amazing front ends on Laravel. All right. So we'll let that install. All right. So our app is ready. We can just go into here and run composer dev. All right. And here's our application. So we can go to the registration screen. Of course, we have all of the authentication screens like login, register, forgot password. This is using ShadCN components built on React and TypeScript. Something I want to show you before I move on is, you know, in our previous starter kits, you were really locked into one kind of layout for your authentication cards or even for your application itself. And we've changed this in the new starter kits. So let me hop into the code. I'm going to throw this over here on the right. Let's open up my code on the left. We'll hide this. All right. So if I go into my auth layout file, you can see here at the top right now I'm on the simple layout. I can actually change that to the card layout. And now you can see we've kind of got this Breeze-style card for authentication layouts. But this is kind of cool. You can actually also switch to the split layout. And if I make this bigger, now you've kind of got this 2-column split design for your authentication card. So we're shipping a few different layout styles out of the box for you to customize. And all of this code lives in your application. There's nothing hidden or magical. So if you want to customize anything about this, you can just pop open the frontend code in your app, change the Tailwind classes, and customize it exactly how you want. All right, so let's bring this side by side again. Let's go ahead and sign up. All right, so here I am on my dashboard. It looks really great. It's totally responsive. You can see I've got this sidebar over here that collapses really nice. We can go into our settings, make this a little bit bigger. And we've got kind of the Breeze-style settings. We can update our profile, we can delete our account, we can update our password, and we can even change the appearance from light to dark mode or follow system settings. So it looks really great and it's really crisp and fast to use with Inertia 2.0 and prefetching. So let me go back to the dashboard and actually show you some of the application layouts. So again, when you were using Laravel Breeze or Laravel Jetstream, you were totally locked into the layout without a lot of customization. There was no way to kind of have different options of layouts in regards to where you start your application. So we've changed that. So let's go back to our code and open up app layout. And you can see right here at the top, we're using app sidebar layout right now. I can actually change that to app header layout. And now you've kind of got this header style layout with a top navigation bar and all of the content down below. I'll change this back to sidebar for now. All right. And then even within the sidebar style layout, if I come in here to app sidebar, here we can have, you can see our nav items and our breadcrumbs and things like that. But down here on variant sidebar, I can actually switch between different sidebar layouts. So I'll change this to sidebar variant inset. And now I'm not sure if it's coming through very well on the screen, but you can actually see the sidebar area wraps around this content area and is inset. It looks really great. And when you collapse it, everything looks good. So we've got the inset variant, or you can have the floating sidebar variant, which makes the sidebar float over here on the left and your content is over here on the right. Everything's responsive. Everything has light mode and dark mode support. And it just feels really smooth and really great.
All right.
And when you come into this code for the new starter kits, everything is incredibly well organized. And everything belongs to your application, just like Breeze. This was really important to me when building the new starter kits. I hate when code is hidden or feels magical and you can't customize things. With the new starter kits, you can dig through all of the frontend code. It's incredibly well organized and broken out into the proper components, and you can customize it to be exactly how you want it to be. All right. So, that's a quick preview of our new React Starter Kit, which will ship later this month. All right. Before we move past starter kits, I want to show you one more thing. First, our Vue starter kit also uses the ShadCN Vue port of ShadCN. So it really looks and feels honestly totally identical to the React starter kit on the front end. I literally could not spot a pixel of difference between the 2 starter kits. But what about the Livewire starter kit? Let's create one. Laravel new, we'll call this Livewire app. Let's pick Livewire Starter Kit. All right, we'll let this build. All right, almost wrapped up here. We can hop into the app. All right, Livewire app. Should just be able to composer dev. Let's open this up. I will go to register. See, it looks pretty good so far. Pretty similar. All right. And we're into the Livewire starter kit. Now you can see we've got pretty much the same functionality here. It looks pretty much the same as our React starter kit. Some subtle differences. Still got the light, dark mode, system mode, dashboard. Everything's really well organized. But this is using the Flux UI component library under the hood. And you might be asking yourselves, but Taylor, how can it use Flux UI if I have to pay for Flux UI? And that's the good news. You don't. Caleb has graciously agreed to make a base set of Flux components available for free. Everything we need for these starter kits. That includes buttons, cards, even the layouts, even modals, is going to be totally free at the end of this month. This will give you all the basic building blocks you need for building Livewire and Flux-powered apps, while Flux Pro will be reserved for really intensive components like charts, editors, things like that. But all of the basic building blocks of applications will be totally free in Flux later this month. And I'm super excited. I think this is going to really supercharge the Livewire community and being able to spin up a new Livewire starter kit and have these great, well-designed building blocks for your application is just going to be an incredible productivity boost for Livewire developers. So I'm super excited about that and super thankful to Caleb for making this possible. All right. So that's a preview of our new starter kits. Go ahead and close this stuff out. All right. Back in my slides. What else have we been cooking? Well, that's a big one. It's one— As you probably guessed, we have spent some additional time working on Laravel Cloud, um, since we unveiled it at Laracon US in Dallas last year. With Laravel Cloud, we really set out to build the best deployment platform, an infrastructure platform for that matter, that's ever been created for Laravel, and not just for Laravel, but for PHP in general, building an experience that was far beyond anything that has existed before. And like I said earlier, developer expectations have changed. It's no longer good enough to wait 15 or 20 minutes while your server builds to get your application live. Developers just want to ship. I just want to ship. And I think most of you do too. In 2014, Forge made it super easy to ship and manage Laravel applications. And we're actually excited to continue evolving Laravel Forge as well. We have a lot of really awesome new ideas and new features in the pipeline for Forge. And we at Laravel actually remain fully committed to the idea that a developer should have the freedom to choose to self-host their application on a VPS provider of their choice using Laravel Forge, or have a fully managed platform. A fully managed infrastructure on Laravel Cloud. So Forge isn't done yet, not by a long shot, and we hope to unveil a substantial update to Forge later this summer. But a year ago, we set out to do something pretty ambitious. We set out to become the first open source framework to offer both of these types of platforms. We challenged ourselves. We said you should be able to go from local development to production in 1 minute or less. That was the first conversation we ever had at Laravel about Laravel Cloud. And as we saw in our first preview of Laravel Cloud at Laracon US, we hit that goal, and I'm incredibly proud of that. But Cloud has evolved a lot since Laracon US, a whole lot. And I'm excited to show you what Cloud looks like today. So let's go ahead and dive into Laravel Cloud. All right. Oh, I need a new Chrome window.
All right.
Let's go to Laravel Cloud. Here we are on the Laravel Cloud sign-in page. Go ahead and log in. If I can type my password correctly. All right. And here we are on the cloud dashboard. This is where I can see an overview of my applications, my recent deployments, my recent commits. And all of these projects live within my cloud demo organization up here at the top left. So I can organize my projects by organization. So I could have a side projects organization or my Laravel organization or here my cloud demo organization. And it's really great. I can jump into any of these applications, see their environments and their recent commits, and get an overview of what's happening with them. I can even jump between applications using our new command palette. So if I want to jump into Beep, I can just go to Beep in the command palette. Or if I want to jump over to the other application, I can just pick that in the command palette. It's super fast to navigate. We tried to make cloud incredibly productive. All right. So again, we're in the cloud demo project or demo organization, but let's start totally from scratch. Let's jump into an empty organization and see what it's like to deploy a fresh Laravel application out to cloud. So So we're going to use the Ship PHP organization. All right. So let's pick new application. And I want to show you just how easy it is to get started on Laravel Cloud. It's unlike anything that's been built before for PHP. I've already linked my GitHub account to Cloud. So I'm just going to pick the Laracon EU demo. Why don't I just call this Laracon EU demo like that? We'll put it in US East, but we actually have 4 regions right now with more to come probably before launch. Right now we're in Ohio, Frankfurt, London, and Singapore. All right, so I'm going to pick US East and hit create application. Once that application's created, it will create an environment for that main branch. And here I can get an overview of my entire stack and customize it and build it how I want. So you can see I've been allocated a small compute cluster for my app. I've got my edge network and domains out here, which we'll dive into later. But really all I need to do is hit deploy. All right? And Laravel Cloud will start packaging my application and deploying it to our managed infrastructure. I don't need to do anything else if I don't want to. Laravel Cloud is fine-tuned for Laravel apps. So it knows exactly how to build, deploy, run, scale, and secure Laravel apps in a way that's never been built before. All right. So we come through here. You can see that it's installing my Composer dependencies. I'm sure many of us have seen this output many times. All right. It's getting all that done. Looks like my build is finished. So now it's about to move on to the deployment phase where it's actually rolling this app out onto our infrastructure. Laravel Cloud runs on AWS. It's fully managed. The infrastructure team has spent so much time perfecting this platform. to make it robust and secure and scalable for your applications. All right, so it looks like our app is deployed. So I'm gonna go back to my environment, and you can see right here we've been assigned a Laravel Cloud domain. Every application on Laravel Cloud gets its own Laravel Cloud domain that you can share with your teammates or use to collaborate. Boom. Here's our new Laravel application. It's already out and running on Laravel Cloud. All right. So that was really fast. That felt really easy. What else can we do? Okay. So let's close this out. Now, most Laravel applications, you know, they're full stack. They have a database, maybe they have a cache, maybe they have storage. Let's go ahead and start adding these pieces to our application. So this demo app I have out here is actually using that new Livewire starter kit we saw just a few minutes ago. So I'm gonna need a database and a cache, and we'll look at storage later. So to add a database, I just go right here to this canvas view of my infrastructure and I hit add database. I don't have any databases in this organization yet, so I can just go ahead and create one right from here. I'm gonna choose Laravel Serverless Postgres. This will autoscale based on the needs of my application. So I don't really need to worry about thinking too hard upfront about how much scale I need. The database will scale up. as much as I need so that I can just focus on building my app. All right, I can name this cluster if I want to. That default name sounds fine. And then within the cluster, you can create multiple databases, um, for each app that's using this overall database cluster. We'll just call this main. That's also fine for now. We could customize some additional things about the database, like the region or how long it will hibernate, or the amount of time that can pass with no activity before the database will hibernate. What this means is, you can see I've got 300 seconds here. If our database doesn't receive any queries for 5 minutes, it will actually go to sleep, and the next time it's queried, it will wake up. And these databases wake up in a couple hundred milliseconds. It doesn't take long for them to wake up. But what's awesome is while they're sleeping, you don't pay for compute. That makes Laravel Cloud and serverless Postgres no-brainer for side projects, staging environments where you can be really cost efficient while your application's not being used. You're not paying for the compute time. It's really awesome. All right, I'm gonna crank this up to, let's do 1800, which I think is like 30 minutes. And we can also choose or customize the auto scaling range. I'm gonna bump this up just a little bit to give it a bigger range to scale between. All right, so I'll save this and now we'll just hit create database cluster. And that database is being created now. And now it's already created. That's how quick it is to make a new serverless Postgres database on cloud. Let's go ahead and add a cache while we're in here. New cache. Laravel Cloud key-value store is compatible with the Redis API. So that's great. We can pick what size we want. 250 megs is fine, but we could scale it up if we want. And we can again pick our region, and I'll just hit create cache. All right, I've added a database and a cache. So you can see here I've got unsaved changes to my infrastructure. I'm just gonna hit save and deploy. All right, and Cloud is gonna start rolling out a new deployment with our new infrastructure in place, our new database and our new cache. And you notice I never had to mess with environment variables. I never had to mess with config variables. Laravel Cloud is really built and fine-tuned for Laravel, and all the environment variables we need to connect to this database and this cache are just automatically injected into the application. All right, so let's let this deployment roll out. All deployments on Cloud are rolled out with zero downtime by default, of course. So as this is going out, even building an entirely new infrastructure, none of our customers are going to experience downtime. All right, looks like we've made it through the build phase. Let's go ahead and go down here to the deployment phase. Looks like it's wrapping up. You can see it ran my migrations because we attached that database and now it's rolling out to our new cluster. All right, looks like that is done. Great. So let's just hit visit. And now we should be able to register with the application since we have a database.
All right.
Thank you. All right, so we've got our database. You can see over here on the— let me make this a little bit bigger. You can see over here on the left, I've got a few tabs where we can try some of the other new features. Let's click the cache tab. And you can see we've got this loading thing while it pulls something from the cache. And now if we hit this route again, it doesn't have to do that until the cache expires, which it will in a few seconds. Our cache is busted. So we're able to interact with our cache. Zero configuration. Zero environment variable changing. Everything just works. Our database and our cache is in place. Now let's go back to our Laravel Cloud dashboard. And here we have that overview again, that canvas view of our infrastructure. And let me show you a few cool things about these resources we've added. All right, so if I go here to database, I can hit view credentials. I can do a few other things like replace or detach the database. For example, if I click detach here, it's prompting me to save and deploy that. Of course, we don't want to do that. I'm just going to reset that. It pops right back in. We can also go to view credentials. All right, so this is where it shows me the credentials for my database in this kind of list view, or I could get them as environment variables. Or let me show you this, which is really cool, a deep link where I think if I click open here, it will actually open this database in TablePlus. So you can see there's our 2 users up there, taylor@laravel.com, which someone stole from me, and taylorotwell@gmail.com. All right, so it's really great. And the same for cache, right? I can view credentials, I can replace, or I can detach the cache. All right? And again, with a deep link that would just pop open TablePlus directly to that Redis-compatible database. It's really easy to use.
All right.
All right, so we've got a database and cache. Let's go ahead and finish out this kind of resource story by adding some object storage. All right, so I'm gonna hit add bucket. I can just create a bucket right here in Laravel Cloud. I never have to leave cloud for any of this, for creating a database, for creating a cache, for adding a bucket. It's all right here in the platform, all in one cohesive infrastructure deployment pipeline. All right, so I'm gonna pick the bucket type, which is Laravel Object Storage. I can give the bucket a name as well as, pick the visibility for this bucket. Laravel Object Storage buckets are S3 compatible through a partnership with Cloudflare R2 behind the scenes. So this is a really robust platform for your object storage. Once I hit create bucket, let that create. All right, and this is really cool. This shows how Laravel Cloud is very fine-tuned for Laravel. So once I create the bucket, it's asking me what name do I want to assign to the disk that my Laravel application will access this bucket by. So you may know if you build Laravel applications in your config file systems file, there is an array of disks where you give them a name and it has all of the kind of config for that disk, how to access it on S3 and so on. And this lets you actually do that right here. And so when I specify this disk name, that's what cloud is going to inject into my Laravel app. So I can just do storage PUT or storage GET using this disk name. Private is fine for now. So I'll hit add bucket. And this looks good. You can see that it's my default bucket in my Laravel application. And I'm just going to hit save and deploy. And again, it's going to roll out a new deployment of my application with zero downtime. All right. While this is deploying, let me jump around to maybe some of these settings we've skipped over so far. These are my environment settings. An application can have multiple environments, which we'll see later. So I can rename the environment. I can even give it a new color. For example, if this is production, maybe I want that to be red. So I'm going to change that to red. I can change the Git branch. I can change my PHP version, my Node version, my HTTP timeout, my graceful shutdown timeout, which was how— which is how long Laravel Cloud will keep your old deployment around while your queued jobs finish up. or while any incoming requests that haven't been completed yet are processed. I can customize my environment variables. I can see all of the environment variables that Cloud is injecting for me, which I'm not going to reveal live here on stage. And of course I can delete the environment. But let me show you something cool about environment variables while I'm in here. If I hit reveal secrets and jump into this, let's say I try to override a variable that Cloud was injecting, so like app debug, for example, you can see that it warns me live that I'm overriding an injected variable. It's sort of just a hint for like, hey, I hope you know what you're doing here because you're overriding something we think your application needs. It's really great.
All right.
So that's some of the settings. Let's go into— yeah, let's go into our application settings. So here I can actually set a photo for the application as well as change a few other things about it. I think I've got a little Amsterdam logo here. All right, we'll save that. I can also change my default environment and just even delete the entire application if I want. All right, so let's go to my environments and go back to my main environment. Looks like our deployment is done. Yep, it looks like it is. So let's go ahead and visit our app again. We'll go to the dashboard and I've got this storage route. And let me pull up the code for this so you can see what, what it does. laragon-eu-demo. We'll go into the routes. And if we look at storage, you can see that all I'm doing is doing storage disk put with this image, which I've got stored in the application. And then I'm just gonna return a temporary URL. Remember, this is a private bucket, so I need to create a pre-signed URL to allow access to that image. But what I want you to see here is that I'm just calling storage disk. And because Cloud knows about Laravel and it knows this is my default disk, this is just available to me. I don't have to have any different configuration or any knowledge that this is even running on Cloud at all, right? This is exactly what it would look like during local development, which is really great and really convenient. All right, so let's hit the storage route. That's gonna put the file on our disk, on our bucket. Then we can hit view photo. And here we've got that photo, which was signed with a temporary URL, which we should see expiring. And there it goes. So it's just that easy to attach a storage bucket. So just this easily, we've had an application deployed, a database, a cache, a bucket, all with zero configuration, with zero environment variables we had to tinker with, with zero servers we had to think about, rolling out deployments with zero downtime. It's incredibly productive. All right. So what else can we do with this environment? Let's jump through some of these other tabs. Let's check out the commands tab. So here we can actually just issue arbitrary commands to an available replica of our application. So for example, I could do php artisan list. It's going to fire that off to an available replica, and I'm going to get the output. Okay? Really simple, really easy to use, really convenient for when we just need to run a one-off artisan command against your application that's running on cloud. We can also view our application's logs. So I can come in here, I can view my recent application logs, I can search my logs, I can even look at my access logs to see the activity that's happening in my application. And of course, Nightwatch will give you an even deeper insight and overview of what's happening in your application. All right. We've already looked at settings. Let's go back to our environment. Okay. So we deployed our application, but what if we want to scale it? I just deployed it to the default instance compute size, which is small. What if our application has a lot of traffic? All we need to do to adjust our scaling settings is click on the app, and we get this nice flyout window where I can customize everything about the scale of my application. All right, so right now I'm running on a small instance. Let's go ahead and bump that up to medium. That gives me more CPU, more RAM. Then let's, uh, tinker with these auto scaling settings. So let me walk through these. So by default, my auto scaling setting is set to none. That means my application is essentially running on a single replica, or you could think of it as like a single server if you were thinking in terms of Laravel Forge. But I can actually pick custom auto scaling and choose a range of replicas that I want Laravel Cloud to auto scale my application between as demand increases. This is really convenient because it allows for predictable billing. I know how much compute I'm willing to allocate at a maximum and at a minimum, which lets me have predictable performance but also predictable billing. Or for the most demanding applications, I can go full unlimited auto scaling, which will scale all the way up as much as needed to handle the demands of my application. All right, for now let's use custom and, uh, yeah, we'll keep it between 2 and 4. And down here, since Cloud is fine-tuned for Laravel, I can even do really nice things like enable the scheduler or enable Laravel Octane. It's super easy, and all I need to do is just deploy and everything just works. All right, I'm going to turn that off. I could also configure hibernation here. So hibernation, similar to what we saw on the database side, can also be applied at the application side. So if my application is not receiving traffic, Laravel Cloud will put it to sleep, and I don't pay for any compute time while the application is sleeping. This makes it absolutely a no-brainer to throw every side project, every staging environment on Laravel Cloud. When it's not needed, it'll hibernate, and when a request comes in, Cloud will wake the application up and serve the request.
All right.
I'm going to leave that off for now. So once we've picked a new auto scaling strategy, all we need to do is save and deploy, and cloud is gonna roll that out to our increased replicas, total new infrastructure cluster, all with zero downtime in roughly 1 minute. While this is deploying, I wanna show you an app that is hibernating. All right, so let's jump into a different organization. Let's jump into— Let's go to the next one. Cloud Demo, and let's go to the Swipple organization. And you can see right here, this application, see how it's got that hibernating symbol in the top right of its main environment? And watch what happens if I come into this environment. Up here at the top, you get this really nice hibernating bar that shows you the status of the application. And if I hover over this, I can see for how long my application has been hibernating, and it just woke up. So I can go ahead and visit that application and boom, it's online. And when the application goes back to sleep, we'll know that it's hibernating. So you get a quick overview of what's hibernating and what's not. All right, let's jump back into our Laricon EU application and into our main environment. Has our deployment finished? Yep. Looks like our deployment's totally done. So our application is now running on between 2 to 4 replicas. on Laravel Cloud, and we increased the maximum CPU and RAM allocated to our application. All right. What else can we do with cloud? Queued jobs. Yes. Important part of Laravel. So if you use Laravel, how many of you use queued jobs in your application? It's probably one of the most popular features of Laravel. So if we go back into our application, Let's go to the dashboard, and you can see here I've got this queue tab, and I've kind of got these pending transactions out here, and they're staying pending because we don't have any queue workers. And what's happening behind the scenes here is when I hit process transactions, it creates 50 transactions in the database and dispatches a queue job for each transaction that just marks the transaction as processed. But you can see all of these are staying pending because we don't have any queue workers. So let's go ahead and fix that. So when it comes to queue workers on cloud, you have 2 options. You can run the queue workers on the same replicas that are serving your app. So this is really convenient. You don't need to spin up dedicated worker clusters just to process a few queued jobs. I can just pop open my app, go down to the background processes section, hit new background process. I get this really nicely designed overview of all of the available Laravel queue options. I don't need to customize any of this because I'm just using the database queue, and I can pick how many instances of that process I want. Let's do 3, and I'll hit create background process, and then save and deploy it out to my infrastructure. It's super easy. All right, so we're gonna let that build. Once this rolls out, we should see those pending transactions change to processed.
All right.
It's building our application. And it looks like it's about to roll out the infrastructure. All right. So we should see these start changing to processed. Really, really soon. And then once we get our queue workers rolled out on this app instance, I'll show you a way for the application with the most demanding queue needs to spin up dedicated worker clusters to handle your queued jobs on separate instances. All right, boom, they're processed. So we've got our queue worker running, the application's deployed. I can make more transactions and we should see them processed live as the queue workers work the jobs. Okay? Super simple. So that's option 1 for running queue workers on cloud. Like I said, we can actually add a worker cluster right here on our infrastructure. This lets you build custom worker replicas with their own scaling settings, their own CPU and RAM settings that are totally separate from the replicas that are serving your web traffic. All right? So this would be like the equivalent on Forge to standing up a web server and then maybe a worker server that processes all your queued jobs. All right, so let's make this a medium instance. We'll do, let's say, between 3 and 5 replicas, and it will autoscale these queue replicas based on how much CPU and RAM our machines are using. And of course, we want to add a background process, and we'll put, let's say, 3 queue work processes on each replica.
All right.
Then all we need to do is hit save and deploy. Did I hit it? Oh, no. Oh, I didn't name it. So you give each worker a name. I'll just call this one queues. You can have multiple worker clusters, as many as you want. So giving them a name kind of helps you differentiate what you're different worker clusters are doing. All right, so there's that new cluster, and that's gonna start rolling out again with zero downtime. And now we're gonna have workers running on our app cluster and on our dedicated worker cluster. So we should have quite a few queue workers running now. All right, so while this is deploying, let's look at one more tab we haven't seen yet, which is metrics. This particular app is pretty new, so we don't have a lot of metrics. So again, I'm gonna jump into another application where we already have some data. Let's jump into Ladderly. All right, so this has been receiving traffic. I'll jump into the main environment and hit this metrics tab. And you can see here we've got a few different metrics charts. We can see our edge network, uh, responses. This is sort of like the 400s, 500s, and successful, successful responses we're seeing coming into our application. You can see this application looks totally healthy. We just have a few 400s, but mainly all successful. Here we can see our CPU usage over time. Okay? We're using not much CPU, roughly 15%, and our RAM usage over time. So Laravel Cloud runs Laravel apps really efficiently. You can see this Laravel app is just using 65 megs of memory on average. Okay? So it's really efficient, really fast. All right? So that's the metrics tab. Let's jump back into our Laracon EU application. All right. And it looks like our new worker cluster has actually rolled out and everything should be running. Let's go to visit dashboard queue. I should be able to make some more transactions. All right. That looks good. Workers are still running. All right. So we've got a dedicated worker cluster. All right. So let me show you one thing that's really cool. You can see how we've got quite a, a sophisticated application going here now. We've got our edge network, we've got our app, we've got a worker cluster, we've got our database, our cache, our bucket. I really haven't configured anything in the Laravel app. It all just works. But since this is getting kind of crowded, I can actually switch from detailed view to compact view and just get a quick overview of my entire infrastructure on cloud really quickly and really easily. And I can still come in here and edit the database, edit the cache, but it gives me a quick overview of my entire topology of my infrastructure. All right, I'll pop it back open to detailed view. Whew.
Woo!
So that's a lot. There's a little bit more. Bear with me for a few more minutes. We've got our application. What if we wanna add a new feature to the application? We wanna start something on a new branch. How can we deploy that to cloud? Let's go to our terminal, go to our demo app, and let's just check out a new branch called new-feature. Pop this open in good old trusty Sublime Text, and we'll add a route up here. Let's call it new feature. We'll just return h1, hi Laricon. All right. So that looks good. We'll commit that new feature and push it to GitHub. Now, what if we want to try out this new feature on Laravel Cloud? So our teammates can play with it. We can see if it works really great before we ship it to production. How can we do that? It's super easy. So each application can have as many environments as you want, and each environment is totally separate from the others in terms of infrastructure and compute. So let's create a new environment. I just pick my branch, new feature. It's already been live synced into cloud. I can give it a name and a color, but I'll just go ahead and hit create environment. And here we are with a brand new infrastructure canvas, and I'm just gonna hit deploy to get this new feature live as quickly as possible. I can easily swap between environments up here in the navbar, just like I can swap between applications and organizations. It's really easy to navigate. All right, so now I'm back here on my new feature environment. Again, I can customize all of the settings for the app, the compute, the auto scaling, I can add a database, but I can also add an existing database within the organization. So we previously created the Laracon EU demo cluster. I can just attach that to this environment if I want to reuse it to play with maybe staging data or data that's already seeded. It's super easy. And the same with cache and object storage. Looks like this new environment is in the deployment phase. So we should be getting our own cloud domain for this environment right now. And there it is. So each environment gets its own unique cloud domain that lets you access it separately from all other environments. And we should be able to hit this domain, and then we should be able to go to new feature. Hi Laragon, which of course doesn't exist over on the other environment. So it's super easy to just spin up new environments. It just takes a few minutes to throw one out on Laravel Cloud, let your team play with a new feature, and see how it feels before you ship to production. The last thing I want to demo for you on cloud before we wrap up is actually going to production. So let's go back to our main branch and let's put a custom domain on this app that makes it real, right? So let's go ahead and hit add domain under our network. And I can just do laravel-cloud-demo.com, which I've already bought, and hit add. It's gonna ask me a couple things. It's gonna ask if I want wildcard subdomains. So Laravel Cloud supports that, or it asks me if I want to redirect from www to the Apex domain. Both these defaults make sense for my app, so I'm just gonna hit add domain.
All right?
And then it gives me a couple of DNS records that I need to go and add to my domain registrar. And this will actually bring our custom domain up live on cloud. I've actually already added these IP addresses to my DNS, so they should be verifying relatively quickly. While that's verifying, I'll go into the org and show you a couple settings. So of course, we can have our general settings, but you can also add members to your organization. And we'll talk more about how many members you can have soon. But you can collaborate on Cloud really easily. You want your whole team to be able to use Cloud, to be able to see your infrastructure, to be able to review your deployments, and to be able to create environments. All right. And just how we saw it was super easy to create new environments, you can imagine what we could do with this in the near future. Already on our roadmap, and I'm sure you're already thinking about it, the ability to have automatic preview deployments is something we can't wait to explore later this year. All right. So I'm going to go back to my main environment. It looks like my domain is already verified. You can see we've got laravelclouddemo.com, and we're actually live with a custom domain just that easily. All right. That is a really full walkthrough of Laravel Cloud, and I could not be prouder of the Laravel team for the amount of polish, and consideration and thoughtfulness that has gone into this platform. Every time I use it, I'm honestly just blown away by how magical it feels. Even on the plane ride over here, I threw an application on Laravel Cloud and it took under a minute to get it out live with my own Laravel Cloud domain. I believe this is absolutely game-changing for Laravel and I hope game-changing for PHP as a whole. And heck, even game-changing for web development as a whole. I love it. Laravel is the most productive way to build full-stack web applications. I genuinely believe that. And I feel like this puts it— this makes it so accessible to build your Laravel app and get it live to the world. All right. When can you have it? I'm about to answer his question. This is the question I'm sure many of you have been asking. And I'm super pumped to announce that in just 3 weeks— We are going live with Laravel Cloud. On February 24th, that's exactly 3 weeks from today, we are launching the new laravel.com, We are launching Laravel Cloud. We are launching Laravel Starter Kits. And we're launching Laravel 12. It's the biggest day in Laravel history, and we couldn't be more excited to ship it to you. I know another question you're probably asking is how much is it going to cost? Let's go over that. So let's start with our sandbox plan. Our sandbox plan has No monthly fixed fee, $0 per month fixed. You just pay for what you're using. But what's great is because of hibernation, Laravel Cloud is super accessible. So you can hop on the platform, play with it, create a demo project, throw all of your side projects out there, let them hibernate while they're not being used. You only pay for what you actually use. 3 users can be included in your organization on the sandbox plan. Flex Compute usage pricing starts at just a little over a half penny per hour, which comes out to approximately about $5 a month. Serverless ProScript starts at 4 cents an hour. Caches start at just about a penny an hour, and object storage starts at 2 cents per gigabyte. This is our usage-based pricing for the Sandbox plan. Our Production plan is just $20 a month. Plus usage discounts. It comes with custom domains, auto scaling, access to larger replica sizes, increased log retention, and additional organization users. And for the first time, we'll be focusing on business and enterprise plans with unlimited auto scaling, dedicated compute clusters, advanced networking, cross-product discounts with things like NightWatch, SOC 2 and support SLAs, which we feel like— I'm super happy with how Laravel Cloud is both extremely accessible, the most accessible product we've ever built pricing-wise, for our indie hackers, for our dreamers, for our tinkerers, but also scales to enterprise grade. for the businesses that depend on it the most. I feel like this is a new beginning for Laravel. And in 3 weeks, you know, the painting we started painting a year ago starts to really come together. A complete web development ecosystem that this community deserves, that I've always wanted to ship on myself all those years ago. We have an incredible backend stack with the framework. We have an incredible frontend stack with Livewire and Inertia, and I can't wait to get it in your hands. There's gonna be more work to do. This is just the beginning for a new era of Laravel, for Laravel Cloud, for Laravel Nightwatch. We're gonna iterate on these things, but I'm incredibly proud of where they are today. And it begins in 3 weeks. But I want to leave you with a challenge. We must ship. And that goes for all of us. This year we're embarking on a new journey together. And 2025 will be a historic year for PHP. It'll be a historic year for Laravel. And I hope it'll be a historic year for you. And I challenge you to create something. To create anything, just to dream big. And we want to give you the tools to ship it. You can ship a package, you can ship a video, you can ship a blog post. It doesn't have to be big. I think the most popular function in Laravel has to be the dd function. It gets used more than any other function. It is tiny. But it's try to ship something. What can you ship this year? I believe that giving people the most powerful and productive web framework is an incredible privilege, right? Enabling someone to create web applications quickly and to ship them to the production, to ship them to their friends, to ship them to their customers, uh, is life-changing in many ways. The ability to create something out of nothing, seemingly, um, out of your own mind and ship it to production. It's incredibly inspiring to me. And Laravel Cloud and where we're going with Laravel, I feel like, is the culmination of that vision that I've had for Laravel for so many years. And, you know, I want to tell you a quick story from Laracon US before I wrap. After I first unveiled Laravel Cloud, I was kind of in the crowd mingling, and this guy comes up to me with a journal, and, you know, he has a pen, and he's like, hey, I want you to write me a message. And I'm like, okay, this is— A little awkward, but I'll just roll with it. And he says, I was recently laid off. And what would you write to someone that was recently laid off? And my mind was just blank for a second, right? Just like a deer in headlights. But then I took his journey or his journal and I wrote, I believe in you, in the journal. And that's really the message I want to leave with all of you as we ship this new platform is, I believe in you and I believe in us as a community to build really amazing things. And we've been working super hard on making that possible for you.
Thank you.
There is one last thing. I don't want to keep you too much longer. If you're enjoying Laracon and you want to go to more Laracons, we actually have a date for Laracon US, and we have a city for Laracon US. On July 29th and 30th, we'll be in Denver, Colorado. You can go to laracon.us right now, which is running live on Laravel Cloud, and tickets are on sale today. So I hope to see each and every one of you there.
Thank you.
Thank you, everybody. I'll be at the after-party. See you there.
Hello again.
How long have I been up here?
Hmm?
Oh, just an hour, I guess.
Thank you. Oh, you're cool. Don't worry. Don't worry. You're cool. I have questions. So first of all, thank you for Laravel. Thank you for Laravel Cloud. It's a game changer. And also, thank you for ship Laravel Cloud not on Valentine's Day. Because we're about to ruin a lot of You're welcome. A lot of revelations, so thank you. At least have the 10 days period. Okay, so 3 quick questions—
no, 4.
So Lucas is asking, what about— wait a second— what about custom PHP extensions if you need to install on the server?
Yeah, that's something I didn't get into today. So we tried to bundle, of course, every common PHP extension you could use, including some image manipulation libraries. And then our thinking is we'll probably have toggles, kind of like I had the scheduler and Octane toggle, toggles for other kind of less common PHP extensions. And, you know, we'll depend on you to give us some feedback on what extensions people are using. We think we kind of know from running Laravel Forge and Vapor, but, you know, we'll add more as there's community demand.
So like I have a preset for the most used?
Yeah, yeah, basically that's how it works. Yeah.
Cool, thank you. So Mari Yu is asking, she's asking, do the new starter kits use Fortify or, and/or have support for the 2-factor authentication?
Yeah, the new starter kits are more like Breeze in the sense that all the code lives right there in the starter kit. So, The starter kits are actually not packages. They're just GitHub repos like laravel/react-starter-kit, laravel/livewire-starter-kit.
Mm-hmm.
Uh, that makes it really easy to just see the commit history of the starter kit, to send PRs to the starter kit. Um, but they don't use Fortify under the hood. They just have a, a register controller, a login controller. You can edit the code right there. We are gonna be adding 2-factor authentication support as well as exploring the, uh, teams functionality that was in Jetstream. Into the starter kits as well.
Great, great news. Zakaria is asking, does it turn opcache by default?
Yeah, PHP opcache is enabled by default on Laravel Cloud.
Woohoo! Thank you for that as well. And the anonymous user, he's asking, Does Laravel Cloud have a toggle for please don't bankrupt me?
Yeah, that's kind of what our, our auto scaling strategies were about. So when you have no auto scaling and you have a single compute, you know how much it costs at maximum per month. Um, or you have a custom range of a minimum and maximum, so you still have a predictable bill. And then on unlimited auto scaling, we'll be looking into billing alerts and thresholds where you can customize how much you want to spend. But if you're budget conscious and you want a maximum amount of spend, probably best to use a custom replica range.
Okay. Thank you. That'll be all. Big applause.
Thank you, Taylor.
More from Taylor

Everything New with Laravel and Cloud | Taylor Otwell Keynote at Laracon US 2026

In conversation with Taylor Otwell: The India Comeback - Hosted by Vishal Rajpurohit

Introducing Laravel VPS & Major Updates to Forge | Laracon Keynote 2025 (Taylor Otwell & Team)

Introducing Nightwatch for Laravel | Taylor Otwell & Jess Archer Keynote at LaraconAU 2024

Laravel Cloud, Inertia 2.0, VS Code Extension, & OSS Updates | Taylor Otwell Keynote | Laracon US

Taylor Otwell "Laravel Herd, Laravel 11, Laravel Folio, Laravel Volt" - Laracon US 2023 Nashville



