Laravel Breezeは、Laravel 12のリリースノートで「追加の更新は行わない」と告知されました。後継はReact・Vue・Svelte・Livewireの4種類のスターターキットで、認証処理はLaravel Fortifyに一本化され、2要素認証とパスキーが標準で入ります。
ただし「非推奨」は「使えなくなった」という意味ではありません。2026年9月時点でBreezeのリポジトリはアーカイブされておらず、最新のv2.4.2はLaravel 13を依存範囲に含みます。本記事では、Laravel 13.33.0で breeze:install を実行した結果と、Breezeパッケージを外しても動くかを確かめた結果をもとに、既存プロジェクトを移行すべきかどうかの判断材料をまとめます。
まとめ:Breeze非推奨の実態とスターターキット選びの要点
- 非推奨の中身:Laravel 12(2025年2月24日)で「BreezeとJetstreamは追加の更新を受けない」と告知。削除やアーカイブではなく、新機能の追加が止まった状態です。
- Laravel 13でも入る:Breeze v2.4.2は
^11.0|^12.0|^13.0を許容し、Laravel 13.33.0でbreeze:install bladeは成功、同梱テスト25件も通りました。ただしTailwindは3系のままです。 - 既存のBreeze製アプリは急いで移行しなくてよい:Breezeはコードを生成するだけの開発用パッケージで、
composer removeで外してもテストは全件通りました。 - Jetstream製アプリは計画的に移行する:
HasTeamsなどJetstreamのクラスを実行時に使うため、次のメジャー版への追随が保証されません。 - 新規は後継のスターターキット:
laravel newでReact・Vue・Svelte・Livewireから選びます。4種ともFortifyを使い、2要素認証・パスキー・メール確認が最初から有効です。
Laravel Breezeが非推奨になった経緯とリポジトリの現状
告知の根拠は、Laravel 12のリリースノートにある次の一文です。
With the introduction of our new application starter kits, Laravel Breeze and Laravel Jetstream will no longer receive additional updates.
新しいスターターキットの導入に伴い、BreezeとJetstreamは今後の更新を受けない、という意味です。公式サイトの案内もスターターキットに切り替わり、BreezeのREADMEには「This starter kit is for Laravel 11.x and prior.(Laravel 11.x以前向け)」と書かれています。
Laravel 13への互換更新は継続:v2.4.2とv5.5.3の依存範囲
一方で、保守が完全に止まったわけではありません。2026年9月28日時点のGitHubの状態は次のとおりです。
| 項目 | laravel/breeze | laravel/jetstream |
|---|---|---|
| アーカイブ | されていない | されていない |
| 最新リリース | v2.4.2(2026-05-19) | v5.5.3(2026-05-19) |
| 許容するLaravel | 11 / 12 / 13 | 11 / 12 / 13 |
| PHP要件 | 8.2以上 | 8.2以上 |
| 直近のコミット | 2026-06-20 | 2026-09-17 |
Breezeの最後のコミットは、Laravel 13以降のInertiaスタックで不要になった bootstrap.js の読み込みを外す修正でした。新機能は入らないものの、新しいLaravelで壊れない程度の手当ては続いています。パスキーやチーム機能のような新しい認証機能が入るのは、後継のスターターキットだけです。
Laravel 13.33.0でbreeze:installを実行した結果
PHP 8.5.8の環境で、Laravel 13の新規プロジェクトにBreezeを入れてみました。
composer create-project laravel/laravel app
cd app
php artisan --version
# Laravel Framework 13.33.0
composer require laravel/breeze --dev
# Installing laravel/breeze (v2.4.2)
php artisan breeze:install blade
# INFO Breeze scaffolding installed successfully.
php artisan test
# tests: 25, passed: 25
インストールは成功し、routes/auth.php にログイン・登録・メール確認などのルートが入りました。注意点はフロントエンドです。Laravel 13の雛形はTailwind CSS 4(@tailwindcss/vite)で始まりますが、Breezeは vite.config.js を書き換えてTailwindのViteプラグインを外し、tailwind.config.js と postcss.config.js を置いてTailwind 3.4.19で組み直します。package.json には使われなくなった @tailwindcss/vite が残るため、Tailwind 4の書き方で追加したCSSはそのままでは効きません。
Laravel Breezeとは:6つのスタックと生成されるコード
Breezeは、ログイン・ユーザー登録・パスワードリセット・メール確認・プロフィール編集の画面とコントローラーを、アプリ内にコピーする雛形生成ツールです。php artisan breeze:install に渡すスタックは6種類あります。
blade:BladeとAlpine.jslivewire/livewire-functional:Livewire(Voltのクラス記法/関数記法)react/vue:Inertia経由のReact・Vue(--typescriptでTypeScript化)api:画面を持たず、SPAやモバイル向けの認証APIだけを生成
Breezeの認証はFortifyを使わず、app/Http/Controllers/Auth に置かれるコントローラーなどが処理します。検証したBladeスタックでは認証コントローラーが9本ありますが、Livewireスタックでは主にVoltコンポーネントが認証処理を担います。生成後のコードはすべてアプリの持ち物になるため、Breezeは開発用依存(--dev)として入れるのが公式の手順でした。Jetstreamとの違いは次の表のとおりです。
| 比較項目 | Breeze | Jetstream | 新スターターキット |
|---|---|---|---|
| 認証処理 | 生成したコントローラー | Fortify | Fortify |
| 実行時の依存 | 不要(開発用) | laravel/jetstream | laravel/fortify |
| 画面の技術 | Blade・Livewire・Inertia | Livewire・Inertia(Vue) | React・Vue・Svelte・Livewire |
| Tailwind | 3系 | 3系 | 4系 |
| 2要素認証 | なし | あり | あり |
| パスキー | なし | なし | あり |
| チーム機能 | なし | あり | あり(--teams) |
後継のスターターキット4種の技術構成
2026年9月時点の各リポジトリのmainブランチは、いずれもPHP 8.3以上・laravel/framework ^13.17・laravel/fortify ^1.37.2・Tailwind CSS 4を前提にしています。
| キット | フロントエンド | UIライブラリ | 画面の橋渡し |
|---|---|---|---|
| React | React 19・TypeScript | shadcn/ui | Inertia 3 |
| Vue | Vue 3(Composition API)・TypeScript | shadcn-vue | Inertia 3 |
| Svelte | Svelte 5・TypeScript | shadcn-svelte | Inertia 3 |
| Livewire | Livewire 4・Blade | Flux UI | なし(サーバー描画) |
Laravel 12の発表時はReact・Vue・Livewireの3種で、Livewire版はVoltを使っていました。その後Svelte版が2026年2月に加わり、Livewire版はLivewire 4ベースに作り替えられています。React・Vue・Svelte版はルート定義をTypeScriptの型として生成するWayfinderを使うため、Fortifyの機能を無効にしたときは、フロント側に残った該当ルートの参照も消さないとビルドが失敗します。Inertia 3の仕組みはLaravel Inertiaとは、Livewire 4の書き方はLivewire(Laravel)の使い方で解説しています。
Fortifyによる認証:2要素認証とパスキーが標準で有効
4種のキットはすべて、認証のバックエンドにFortifyを使います。config/fortify.php の初期状態では次の機能が有効です。
'features' => [
Features::registration(),
Features::resetPasswords(),
Features::emailVerification(),
Features::twoFactorAuthentication([
'confirm' => true,
'confirmPassword' => true,
]),
Features::passkeys([
'confirmPassword' => true,
]),
],
2要素認証(TOTP)は2025年9月、パスキーは2026年5月にキットへ追加されました。パスキーはFortify v1.37.0(2026年4月28日)で入ったWebAuthn実装で、User モデルが PasskeyUser を実装し、passkeys テーブルのマイグレーションも最初から含まれます。Breeze自体にはパスキー機能が含まれませんが、新キットでは作成直後から設定画面で登録できます。パスキーと2要素認証の実装の細部はLaravel Fortifyとはにまとめています。
チーム機能:teamsオプションで生成される構成
laravel new に --teams を付けると、ユーザーが複数のチームに所属し、登録時に個人用チームが作られる構成で生成されます。ダッシュボードのURLは /{current_team}/dashboard になり、チームの作成・切り替え・メンバー招待の画面も付きます。Jetstreamのチーム機能に相当しますが、テーブル構成は別物です(後述)。
WorkOS AuthKit版:ソーシャルログイン・SSO・Magic Auth
各キットにはWorkOS AuthKitで認証する版があり、Google・Microsoft・GitHub・Appleのソーシャルログイン、パスキー、メールで届くコードでログインするMagic Auth、SSOが使えます。AuthKitのユーザー管理は月間アクティブユーザー100万人まで無料ですが、企業向けSSOの接続は別料金(1〜15接続なら1接続あたり月額125ドル)です。.env には WORKOS_CLIENT_ID・WORKOS_API_KEY・WORKOS_REDIRECT_URL を設定します。公式ドキュメントは、WorkOS側で「Email + Password」を無効にしてアプリがパスワードを一切持たない構成を推奨しています。料金の試算や他のIDaaSとの比較はWorkOSとはをご覧ください。
laravel newでスターターキットを作成する手順とオプション
スターターキットはLaravelインストーラーから作成します。対話形式で聞かれる項目は、オプションで先に指定できます。
composer global require laravel/installer
laravel new my-app --react
cd my-app
npm install && npm run build
composer run dev
| オプション | 効果 |
|---|---|
--react / --vue / --svelte / --livewire |
使うキットを指定 |
--livewire-class-components |
Livewireをクラス分離型で生成 |
--workos |
WorkOS AuthKit版を使う |
--teams |
チーム機能を入れる |
--no-authentication |
認証なしの blank 版キットを使う |
--pest / --phpunit |
テストフレームワークを選ぶ |
--boost / --no-boost |
Laravel Boostを入れるか |
--using=vendor/package |
Packagist上のコミュニティ製キットを使う |
作成の途中で、キット側のフック(php artisan install:features)が「Which authentication features would you like to enable?」と尋ね、メール確認・ユーザー登録・2要素認証・パスキー・パスワード確認の5項目を選ばせます。既定は全選択で、外した機能は関連するコード・設定・パッケージごと削除されます。社内ツールで公開登録が不要なら、ここで Registration を外すのが最も手早い方法です。
インストーラーを使わず composer create-project laravel/react-starter-kit を直接実行すると、2025年2月24日付のタグ v1.0.1 が入ります。キットはタグを切らずにmainを更新しているため、インストーラー(v5.32.0)は内部で --stability=dev を付けています。直接実行する場合も同じ指定が必要です。
Laravelの認証ライブラリの役割分担:Fortify・Sanctum・Passport・Socialite
「Laravelの認証ライブラリはどれを使うか」で迷う原因は、画面を持つスターターキットと、画面を持たない部品のパッケージが混在していることです。
| パッケージ | 担う範囲 | 最新版(2026年9月) |
|---|---|---|
| スターターキット | 下のFortifyを使った画面一式 | mainを随時更新 |
| Fortify | ログイン・登録・2要素認証・パスキーの処理 | v1.40.0 |
| Sanctum | SPAのCookie認証・APIトークン | v4.3.3 |
| Passport | OAuth2サーバー | v13.8.0 |
| Socialite | Google・GitHubなど外部アカウントでのログイン | v5.31.0 |
画面付きのWebアプリならスターターキット(中身はFortify)、同一の親ドメインを共有するSPAのCookie認証や、モバイルアプリのAPIトークン認証ならSanctum、他社のアプリにOAuthで認可を出す場合だけPassportです。Socialiteはこれらと併用する部品で、単体ではセッション管理を担いません。Sanctumの2つの認証方式の使い分けはLaravel Sanctumとはで扱っています。
スターターキットの選定基準:フロントエンドの担当技術とAPI要件
4種の機能差はほぼなく、違いはフロントエンドの書き方だけです。判断はチームのスキルとAPIの要否で決まります。
- PHPとBladeが中心のチーム:Livewire。JavaScriptのビルド設定を触る場面が最も少なく、Breezeの
bladeスタックからの乗り換え先にもなります。 - Reactの経験者がいる:React。shadcn/uiの部品をそのまま使えます。構成の比較はLaravelとReactの連携方法を参照してください。
- 既存のVue資産がある:Vue。Breezeの
vueスタックやJetstreamのInertia版から移る場合の近道です。 - Svelteを使いたい:Svelte。2026年2月に加わった最も新しいキットで、Svelte 5のrunesで書かれています。
スターターキットを採用すべきでない場面もあります。モバイルアプリや別ドメインのSPAが主な利用者で、Laravel側に画面を持たないAPIサーバーを作るなら、キットは不要です。php artisan install:api でSanctumを導入し、ログイン・登録・パスワードリセットのAPIをFortifyまたは独自実装で補う構成が、Breezeの api スタックの代わりになります。
新規案件でBreezeを選ぶ理由は、ほぼ残っていません。Breezeは新機能を受けないうえTailwind 3で固定され、2要素認証もパスキーもありません。Bladeを使いながらLivewireのコンポーネント構成を採用できるなら、Livewireキットが候補です。従来型のコントローラーとBladeだけで構成したい場合は、Fortifyなどで認証処理を組み込む方法もあります。
既存のBreeze・Jetstreamプロジェクトの扱い:移行の要否と手順
BreezeとJetstreamは同じ「非推奨」でも、既存アプリへの影響がまったく異なります。
Breeze製アプリ:パッケージ削除後の生成コードとテスト結果
先ほどのLaravel 13.33.0のアプリから、Breezeパッケージを削除してみました。
composer remove laravel/breeze --dev
# Removing laravel/breeze (v2.4.2)
php artisan test
# tests: 25, passed: 25
削除時に pre_uninstall イベントのエラー表示が検証環境では出ましたが、削除は完了しました。別の環境で同じ表示が出た場合は、終了コードと依存関係の状態を確認してください。削除後もAuthコントローラー9本と認証ルートはそのまま残り、テストも全件通りました。Breeze製アプリの認証コードはアプリ側に生成済みなので、Breezeの更新停止だけで直ちに動かなくなるわけではありません。ただし、生成コードの修正やLaravel更新時の互換性確認はアプリ側で続ける必要があります。急いで移行する必要はなく、パスキーや2要素認証が必要になった時点でFortifyを追加すれば足ります。
Jetstream製アプリ:実行時依存と次期メジャー版への移行計画
Jetstreamは事情が違います。生成される User モデルは Laravel\Jetstream\HasProfilePhoto や HasTeams を使い、アプリの実行時にJetstreamパッケージが必要です。現行のv5.5.3はLaravel 13までを許容しますが、「追加の更新を受けない」と告知された以上、次のメジャー版への対応は保証されません。Laravel 13のセキュリティ修正は2028年3月17日まで続くので、それまでに移行を計画するのが現実的です。各版のサポート期限はLaravelの最新バージョンとサポート期限で確認できます。
新スターターキットへの移し替え手順
既存アプリにキットを上書きする仕組みはありません。新しいキットでアプリを作り、業務コードを移すのが基本の流れです。
laravel newで、元のスタックに近いキット(Livewire版Jetstreamなら--livewire --teams)を作成する- モデル・マイグレーション・業務用のルートとコントローラーを移植する
usersテーブルの差分を埋める。キットは2要素認証の列(two_factor_secretなど)とpasskeysテーブルを前提にしている- チーム機能を使っていた場合はデータ移行スクリプトを書く。Jetstreamは
teams.user_id・personal_team・team_user、キットはteams.slug・is_personal・team_membersと、テーブル構成が異なる php artisan route:listでルート名の差を洗い出し、テストを通す
チーム機能を使っている場合は、手順4のデータ移行を個別に見積もります。使っていない場合も、認証画面やプロフィール管理、APIトークンなど、利用中の機能と独自改修の移植範囲を確認してください。
よくある質問(Laravel Breeze・スターターキット)
Laravel Breezeはなぜ非推奨になったのですか?
Laravel 12で、React・Vue・Livewireの新しいスターターキットが公式の雛形になったためです。リリースノートには、BreezeとJetstreamは今後の更新を受けないと記載されています。新キットは認証をFortifyに集約し、2要素認証やパスキーを標準で備えています。
Laravel 13でも php artisan breeze:install は使えますか?
使えます。Breeze v2.4.2はLaravel 11〜13を依存範囲に含み、Laravel 13.33.0で breeze:install blade が成功することを確認しました。ただしフロントエンドはTailwind 3で組み直されるため、Laravel 13の雛形のTailwind 4とは混在します。
Laravel Breezeとは何でしたか?
ログイン・登録・パスワードリセット・メール確認の画面とコントローラーをアプリ内に生成する、最小構成の認証スターターキットです。Blade・Livewire・React・Vue・APIのスタックから選べ、生成後のコードは自由に書き換えられました。
新しいスターターキットは何種類ありますか?ReactとVueの違いは?
React・Vue・Svelte・Livewireの4種類で、それぞれにWorkOS版があります。React版とVue版はどちらもInertia 3を使いますが、コンポーネントの記法や状態管理が異なり、UI部品もそれぞれshadcn/uiとshadcn-vueを採用しています。認証機能の差はありません。
パスキーやソーシャルログイン(SSO)は使えますか?
パスキーは標準のキットでFortifyにより最初から有効です。GoogleやGitHubでのソーシャルログインとSSOは、WorkOS AuthKit版を選ぶと使えます。標準版でソーシャルログインだけ追加したい場合はSocialiteを組み込みます。