---
source_url: "https://www.twilio.com/en-us/blog/laravel-breeze-vs-laravel-jetstream"
title: "Laravel Breeze vs Laravel Jetstream | Twilio"
mirrored_at: 2026-08-10T01:02:04.148Z
host: www.twilio.com
cited_in_42a: true
mirror_canonical: "https://index.42a.ai/www.twilio.com/en-us/blog/laravel-breeze-vs-laravel-jetstream"
---

> **Original source:** https://www.twilio.com/en-us/blog/laravel-breeze-vs-laravel-jetstream

[Blog](https://www.twilio.com/en-us/blog)/ Laravel Breeze vs Laravel Jetstream

Time to read:

January 20, 2023

**Written by**

[Temitope Taiwo Oyedele](https://www.twilio.com/en-us/blog/authors/author.toyedele)

Contributor

Opinions expressed by Twilio contributors are their own

**Reviewed by**

This post was written by a third-party contributor as a part of our [Twilio Voices program](https://www.twilio.com/en-us/voices). It is no longer actively maintained. Please be aware that some information may be outdated.

Laravel offers several options for authentication in your applications, ones that provide a robust and modern scaffolding authentication layer. Included in the Laravel Starter Kits, they consist of Laravel Breeze and Laravel Jetstream.

Laravel Breeze is an excellent choice when it comes to getting things running quickly. Jetstream offers two-factor auth, API tokens, and team management. If you are looking for more features then Jetstream is for you.

In this article, you will learn everything you need to know to get started with both packages. This will include installing them, a discussion of their differences and their similarities, and when to use them.

So let's get started.

## [Prerequisites](#Prerequisites)

To follow this tutorial you must have:

-   Prior experience with Laravel
-   [The Laravel Installer](https://laravel.com/docs/8.x#the-laravel-installer) or [Composer](https://getcomposer.org/) installed globally
-   PHP 8.1 or above
-   A database [supported by Laravel](https://laravel.com/docs/9.x/database#introduction); you’ll need this before running the database migrations for each application

## [Laravel Breeze](#Laravel-Breeze)

Laravel Breeze implements all of Laravel’s authentication features. It scaffolds a solid authentication flow in your Laravel application complete with sleek views, component system, and a basic dashboard layout; it is built with [Laravel Blade](https://laravel.com/docs/9.x/blade).

Laravel Breeze is an upgrade of [Laravel UI](https://github.com/laravel/ui) which sets up basic login, register logout, forgot password, create a password, email verification, and password confirmation functionality. You can customize it to your needs, as it doesn't rely on any job script framework, just Laravel, and Blade. It does use the [Tailwind CSS](https://tailwindcss.com/) framework to professionally style the front-end.

Laravel Breeze creates all the controllers, routes, and views needed to set up and configure authentication.

### [Install Laravel Breeze](#Install-Laravel-Breeze)

Create a new Laravel project, then change into the newly created project directory and run the migrations, by running the following command.

Copy code

```
composer create-project laravel/laravel project-name
cd project-name
```

Then, add Laravel Breeze support by running the following commands.

Copy code

```
composer require laravel/breeze --dev
php artisan breeze:install
```

When the commands complete, you will see the following output in the terminal:

Copy code

```
INFO  Breeze scaffolding installed successfully.
```

Next, install the front-end dependencies and compile the frontend assets by running the following command.

Copy code

```
npm install && npm run dev
```

Next, [configure Laravel](https://laravel.com/docs/9.x/database#configuration) to connect to your database (or use [Laravel Sail](https://laravel.com/docs/9.x/sail#installing-sail-into-existing-applications) to set it up instead). Then, after that, launch the application by running the following command, in a _new_ terminal window or tab.

Copy code

```
./artisan serve
```

After the application starts, open the application in your browser of choice. By default, it's available on [http://127.0.0.1:8000](http://127.0.0.1:8000/). You will be able to see the default Laravel page with a login and register link at the top, such as in the example below.

![The default Laravel route](https://www.twilio.com/content/dam/twilio-com/global/en/blog/legacy/2023/laravel-breeze-vs-laravel-jetstream/rOYCfmhG73DdEbLybnlUV6xs-hx4bX80aFO4WC75_wAooPShmso5WTA2H31G-LOrPBNlteCW-vYQKt.png)

Below, you can see an example of the login form, if you click the _login_ link.

![The Laravel Breeze login form](https://www.twilio.com/content/dam/twilio-com/global/en/blog/legacy/2023/laravel-breeze-vs-laravel-jetstream/KOBKoO13M2nBlBosgZP_TGlbXk7YcXSSo-6Lsz6uHpi6dh7ffeVB5SOl3C6sT1FE-82cVIYAhk3qgZ.png)

Here, you can see an example of the account registration form, if you click the _register_ link.

![The Laravel Breeze user registration form](https://www.twilio.com/content/dam/twilio-com/global/en/blog/legacy/2023/laravel-breeze-vs-laravel-jetstream/vETibpy9YM3yeh-pirQRNhXlpf-0IA9gH_6PAG-oQktmcX_ZkcS7cneqU9mqWlhwOaQ4cz4533XO7K.png)

Now, let’s take a look at the file structure.

### [Breeze's file and directory structure](#Breezex27s-file-and-directory-structure)

#### Routes

The route is a way of creating a request URL for your application. The routes are defined in the _routes/auth.php_ file. If you look in the file you'll see a list of authentication routes which includes routes for logging in, registration, password reset, email validation, password confirmation, and logging out. It is included directly in your _web.php_ file with the following line:

Copy code

```
require__DIR__.'/auth.php';
```

#### Controllers

The Auth Controller classes are stored in _app/Http/Controllers/Auth/_. In the folder, are the following controllers:

-   _AuthenticatedSessionController.php_
-   _ConfirmablePasswordController.php_
-   _EmailVerificationNotificationController.php_
-   _EmailVerificationPromptController.php_
-   _NewPasswordController.php_
-   _PasswordController.php_
-   _PasswordResetLinkController.php_
-   _RegisteredUserController.php_
-   _VerifyEmailController.php_

#### Views

Views separate the controller and domain logic from the presentation logic, and are located in _resources/views/auth/_. The list of blade views available include:

-   _confirm-password.blade.php_
-   _forgot-password.blade.php_
-   _login.blade.php_
-   _register.blade.php_
-   _reset-password.blade.php_
-   _verify-email.blade.php_

### [When should you use Breeze?](#When-should-you-use-Breeze)

Breeze is perfect for you when:

-   Your app mainly consists of Blade templates or if you want to rapidly get authentication added to an application without a large amount of opinion needed code
-   You want to modify the authentication functionality of your app quickly
-   You're building an app from scratch that doesn't require the features that [Fortify](https://laravel.com/docs/8.x/fortify#main-content) or Jetstream provide
-   You just want a more up-to-date Laravel UI

Now let’s move on to Jetstream.

## [Laravel Jetstream](#Laravel-Jetstream)

[Jetstream](https://jetstream.laravel.com/2.x/introduction) is more advanced than Breeze, as it contains a lot more features than the basic authentication features. In Jetstream we get:

-   API authentication with Sanctum
-   Email verification
-   Login and registration functionality
-   Session management
-   Team management
-   Two-factor authentication

Jetstream is meant to be a framework within a framework, providing scaffolding support and library features to build a fully functioning [Sass](https://sass-lang.com/) dashboard. Laravel Jetstream is free and open-source.

Jetstream uses Laravel Fortify. Fortify defines the routes and controllers for implementing the application's authentication features while the Jetstream UI makes requests to those routes.

When Jetstream is installed, the _config/fortify.php_ configuration file is installed into your application. Use this package if you want to have complete control of your frontend or when you're building an API, or when you don’t need a front end at all. Laravel Jetstream is free and open-source

### [Installation](#Installation)

Jetstream can be installed using either Composer or the Laravel installer

#### Install Jetstream with the Laravel installer

First, create a new Laravel project with Jetstream using the Laravel installer, by running the command below.

Copy code

```
laravel new project-name --jet
```

When prompted with _"Which Jetstream stack do you prefer?"_, choose the one that you prefer or are more familiar with.

When prompted with _"Will your application use teams? (yes/no) \[no\]:"_, press **Enter**. Then: 

-   change into the newly created project directory, 
-   [configure Laravel](https://laravel.com/docs/9.x/database#configuration) to connect to your database (or use [Laravel Sail](https://laravel.com/docs/9.x/sail#installing-sail-into-existing-applications) to set it up instead)
-   run the migrations, by running the following commands:

Copy code

```
cd project-name
php artisan migrate
```

To make use of the Livewire stack, first publish its Blade components by running the following command:

Copy code

```
php artisan vendor:publish --tag=jetstream-views
```

Then, launch the application by running the following command in the terminal.

Copy code

```
php artisan serve
```

Now, if you open your browser to [http://localhost:8000](http://localhost:8000/), you'll see the default route render just like in the previous section on Laravel Breeze.

#### Install Jetstream with Composer

Alternatively, run the following commands to create a new Laravel project with Jetstream using Composer.

Copy code

```
composer create-project laravel/laravel project-name
cd project-name
composer require laravel/jetstream
```

#### Install Livewire or Inertia

Once that is finished, install your scaffolding tool of choice. For those who prefer to use Livewire with Blade templates, run the following command:

Copy code

```
php artisan jetstream:install livewire
```

For those who prefer to use Inertia with Vue run the following command:

Copy code

```
php artisan jetstream:install inertia
```

You may also add the `--teams` flag to enable [Laravel Jetstream Teams](https://jetstream.laravel.com/2.x/features/teams) support. This will allow developers to quickly and easily add team management functionality to their application. Among other functionality, it includes the ability to:

-   Create and manage teams
-   Invite and manage team members
-   Assign roles and permissions to team members

It can be useful for applications that need to support multiple teams or user groups, as it provides a built-in, customizable solution for managing these teams within the application.

After the command completes, download and compile the front-end assets with the following command.

Copy code

```
npm install && npm run dev
```

Finally, connect your database and make sure to run your migrations:

Copy code

```
php artisan migrate
```

Launch the application by running the following command in a new terminal window or tab.

Copy code

```
php artisan serve
```

After the application starts, open the application in your browser of choice. By default, it's available on [http://127.0.0.1:8000](http://127.0.0.1:8000/). You will be able to see the default Laravel page with a _Login_ and _Register_ link at the top, such as in the example below.

![The default Laravel route](https://www.twilio.com/content/dam/twilio-com/global/en/blog/legacy/2023/laravel-breeze-vs-laravel-jetstream/55fjMT9wrl5nug60dJ834B-qr1TFjCeBJXb8sKyLOFOydQX-PrVNXnA5Re73Z2u7FlYbdNymWuj_6N.png)

Below, you can see an example of the login form, if you click the _Login_ link.

![The Laravel Jetstream login form](https://www.twilio.com/content/dam/twilio-com/global/en/blog/legacy/2023/laravel-breeze-vs-laravel-jetstream/9jj71r-fFab7z0CIz6ws9TysALWdatV_sBVAwM8jVhqd1oSpCMWxh9XBccn1HeLz5E_xvKE92gGfZN.png)

Below, you can see an example of the user registration form, if you click the _Register_ link.

![The Laravel Jetstream user registration form](https://www.twilio.com/content/dam/twilio-com/global/en/blog/legacy/2023/laravel-breeze-vs-laravel-jetstream/yUbNemhyLEDeyHObRf7-sb9lD7m7LSiMTLrpl17OP_dVT0LPLvt5HM2tif3j1PBZF29tMAIgS8UaW4.png)

### [Authentication](#Authentication)

The newly installed Laravel Jetstream project comes with a login form, two-factor authentication, registration form, password reset, and email verification. The templates for these can all be found in _resources/views/auth_.

Like I mentioned before, Jetstream uses a package called [Laravel Fortify](https://laravel.com/docs/9.x/fortify#main-content). You can find the Fortify actions in _app/actions/Fortify/_. The Fortify configurations can be found in _config/fortify.php_. Here you can make changes like enabling and disabling different features.

### [Profile Management](#Profile-Management)

Jetstream provides users with user profile management functionality allowing them to update their name, email address, and also upload profile photos. The user profile view is stored in _resources/views/profile/update-profile-information-form.blade.php_. In case you’re using Inertia you can find the views in _resources/js/Pages/Profile/UpdateProfileInformationForm.vue_.

### [Security](#Security)

Worried about your application security? That’s not a problem. Laravel Jetstream comes with the standard functionality that allows users to update their password and log out which means it’s more than just safe.

What’s more impressive is that it offers [Two-factor Authentication (2FA)](https://www.twilio.com/docs/glossary/what-is-two-factor-authentication-2fa) with QR code, which the users can enable and disable directly. Also, users can log out of other browser sessions as well. The user profile Blade templates can be found in _resources/views/profile/_. If you are working with Inertia, you can find them in _resources/js/Pages/Profile/_.

### [Jetstream's API](#Jetstreamx27s-API)

Laravel Jetstream uses Laravel [Sanctum](https://laravel.com/docs/8.x/sanctum) to provide a token-based API. It is a Laravel package created for the authentication of Single Page Applications (SPAs), mobile applications, and basic token-based APIs.

To know more about APIs with Sanctum, [I recommend reading this article](https://www.twilio.com/blog/build-restful-api-php-laravel-sanctum). Using Sanctum, each user can generate API tokens with specific permissions like Create, Read, Update, and Delete (CRUD).

### [Jetstream Teams](#Jetstream-Teams)

In case you used the `--team` flag during your Jetstream installation, your website would be able to support team creation and management. With the [Jetstream Teams](https://jetstream.laravel.com/2.x/features/teams) feature, each user can create and belong to multiple teams.

### [When should you use Jetstream?](#When-should-you-use-Jetstream)

You should use Jetstream if:

-   You're conversant with [Laravel Livewire](https://laravel-livewire.com/), [Inertia.js](https://inertiajs.com/), and Tailwind CSS, or you don’t mind taking time to learn them
-   if you are building a new Laravel application and want a pre-built solution for user authentication and other features

## [Differences](#Differences)

One of the main differences between the two is that Jetstream relies heavily on a front-end stack. It comes with two different options which are the Livewire Blade templates and Inertia Vue templates. If you're used to using Vue for your applications, then go down the Inertia root otherwise go for Livewire and Blade.

Also, if you’ve used Laravel Jetstream before, you will notice that it is a little overwhelming and has a stiff learning curve while Laravel Breeze was developed to get you set up immediately.

## [Similarities](#Similarities)

Their similarities are quite glaring as they are both packages that add pieces of frontend and backend functionality to your application.

## [Conclusion](#Conclusion)

So far we’ve explored Laravel Breeze and Jetstream, how to install them, differences, similarities, and also when to use them. Both have outstanding features for the authentication process. These packages were introduced to protect a secured area or restricted actions. You just have to choose the one that best suits your style. Please share if this was helpful.

_[Temitope Taiwo Oyedele](https://www.linkedin.com/in/temitope-taiwo-oyedele-57b772163/) is a software developer and technical writer. He likes to write about things he’s learned and experienced._

## Related Posts

## Related Resources