Fusion: Write PHP inside your Vue and React components

February 14, 2025

Aaron Francis and Try Hard Studios just officially launched Fusion! "Fusion is the simplest way to combine your modern JavaScript frontend with your Laravel backend. Send state from your backend to your frontend, declare methods on the backend that can be called without API endpoints from your frontend. Fusion simplifies the process of working with JavaScript in Laravel, while still giving you full control and the full power of a batteries-included backend." Read more about Fusion here: https://laravel-news.com/fusion Chapters 00:00 The Genesis of Fusion: A New Approach to Development 05:59 Bridging the Gap: From Frontend to Backend Development 09:37 Navigating Backlash: Community Reactions to Fusion 11:09 Structuring Functions: Best Practices in Fusion 14:07 Testing in Fusion: Ensuring Quality and Reliability 16:48 Future Roadmap: What's Next for Fusion? 18:13 Security Considerations: Keeping Fusion Safe 22:26 Component Actions: Enhancing Functionality in Fusion 24:13 Tooling Needs: Improving Developer Experience 27:19 The Vision for Fusion: A New Era for Laravel @laravelnews on social: Instagram: https://www.instagram.com/laravelnews/ Twitter: https://twitter.com/laravelnews Facebook: https://www.facebook.com/laravelnews LinkedIn: https://www.linkedin.com/company/laravel-news All our screencasting gear: https://laravelnews.notion.site/Screencasting-f61e098852bf449c963473426841bfc4?pvs=25 ➫ Business Inquires: hello@laravel-news.com ---------------------------------------------------------------------- JOIN OUR WEEKLY LARAVEL NEWSLETTER 👉 https://laravel-news.com/newsletter ----------------------------------------------------------------------

Transcript

