Hey everyone, this is Taylor Otwell back with another Laravel snippet.
It is January 8th here in the office.
I'm wrapping up another week of working on Laravel.
And this week I'd like to just kind of review what we've been doing this week
and give you an update on some projects.
So one thing we launched this week was Jetstream 2.0.
This brings several improvements to Jetstream.
It brings some improvements to the inertia side of the stack.
So all of the authentication views like the login view,
the registration view, the password reset view.
In the first Jetstream release, those were all written in blade
because it wasn't super necessary for them to be written in inertia
and it just saves having to duplicate those views
if I just wrote them in blade for both stacks.
But some people really wanted those to be written in view
and so in Jetstream 2.0 those are all view pages.
And in the live wire stack, of course, they're still just normal blade pages.
We also made an improvement to the team situation in Jetstream.
You can now, when you invite someone to your team,
you can enable an invitations feature so that even if they don't have an account,
they will get an email inviting them to join your team.
Previously you had to invite someone that already had an account
within the application, so that was a little annoying.
And I think this would be a really well-received improvement.
I also went through the Jetstream documentation
and just read through the entire documentation, improved things,
sort of refined things, added a few new pages
to explain how to use the starter kit and so on.
And of course, if Jetstream isn't your cup of tea,
you could always use a more simpler starter kit, Laravel Breeze,
which is kind of just basic blade authentication views
and no other extra features like teams or two-factor authentication
or API support or anything like that.
So check that out.
And of course, you can always not install any starter kit at all
and just use vanilla Laravel 8.
So that's the update on Jetstream.
We also launched a really cool Forge feature,
which is allowing Forge Circle members to create servers.
So really, this has been requested for years, a couple of years,
where if you had a circle on Laravel Forge,
and a circle is a place where you can share servers with your team members,
those team members couldn't create servers within the circle,
but now they can.
Mohammed shipped this feature this morning.
This allows you to share a credential with the circle
so that other circle members can create servers within that credential.
That credential might be a DigitalOcean credential
or an AWS credential and so on.
And then kind of related to Jetstream,
I wanted to give you an update on Spark.
I've gotten quite a few questions on Spark
and some people are a little confused
as to what the next release of Spark will look like.
I think part of this is because many of Spark's features
have been moved to Jetstream.
I talked about this on my Laracon talk earlier this year.
However, not everyone saw this.
What we decided to do with Spark
is move all of the non-billing related features of Spark
into Jetstream and just give them away for free.
So that's why Jetstream has an optional Teams feature.
That's why it has an optional API feature.
It's because those were features of Laravel Spark
and they've now been moved into Jetstream,
open sourced, and given away for free,
as well as the two-factor authentication feature.
Now, that leaves Spark to only handle the billing side
of its previous feature set.
So that's really what we were aiming for.
That's good.
We wanted Spark to just be focused on managing
the subscription billing portion
of building a software-as-a-service application
or launching kind of your own startup.
Now, one change we decided to make with Spark
in the upcoming release,
and it's a response to problems we had
with the first Spark release,
where with the first Spark release,
you were really tied in to whatever front-end technology
that Spark was using.
And in that case, it was Vue and Bootstrap.
However, if you didn't want to use Bootstrap
or you didn't want to use Vue,
you had a really rough time using Spark.
So what we decided to do in the upcoming release of Spark
is Spark's billing kind of settings page
is its own isolated page.
Of course, you can customize the look and feel of that page
by editing CSS or whatever,
but it's really like its own panel.
And you can think of like the Stripe customer billing portal
where users can update their credit card,
change their plans, cancel their plans,
but it's sort of like its own dashboard,
if that makes sense, separate from your application.
Although it's still a package,
like hosted within your application,
but I mean, it's not, it's hard to explain,
but I mean, think about it a little bit like Nova
in the sense that Nova has its own front-end assets.
Nova doesn't care what front-end technology
your application is using.
It ships its own CSS and JS files.
And the next release of Spark is very much like that.
It has its own CSS files,
its own JavaScript files.
The next version of Spark uses view and inertia
and tailwind on its own screen,
but that doesn't mean that any other part of your application
needs to use those technologies.
Spark ships its own CSS and JS files
that are included on that page.
It doesn't use your application layout
or your applications, JS or CSS files.
I hope that makes sense.
It's kind of modeled after that Stripe customer billing portal,
and of course for the next release of Spark,
we are trying to support two payment providers,
the first one being Paddle,
which provides, you know, some benefits over Stripe
and some drawbacks from Stripe.
The benefits are it serves as kind of a merchant of record,
which means that from your perspective,
the only person paying you is Paddle.
It makes your taxes quite a bit simpler,
and if you're in the EU,
they handle all of the VAT tax-related complexity for you.
So that you don't have to worry about that.
They also support things like PayPal and Apple Pay.
Of course, Stripe also supports Apple Pay, but not PayPal.
And then, of course, we want to continue to support Stripe.
I think that will probably be the second version of Spark we release.
I'm hoping they release, you know, close together.
I don't think they'll release on the same day,
but I hope they can release, you know,
within a month or two of each other.
All right, so now that we've got Jetstream 2 out,
I really wanted to get Jetstream 2 out
before I really buckled down and finished out Spark.
The Paddle version of Spark is,
I guess you could say, essentially done.
We're cleaning it up, we're writing tests for it,
we're writing documentation for it.
And once that is shipped,
we will focus in on porting it to the Stripe side.
Which I don't expect to be too much work,
since we already have, of course,
a really robust Stripe version of Cashier,
and we have a lot of experience with Stripe,
so that really shouldn't be any big surprise
or complex for us.
So yeah, that's kind of what we've been working on this week.
I mentioned on Twitter that,
in addition to the Jetstream and Breeze starter kits,
I also have a Next.js React SPA starter kit
that uses a Laravel Sanctum-authenticated backend.
I'm not sure if I will be releasing this.
There was just so much confusion
around releasing two starter kits to begin with,
and I really did not anticipate the amount of confusion
that would surround those projects,
being Breeze and Jetstream,
and the amount of confusion regarding
whether Laravel forces you to use these starter kits,
which it doesn't.
Laravel 8 doesn't come with any front-end opinions at all
when you do Laravel new project or whatever.
So I'm hesitant to add a third starter kit into the mix,
although a lot of people have asked,
how do I build an SPA that authenticates with Laravel?
How do I set that up?
And having sort of a canonical example of how to do that
would be feels really valuable,
but at the same time,
I need to decide if I have the energy to actually
deal with the inevitable confusion
that results from releasing yet another
sort of application starter kit for Laravel.
So we'll see how that pans out.
I'm going to think about that over the next week or two.
If you have any feedback on that, let me know.
I'd be glad to hear what you think of that,
and maybe it will help me decide what to do.
All right, so that's what we've been working on this week.
I hope you had a good week,
and I'll be back next week to give you more updates.
Thanks.