Aaron Francis
00:00:00 – 00:00:19
Introducing, I have a name for you, Fusion. Fusion is the library that I'll be introducing to you today. It is a new JavaScript and Laravel library. And I know you're thinking, Aaron, we have a first party JavaScript and Laravel library called inertia. No longer third party, first party.
Aaron Francis
00:00:19 – 00:00:33
Yes. This does not Fusion does not abolish inertia. It fulfills inertia. So this is, this is my vision for what if we took inertia way too far? What if we just took it, like, five steps beyond what is reasonable?
Aaron Francis
00:00:34 – 00:00:36
That is fusion. So, Aaron,
Eric Barnes
00:00:38 – 00:00:45
what a perfect intro. Oh, man. Like, I'm just curious. Like, why like, where did this come from? Like, you were just like, hey.
Eric Barnes
00:00:45 – 00:00:54
You know, kind of, you know, a nurse's phone has enough to do. Good. But yeah. You know? I've got 14 products, four kids, you know Uh-huh.
Eric Barnes
00:00:54 – 00:01:03
Seven podcasts. But I really want to make this new thing and spend my life creating this app or this project. That's a great question.
Aaron Francis
00:01:03 – 00:01:25
It is a great question. Yeah. So it came from so, you know, my, cofounder Steve, he is a he's a JavaScript guy, like, through and through. He's a Vue guy, so he does fit in well in the Laravel community because we love Vue JS. And he has picked up Nuxt and really likes Nuxt, and that's like their, you know, meta framework.
Aaron Francis
00:01:25 – 00:01:38
Whatever a meta framework actually is, that's what their meta framework is. And so Steve and I are working together on all these projects. We're building out the course platform. We're building out all this stuff. We're using inertia because he's like, hey.
Aaron Francis
00:01:38 – 00:01:46
I'm super fast with Vue. Livewire seems cool, but, like, I'm a Vue guy. I've never really written PHP in my life. And I'm like, that's great. We have Inertia.
Aaron Francis
00:01:46 – 00:02:03
We're so lucky in this community to have these two super viable, front end esque options. So we'll use inertia and view and Laravel. It'll be totally fine. So we're working on it, and Steve is constantly like, hey. How do I get data into this view template?
Aaron Francis
00:02:03 – 00:02:17
And I'm like, oh, well, you know, you go you define a route, and then you define what your props are, and then you send them down. And then on the front end, you gotta define your props, and then you can receive them. And he's like, what? Why am I doing all this crap? And then, you know, his his next question is like, okay.
Aaron Francis
00:02:17 – 00:02:30
How do I mark that a user has finished a video? So, like, you know, we're listening to these video events. We wanna fire off, like, video is done, like, mark it so that they the UI changes. And I'm like, no problem. You gotta create a route.
Aaron Francis
00:02:30 – 00:02:49
You gotta create a handler on the back end. You gotta create a controller. You gotta write your own fetch function or your Axios call. And he's like, this is not the way that it should be. And so it's one of those things where it's like you don't really know, you don't really know the filth and the squalor that you're living in until your friend comes over, and they're like, dude, you've got to clean this place up.
Aaron Francis
00:02:49 – 00:03:11
And that's kinda that's kinda how I felt was Steve kept saying stuff like, this should be easier. And I looked at it with fresh eyes and was like, this should be easier. What are we doing here? And I had observed from the outside, the, you know, the Next. Js community with all of their, like, you know, React server components, React server actions, all of this stuff that I don't fully know.
Aaron Francis
00:03:11 – 00:03:24
And I'm like, that is kinda nice that you can kind of just kinda compose across the network boundary. What would that look like in Laravel and Vue? And that's kind of the the genesis of it all.
Eric Barnes
00:03:25 – 00:03:43
That's awesome. So me so I have never used Inertia ever. Wow. I, the I used Backbone JS way back in the day, and I hated it, with Marionette. And then, like and then we used, like, one of the really, really first, like, versions of Vue, and then that was it.
Eric Barnes
00:03:43 – 00:03:56
I switched to basically not doing anything. Mhmm. Switched to Livewire. And then I worked at, you know, with Ian on, HelpSpot, which is kind of I mean, it was kind of old JavaScript, like jQuery and Mhmm. The stuff before that.
Eric Barnes
00:03:56 – 00:04:19
And then for me, like, a lot of wire come around, and I'm like, oh, this is, like Mhmm. Life changing. I don't ever want to go back to JavaScript land. Totally. So so I guess my first question to you is, like, if you're coming you know, you're a brand new developer, you've never used inertia, is it still pretty easy to get started with, or do you still need to kinda know, sort of Vue or React or anything else, JavaScript or the end?
Aaron Francis
00:04:19 – 00:04:37
Yeah. So this is kinda my my vision for this is, like, pulling in JavaScript developers. So there's, like, a certain subset of people that will never use JavaScript on the front end. That's fine. Like, I'm not I'm not gonna ever try to convince them to do that.
Aaron Francis
00:04:37 – 00:05:09
And for those people, we have a great, you know, first and a half party offering with Livewire, which I think people should continue to use. What I am going after, and what I think Fusion goes after is the people that really, really, really want to use a Vue or React front end, and are finding themselves ending up on the back end of those stacks and realizing, well, shoot. There's a lot more to do than just, like, the front end and then get over the network. And once you get over the network, what happens next? How do I talk to my database?
Aaron Francis
00:05:09 – 00:05:34
How do I send an email? It's like, hey. We actually have an answer for that. And so if you're gonna use if you're gonna use Fusion, one of these front end frameworks. I do think, that this lowers the bar in terms of, like, what you need to know about front end, because it does rely pretty heavily on inertia, so you don't have to figure out, like, client side routing and all of this, like, state stuff.
Aaron Francis
00:05:34 – 00:05:56
You're, like, actually going to new pages, and so a lot of state related issues go away. And the goal the goal is to make it approachable to people who are coming from the JavaScript community and want to start learning a little bit more about Laravel slash a little bit more about, like, back end development.
Eric Barnes
00:05:57 – 00:06:13
Yeah. The so coming from, like, a front end developer, what does a front end developer typically use, on the back end? Is it just all sort of node on the back end and and so they've never had any experience with, I guess, Laravel or Rails or anything?
Aaron Francis
00:06:13 – 00:06:30
Yeah. I think that is, I think that is the the meaty middle of the market is people will pick up React and then quickly pick up, you know, Next. Js. And, you know, I'm not terribly familiar with Next. Js, but I do understand, you know, parts of it.
Aaron Francis
00:06:30 – 00:06:55
Or or they'll pick up Remix, which is, you know, the the one that got bought by Shopify. Kent C. Dodds talks about Remix a lot. And those have, those have really focused on starting at the front end and working their way back in terms of, like, the framework development where Laravel obviously started on the back end and now has a fully fleshed out front end story. They are taking it the opposite, direction.
Aaron Francis
00:06:55 – 00:07:15
I think Remix explicitly claims to be a center stack framework. I've heard them say that a lot. These, you know, these meta frameworks will also claim to be full stack quite often. And I think it is, it's led to a little bit of confusion when you say Laravel's full stack and, Next. Js is full stack.
Aaron Francis
00:07:15 – 00:07:32
And so I think we've seen a lot of the discussion about Laravel go to batteries included because, Laravel has all of these things, like, for goodness sakes, authentication. Like, you can log in. And Next. Js is like, you could use any one of these five different SaaS tools for your auth layer. And it's like, no.
Aaron Francis
00:07:32 – 00:07:40
That's not really batteries included. Like, yes, you can run code on the back end, but where are all the components? Where's my queue driver? Where's my email? Where's my auth?
Aaron Francis
00:07:40 – 00:07:57
Where's my everything else? And so I think what a lot of Next. Js developers have found the position they have found themselves in is super solid on the front with React and everything. You cross over that network barrier. You get to the back end, and then you're in, like, you're in jazz.
Aaron Francis
00:07:57 – 00:08:13
It's just like, let's just make it up as we go. Grab this package. Grab this ORM package and try to get them all to work together. And and JavaScript developers claim, and I have no reason to doubt them, that they love that. They just love the freedom and flexibility of, like, I'm gonna build my own stack.
Aaron Francis
00:08:13 – 00:08:35
That sounds exhausting to me. And so I am hoping, and I'm I think it is true, that there are, there's a subset of JavaScript developers that will cross over that network gap and then be like, there's nothing here. I just want something here. And that's where Fusion, can come into play. Because once you cross over, you have the entire power of Laravel on the back.
Eric Barnes
00:08:35 – 00:08:46
Yeah. That's, it's so it's so much reminding me about, like, VM versus PHPStorm or Yes. Totally. Linux versus a Mac. It it's just like I don't I'm a say, wait.
Eric Barnes
00:08:46 – 00:08:52
I don't wanna mess with none none of that. I just wanna No. Get I just wanna build an app and hopefully make money or publish it or do something.
Aaron Francis
00:08:52 – 00:09:05
Yes. Yes. Yeah. The people that, like, the people that fiddle with their NeoVim configs for, like, hours on stream, I look at them and I think I'm glad you're happy. I do not want to do that.
Aaron Francis
00:09:05 – 00:09:14
Right. I never ever ever ever want to do that. And that's just because we have different goals. Like, I want like you, I want to build something and publish it and hopefully make money, and then, you know, in your case, go play golf. Right?
Aaron Francis
00:09:14 – 00:09:28
But, like, I don't wanna fiddle. I don't wanna fiddle. I wanna make. And so, this and this is my kind of my perspective on everything. It's like this, IE Fusion, will appeal to some people, and it won't appeal to a lot of people.
Aaron Francis
00:09:28 – 00:09:34
And I'm totally okay with that. I'm just building it for the people that, like, kinda operate like I do.
Eric Barnes
00:09:35 – 00:09:40
Yeah. Are are you, mentally prepared for any backlash on Hacker News and everywhere else?
Aaron Francis
00:09:41 – 00:09:57
The backlash on Reddit was swift and severe. The Vue JS subreddit did not appreciate it. Even the Laravel subreddit was like, this makes no sense. Why are we going back to 02/2004? And I it was it was totally fine.
Aaron Francis
00:09:57 – 00:10:48
I mean, I think a lot of those comments betrayed the fact that they didn't watch the video, which makes sense, or they watched it and didn't understand what was happening. I think many people thought we are going back to, like, a PHP being the templating language for your front end, and we're, like, mixing in Vue somehow, which is just it's just not the case. Like, you happen to be writing PHP in a Vue file, but in the build process, we, like, we extract it, and we basically turn it into a controller. So it's just kinda like syntactic sugar over, controllers and routes and views, and you can just write it all in one place. And we'll do a little bit of auto wiring to get that state into your view template, but it's not fundamentally the same as, like, PHP in 02/2004.
Aaron Francis
00:10:48 – 00:11:02
But boy, did they hate it. And, you know, it was nice. I felt like, actually, this doesn't affect me at all. You know, I'm I'm somewhat a sensitive guy, and I normally am like feedback is sometimes difficult. And this, I looked at it, and I was like, don't care.
Aaron Francis
00:11:02 – 00:11:05
Totally fine. So that was yeah. It was fine. I didn't
Eric Barnes
00:11:06 – 00:11:23
care. That's great. And this brings up another question, when which I know this is kinda brand new, and you're probably the only one that's actually using it right now. Mhmm. How are you going to like, the best way to structure functions, you know, inside the view file?
Eric Barnes
00:11:23 – 00:11:23
Like
Aaron Francis
00:11:23 – 00:11:24
Yeah.
Eric Barnes
00:11:24 – 00:11:31
What happens when it gets just a bunch of stuff? Right. Do you have any solutions there, or have you given any thoughts to that? Or
Aaron Francis
00:11:31 – 00:11:42
Yeah. I have. And that was one of the criticisms that came up on Reddit that I thought was well founded. It's like, this is gonna lead to massive files. And I'm sensitive to that.
Aaron Francis
00:11:42 – 00:12:21
And I think, my, like, my principle on that is that this, the block of PHP that you write in your view file is basically a controller, more or less. It, like, defines what comes down and defines what can be, you know, received back from the front end. And so my opinion on this is that the controller should be relatively thin. And so if we have, you know, the concept of publishing a podcast and you gotta call out to Transistor and you gotta do some FFmpeg and you gotta do some whatever, I think that should be wrapped up in some sort of, action. So, like, publish podcast action.
Aaron Francis
00:12:21 – 00:13:04
And in your, in your PHP that you're writing in Fusion, you're just basically receiving input from the front end and then handing it off to that action, to do all of, like, the the hard work that, you know, requires the container and all of the other stuff. And it basically ends up being a way to route, from the HTTP layer into the rest of your application. And so I think that's probably going to be the the blessed path, which is like, hey, y'all. Don't do everything in this one, like in the same way that you wouldn't do everything in a controller. Don't do everything in your, your fusion component here.
Aaron Francis
00:13:04 – 00:13:17
And I think I think that most people will get that. Of course, people will write, you know, 700 lines of PHP in a fusion component, and it's gonna be like, this is not ideal. But I think I think it'll settle out pretty nicely.
Eric Barnes
00:13:18 – 00:13:37
True. And, I mean, I was just thinking about this while you're you were talking about that. One of the examples you showed was, like, class based, PHP in the file. So in theory, if you do have a thousand lines of PHP there, you could you know, if PHP store or whatever has auto complete, you can jump between your methods and For sure. Might not be too bad.
Eric Barnes
00:13:37 – 00:13:43
Yeah. Totally. But yeah. Totally agree. Thin thin controllers, you know, get that stuff away from all your files.
Eric Barnes
00:13:43 – 00:13:43
Yeah.
Aaron Francis
00:13:43 – 00:14:05
And all of the fusion stuff is resolved out of the containers, like all the method calls. And so, like, if you want to inject, you know, process podcast as a class, you can totally do that. And so I've tried to make it such that it's basically Laravel. It's basically a Laravel controller, but with a little bit of extra magic on top. And so, hopefully, that's where people will land on it.
Eric Barnes
00:14:06 – 00:14:20
Gotcha. The next question I have is, what about testing? Like, are you gonna be able to use Pest and PHPUnit, or can you somehow test the compiled file? I I don't I'm I'm I don't know how that's gonna work, or do you have, thoughts Yeah. On that already?
Aaron Francis
00:14:20 – 00:14:42
Yeah. No. I have I have a lot of thoughts. So, as it as it is being built, so, like, one of the great advantages I have over, over traditional PHP is I am guaranteed that there's going to be a build step. Because if you're using Vue or React, you have to have a build step.
Aaron Francis
00:14:42 – 00:15:13
And so I hook into that build step to do all of the fusion stuff. And at the end of the build step, what you end up with is a bunch of PHP classes, you know, existing on your disk. And so, from that perspective, testing is the exact same as it would be otherwise, provided you run your build step before you run your tests. And so that's a little bit different, and there are some, like, niceties that I can add around that to ensure that the build step has been run before you run, like, a fusion test or something like that. But then at the end, you're basically, you're basically, you're test or something like that.
Aaron Francis
00:15:13 – 00:15:45
But then at the end, you're basically you can just hit an endpoint and assert that you get the right response back, and it becomes basically like testing, an inertia app. So if you wanna test the back end, you can hit the route, and it will give you the stuff, and you can assert about JSON and stuff like that. And I can add some macros and stuff to make that easier. And then if you wanna test the front end, it's the same as testing, any JavaScript heavy front end. You gotta you gotta pick some tool that presumably opens it in the browser and exercises it there.
Aaron Francis
00:15:47 – 00:15:48
Gotcha. Gotcha.
Eric Barnes
00:15:48 – 00:16:06
Yeah. I I just find that interesting because, like, you know, it it to me, it sort of comes back to, like, even, like, Pest or PHP unit in in just a standard straight level app with no JavaScript. A lot of times, you'll wanna, you know, reseed the database or, you know, dump the database before you even start your your your test. So it's kinda the same vibes, I guess.
Aaron Francis
00:16:07 – 00:16:28
Yep. Yep. Totally. And the stuff that gets written to disk, contains no data, contains so it's not like we're doing something at build time that is, you know, dependent on local state or and then you ship it and it's wrong. So it's like we're basically just taking your PHP code, mucking around with it a little bit, and turning it into a controller.
Aaron Francis
00:16:28 – 00:16:41
And so that really simplifies the rest of how do I deploy to production, how do I test, the fact that we're doing this weird thing and turning it into a normal thing. And then you can just test the normal thing, which is quite nice.
Eric Barnes
00:16:42 – 00:16:47
Nice. Nice. And I assume it's gonna work fine on Laravel Cloud and pretty much anywhere. Right?
Aaron Francis
00:16:47 – 00:16:48
Yep. Yep. Yep. Totally.
Eric Barnes
00:16:49 – 00:16:57
Nice. Nice. And alright. So from your original talk, you said on the road map, you had React. Is is that gonna be ready for lunch?
Aaron Francis
00:16:58 – 00:16:59
No. Not for Friday. No.
Eric Barnes
00:16:59 – 00:17:00
Definitely not.
Aaron Francis
00:17:00 – 00:17:16
Definitely definitely not. No. It's I already have so there's a a Slack group that I started, that has, like, basically open source sponsors. You can come join the Slack group. And, you might remember Miguel Pierfridier.
Aaron Francis
00:17:16 – 00:17:42
I forget his last name. Purple hair, one time almost bought the constitution, that guy. He's, he's very he's very good at React, and there's another guy in there called Nick who's also very good at React. And they're already scheming about, like, how do we how do we do this in React? And so, you know, I was supposed to release it on Monday, got out over my skis as I'm want to do, and didn't, but then I, added everybody in the backstage group.
Aaron Francis
00:17:42 – 00:17:55
I added them to the repo because I was like, hey, y'all. I I messed up. I can't release it today. Let me just add you to the repo, and you can poke around. And so they've already been in there, you know, poking around and trying to figure out, like, oh, the more React way to do it would be this way.
Aaron Francis
00:17:55 – 00:18:06
What do you think about this? And I'm like, that seems cool. Like, keep going. So React will come soon, but it won't be, it won't be, like, in the next week or two. Gotcha.
Aaron Francis
00:18:06 – 00:18:10
Gotcha. Alright. So next, security.
Eric Barnes
00:18:12 – 00:18:22
I assume it would be secure by default, or is it gonna open up to, if people that don't know what they're doing, is it possible to get hacked using this?
Aaron Francis
00:18:23 – 00:18:42
So, I'll just say no, and then I'll go into full more full answers. But if anybody clips it, no. Not possible. So I think the two vectors that would expose something is returning data over the wire that you didn't mean to return. And what is going to happen there is, like, let's say you return a model.
Aaron Francis
00:18:42 – 00:19:08
Right? So you return a model. It's gonna run through Laravel's typical, model to array thing. And so, anything that, you know, I think Laravel has appends hidden, and then you can just completely change the two array. So if that's the same as any regular Laravel response or any inertia passing down of props, whatever you send over the wire is gonna go over the wire.
Aaron Francis
00:19:08 – 00:19:39
So you could use a, you know, you could use an API resort like a a resource and wrap up your models and resources or something like that. But there's no, like, there's no safety for what you decide to return to the front end. I don't think that's gonna be too much of a problem. I I mean, I guess if you return the user I think, actually, password is in the hidden field by default. Of course, it's bcrypted, but I think in Laravel's default model, it's hidden, so you don't even get the encrypted, password out or the hashed rather.
Aaron Francis
00:19:39 – 00:20:00
So that should be fine. The other vector that it exposes is it provides, it provides basically ingress points into your application. Right? So you say, like, hey. I'm gonna write this fusion, component, and here are the methods that I want to expose to the front end, favorite, unfavorite, listen later, whatever in the podcast sense.
Aaron Francis
00:20:00 – 00:20:28
All of those become addressable by HTTP. So, you can you know, if you were clever, you could watch when you hit the favorite button. You could watch the network and see how we're sending back, like, hey. Target the favorite method. Now when that request comes in, Fusion will look and see, like, what method are they trying to hit, and then we will reconfirm that that method is supposed to be exposed.
Aaron Francis
00:20:29 – 00:20:48
Right? And so as we're doing the build, we're we're, introspecting your PHP and figuring out what are all the exposed methods, and then we write those into the bundle so that Vue knows, like, hey. Here's the list of exposed methods you can use. Of course, somebody could just change that. And so we, on the back end, reconfirm.
Aaron Francis
00:20:49 – 00:21:00
Alright. They're trying to hit the favorite method. Let's go look up that class on disk and see if favorite is a publicly exposed method. If it's not, we'll just throw a four zero four because it's like, well, is it here? Is it not?
Aaron Francis
00:21:00 – 00:21:15
Who knows? But you can't touch it. So I think those are the two vectors, that could be insecure, and I think they're pretty safe. But, of course, if you find out that that is not true, Aaron at TryHard Studios, I would love to receive your email.
Eric Barnes
00:21:16 – 00:21:32
Yeah. Yeah. Well, I mean, I always think of, like, people, new developers opening up themselves to security issues when they don't think about it. And, you know, you're just, like, you just assume everything's fine, and you're like, oh, yeah. Well, I guess I really shouldn't have, like, exposed everybody's email addresses on this page or something.
Eric Barnes
00:21:32 – 00:21:33
Right. Yeah.
Aaron Francis
00:21:34 – 00:22:10
Yeah. And I think that's one that's like that that that's one area that is slightly different than what I understand Livewire to be is that we're like, once we hand over the data to the front end, you basically never have to hand us that data back. And so we're not like, we're not worried about, the data on the front end being tinkered with and then handed back to the back end to do something nefarious with. We are more in because we don't reinstantiate state from, like, the front end, really. We're more like a traditional request response.
Aaron Francis
00:22:11 – 00:22:23
You know, you're gonna post to the back end, and we'll we'll do some stuff. So that's that's kind of, I I'm thinking, where the lines will be drawn, but, yeah, I definitely want to try to avoid, foot guns as much as possible.
Eric Barnes
00:22:24 – 00:22:31
Gotcha. Alright. Next on my list, something else you mentioned may be coming. Actions per component.
Aaron Francis
00:22:33 – 00:22:56
Interesting. Interesting. So here's the the setup right now is that, you can have a PHP block in your, in your page. Like, in inertia parlance, like, you have a page and that, like, maps to a URL and the you know, then inside of that page, you've got dozens of, you know, other view components or whatever. Right now you can write PHP at the page level.
Aaron Francis
00:22:56 – 00:23:23
And so that would be like, you know, podcasts slash index or something, you know. But you cannot write PHP at the component level, which would be like, podcast row dot view or something like that. And I think it would be nice to be able to do that. So right now what you would have to do is emit events to the page level and then call you know, do your HTTP call there, which is a totally normal thing to do. Events up, props down, very normal.
Aaron Francis
00:23:23 – 00:23:52
But I think it would be fun and potentially very powerful to have each view component be able to define basically an API route or two that you could do stuff with at the component level. And I think that would simplify, some of this, like, cross component communication, which always gets super hairy in in any language, in any framework. It's like, how do I speak to my parent component and my sibling components? It's like, oh, this kinda sucks. You have to write an event bus or something.
Aaron Francis
00:23:53 – 00:24:08
So I think that is one that could be really powerful. I don't know that state will come down into the component, level because I'm not entirely sure how that would even work, but I do think having, like, API endpoints for your individual components would be kinda awesome.
Eric Barnes
00:24:09 – 00:24:19
Yeah. Yeah. Which I know this is version one. You know, you once Yeah. I I assume once you actually publish it, people are gonna come to you with both pull requests and tons of ideas that you probably didn't even think about.
Eric Barnes
00:24:22 – 00:24:30
Keep you busy for a while. Mhmm. Alright. So tooling tooling is my last one on my list. What what what's missing, I guess, tooling wise?
Aaron Francis
00:24:30 – 00:24:31
Just Yeah.
Eric Barnes
00:24:31 – 00:24:33
Sort of the IDEs or more.
Aaron Francis
00:24:34 – 00:24:50
Yeah. So, there's there's a little bit of IDE love that needs to happen. So right now, you open, you know, podcast..vue, podcast Vue, and you can write a PHP block. You can just say, PHP. Opening tag is PHP.
Aaron Francis
00:24:50 – 00:25:09
Closing tag is PHP. Just like an XML tag, not like the the one we're used to as PHP developers. And in PHPStorm, you can configure what is called a language injection. And so you can tell PHPStorm, hey. Anytime you see this XML tag, which is just PHP, inject the, PHP language.
Aaron Francis
00:25:10 – 00:25:27
That gives you syntax highlighting. That gives you a little bit of, like, a a little bit of help. What it doesn't know is it doesn't know that you are in the context of a Laravel application. And so it doesn't look at your composer dot JSON, your class map, autoloader. It doesn't look at any of that.
Aaron Francis
00:25:27 – 00:25:40
And so you're still kind of in the wild, wild west in terms of, like, I want to, you know, use the auth facade. It's not gonna say, like, hey. Let me just auto import that for you. It's like, oh, shoot. I gotta, you know, do that manually.
Aaron Francis
00:25:41 – 00:26:08
Fortunately, Taylor put me in touch with somebody at JetBrains, and they are bouncing around internally. There's, like, four or five people on the email now, trying to figure out, like, who's the right person to to talk to about making PHPStorm aware that this is not just injected PHP. It's like full application PHP. Go look at the auto loader, figure out what classes exist. So I am hopeful that that will be coming soon.
Aaron Francis
00:26:08 – 00:26:26
Fortunately, it's not like it's a new language or anything. It's not like I've invented new syntax. It's just the exact same language in a different place that we're not used to. So I'm hoping that there's some little code path inside of that, you know, JetBrains Java monstrosity that they can just be like, yeah. That's that's real PHP.
Aaron Francis
00:26:27 – 00:26:53
In terms of Versus Code, not something I use, so I don't really know. Miguel, again, has already figured out how to do, like, a tagged template literal, which is like a JavaScript thing, and tag it with PHP, and then it will inject PHP highlighting into there. But I imagine, obviously, Versus Code is much more open source, than JetBrains is, and so I imagine people will figure that part out pretty quickly.
Eric Barnes
00:26:54 – 00:27:03
Yeah. The I think I did see a tweet, actually, speaking of JetBrains, of the Laravel idea, the guy that creates the Laravel idea package. Yeah. He was gonna add support for it.
Aaron Francis
00:27:03 – 00:27:10
Yeah. He said something like, it looks like I got work to do. And I was like, oh, cool. Thanks, guy. I'm a paying I'm a paying Laravel idea subscribers.
Aaron Francis
00:27:10 – 00:27:14
Thank you. I don't know who it is, but thank you for all your work.
Eric Barnes
00:27:14 – 00:27:19
It's incredible. Yes. Yeah. That I think that's a must have, for me on PHDStore. You gotta have that.
Eric Barnes
00:27:19 – 00:27:32
Yeah. I think that's all my questions on on, on this, Fusion. So what did I miss? Anything else you wanna talk about for the launch or anything that I may have missed?
Aaron Francis
00:27:33 – 00:27:42
No. I don't think so. I will I will go back again to, like, what is the goal? What is the vision? And the vision is to pull people into the Laravel ecosystem.
Aaron Francis
00:27:42 – 00:28:23
So that that is my hope is that we can continue to be, we can continue to be a port in the storm for people who are like, boy, web development has gotten complicated. My hope is that people will, put down their PHP preconceived notions, come over to our side, realize that, hey. We've got basically everything you would ever need to build a full honest to goodness SaaS application. And, hopefully, Fusion can help lower the bar to get some of those very, very intelligent, very productive people over and have them use what I think is a better back end. That is that is my hope.
Eric Barnes
00:28:24 – 00:28:41
Agreed. Agreed. I I love how Laravel is pushing, you know, pushing the bar forward, you know, from the old days. I know you're young man compared to me. But, you know, in my days, it every framework only stuck with what they what what they like, it was only PHP.
Eric Barnes
00:28:41 – 00:28:54
Like, you did not branch out into CSS or any of these things. And I like how we've you know, as a community, we've sort of embraced this that it's not just PHP. Like, we're having a full stack here. We need to Yes. Be able to support everything.
Eric Barnes
00:28:54 – 00:28:59
So I I think it's awesome. And, I really like where the future's headed for Laravel and and with that mindset.
Aaron Francis
00:29:00 – 00:29:05
Thanks thanks to our pragmatic, benevolent dictator, Taylor, for for leading the charge on that.
Eric Barnes
00:29:05 – 00:29:18
Exactly. Exactly. Alright. Well, Aaron, I wanna thank you again for, taking taking a few minutes here to talk about fusion. And, good luck on the release, and we will do our best to get the word out for you.
Aaron Francis
00:29:18 – 00:29:31
Thanks. Also, if this release if this podcast releases on Friday when fusion releases and you're listening to it, today is my birthday. Not today, but, like, when you're listening to it, today, Friday is my birthday. So please tell me happy birthday.
Eric Barnes
00:29:32 – 00:29:43
Yes. Happy birthday, and, thank you for everything you do for, the community and for what you're building and just for being a good human in our ecosystem. So No. You're good.
Aaron Francis
00:29:43 – 00:29:49
Thank you. That's very nice. It's always a joy to be here. I look forward to the release. Hopefully, it goes well.
Me

Thanks for reading! My name is Aaron and I write, make videos , and generally try really hard .

If you ever have any questions or want to chat, I'm always on Twitter.

You can find me on YouTube on my personal channel or the Try Hard Studios channel.

If you love podcasts, I got you covered. You can listen to me on Mostly Technical .