Taneship Free vs Laravel’s official React starter kit
Both kits are free, under the MIT license, and ship the same features on Laravel 13, Inertia 3 and React 19. They differ in where the authentication code lives, and in how much of the code a tool checks. This page compares them file by file.
Compared on September 28, 2026: commit 717b8f5 of the official kit, and the main branch of Taneship Free.
Which one to choose
Taneship Free
Choose Taneship Free if
- You want to read and change every line of the authentication, with no package between you and the code.
- You want static analysis at its maximum from the first commit: Larastan level 10, with no baseline.
- Coding agents write part of your code, and you want tools to reject what breaks a rule.
- You want every page rendered on the server and tested in a browser.
- You are considering Taneship Pro or Teams: Free is the code they start from.
Laravel’s official React starter kit
Choose the official kit if
- You want a kit maintained by the Laravel team and documented on laravel.com.
- You prefer authentication that stays in a package: composer update brings the fixes of Laravel Fortify.
- You want to select the authentication features when laravel new creates the project.
- You run PHP 8.3 or 8.4.
- You want a choice of layouts: sidebar or header, and three designs for the sign-in pages.
The detailed comparison
Seven areas, from the stack to continuous integration. Every line comes from the files of the two repositories.
Stack and project setup
The foundations are the same. Taneship pins newer versions and asks for a newer PHP. The official kit installs through the Laravel installer and offers more layouts.
| Criterion | Taneship Free | Laravel’s official React starter kit |
|---|---|---|
| Framework | Laravel 13, Inertia 3, React 19 | Laravel 13, Inertia 3, React 19 |
| PHP | 8.5 | 8.3 or later |
| TypeScript | TypeScript 7 | TypeScript 5 |
| Toolchain | Vite+ 1: Vite, Vitest, Oxlint, Oxfmt | Vite+ 0.3: Vite, Oxlint, Oxfmt |
| Components | shadcn/ui on Base UI | shadcn/ui on Radix UI |
| Creating a project | A GitHub template: gh repo create --template | The Laravel installer: laravel new |
| Removing a feature | You delete its code | A prompt at installation removes the authentication features you do not select |
| Layouts | One application layout with a sidebar, one authentication layout | Sidebar or header layout, and three authentication layouts |
Authentication code
This is the largest difference. The official kit delegates authentication to Laravel Fortify: the routes, the controllers and the logic live in vendor/, and your application configures them through config/fortify.php and a service provider. Taneship has no Fortify: each operation is an action of your application, called by a controller you can read.
| Criterion | Taneship Free | Laravel’s official React starter kit |
|---|---|---|
| Where the logic lives | app/Actions, one class per operation: RegisterUser, VerifyEmail, ResetPassword | The laravel/fortify package, completed by two classes in app/Actions/Fortify |
| Routes | routes/identity.php, in your application | Registered by the package |
| Controllers | app/Http/Controllers/Auth, with resourceful methods only | In the package |
| Changing a behavior | You edit the action | Through the configuration, the callbacks and the contracts of Fortify |
| Two-factor authentication | Actions of your application, on pragmarx/google2fa | Fortify |
| Passkeys | Actions of your application, on web-auth/webauthn-lib and @simplewebauthn/browser | Fortify and @laravel/passkeys |
| Security fixes | You port them by hand from the releases of Taneship | composer update brings the fixes of Fortify |
Static analysis and code rules
Both kits run Larastan and Pint. Taneship raises Larastan to its maximum, adds Rector, and turns its conventions into rules that fail the build.
| Criterion | Taneship Free | Laravel’s official React starter kit |
|---|---|---|
| Larastan level | 10, the maximum | 7 |
| Baselines and ignore comments | None, and a test rejects them | No rule |
| Automated refactoring | Rector, with the Laravel rules | None |
| PHP formatting | Pint | Pint |
| Strict types and final classes | Required in every file, checked by a test | Not required |
| Type coverage | 100% required | Not measured |
| TypeScript lint | Type-aware Oxlint: any, non-null assertions and @ts-ignore are errors | Type-aware Oxlint, with its default rules |
| Git hooks | They fix the staged files and check the commit message | None |
Tests
The official kit ships feature tests for its authentication and settings pages. Taneship adds architecture tests, browser tests and coverage thresholds.
| Criterion | Taneship Free | Laravel’s official React starter kit |
|---|---|---|
| Framework | Pest 5 | PHPUnit 12 by default |
| Feature tests | Every action and every route | The authentication and settings pages |
| Architecture tests | Layering, naming, strict types, final classes, unused code, translation keys | None |
| Browser tests | Every page in light and in dark mode, and the critical journeys, on Playwright | None |
| Accessibility | axe runs on every page: no issue at any impact level | Not tested |
| Test coverage | 90% minimum, or the build fails | Not measured |
| Front-end unit tests | Vitest | None |
| Databases tested | SQLite, PostgreSQL and MySQL | SQLite |
Rendering, theme and interface text
Both kits render React pages through Inertia. Taneship renders them on the server by default, stores the theme on the account, keeps every text in a translation file and reads right to left as well.
| Criterion | Taneship Free | Laravel’s official React starter kit |
|---|---|---|
| Server-side rendering | On by default: one build produces the client and server bundles, and the browser tests check that each page was rendered on the server | Optional: a separate build:ssr script produces the server bundle |
| Theme | Stored on the account: it follows the user from one device to another | Stored in the browser: a cookie and localStorage |
| Interface text | In translation files, ready for other languages | Written in the components, in English |
| Right-to-left languages | Ready: the page direction follows the locale, the components use logical CSS classes, and keyboard navigation and popups follow the direction | Not set up: the components use left and right classes |
| Security headers | Sent by a middleware of the application | Left to you |
| Lighthouse | At least 95 on mobile for the public pages, checked in CI | Not measured |
Coding agents
Both kits work with coding agents. Taneship writes its rules down for them, then lets the tools reject what breaks one.
| Criterion | Taneship Free | Laravel’s official React starter kit |
|---|---|---|
| Conventions | AGENTS.md: stack, structure, naming, tests and boundaries | No conventions file in the repository |
| Laravel Boost | Included, for its MCP server | Not in the repository: the Laravel installer can add it |
| What stops a drift | Larastan level 10, the architecture tests and the coverage thresholds fail the build | Larastan level 7 and the feature tests |
Continuous integration
Each kit ships its GitHub Actions workflows. The official kit has one, which runs the lint, the type checks and the tests. Taneship has four.
| Criterion | Taneship Free | Laravel’s official React starter kit |
|---|---|---|
| Workflows | Four: quality gates, Lighthouse, commit messages, dependency audits | One: lint, type checks and tests |
| Runtime | PHP 8.5 and Node.js 24 | PHP 8.3 and Node.js 22 |
| Dependencies | composer audit and npm audit on every push, and every week | Dependabot, for the GitHub Actions |
| Commit messages | Conventional Commits, checked on every commit and in CI | No rule |
One example: the sign-up
In the official kit, the routes and the controller of Fortify receive the request. They call app/Actions/Fortify/CreateNewUser, a class that implements a contract of Fortify: it validates an array of input and creates the user. Fortify then signs the user in and redirects.
In Taneship, routes/identity.php sends the request to RegistrationController. RegisterUserRequest validates it and returns a RegistrationData object, the RegisterUser action creates the user, and the controller signs them in. Four short files, all in your application.
app/Actions/RegisterUser.php
<?php
declare(strict_types=1);
namespace App\Actions;
use App\Data\RegistrationData;
use App\Models\User;
use Illuminate\Auth\Events\Registered;
final readonly class RegisterUser
{
public function handle(RegistrationData $registration): User
{
$user = User::query()->create([
'name' => $registration->name,
'email' => $registration->email,
'password' => $registration->password,
]);
event(new Registered($user));
return $user;
}
}Try both in five minutes
Neither kit needs a third-party key. Install them side by side, then read their code.
gh repo create my-app --template taneship/taneship --private --clonecd my-appcomposer setupcomposer devlaravel new my-appcd my-appcomposer devQuestions about this comparison
Is Taneship a fork of Laravel’s React starter kit?
No. Taneship Free is written from scratch. It reproduces the features of the official kit and shares its stack: Laravel 13, Inertia 3, React 19, Wayfinder and shadcn/ui.
Does Taneship Free have every feature of the official kit?
Yes: sign-up, sign-in, email verification, password reset, password confirmation, two-factor authentication, passkeys, profile, password change, account deletion and the choice of theme. Two things are left out on purpose: the alternative layouts, which are presentation choices, and the feature prompt of the installer. In Taneship, you delete the code you do not want.
Why does Taneship not use Laravel Fortify?
Fortify keeps the authentication logic in a package and drives it through configuration and callbacks. Taneship writes authentication in actions and controllers of your application, so that you read and change it like the rest of your code. The trade-off: you port security fixes from the releases of Taneship by hand, where composer update brings those of Fortify.
Does Laravel’s React starter kit support server-side rendering?
Yes, as an option: its build:ssr script produces the server bundle. In Taneship, server-side rendering is on by default: the standard build produces both bundles, and each browser test checks that the page was rendered on the server.
Is Larastan level 10 harder to live with than level 7?
It asks more of the code you write: levels 8 to 10 reject calls on values that may be null, and operations on values whose type is unknown. Taneship passes level 10 with no baseline, so your project starts from zero errors, and each error you meet points to a line of your own code.
Which of the two kits suits coding agents better?
Both work with Claude Code, Codex, Cursor and the others. Taneship gives agents written conventions in AGENTS.md, then checks what they write: Larastan level 10, the architecture tests, a 90% coverage threshold and the browser tests reject code that breaks a rule, whoever wrote it.
Can I move a project from the official kit to Taneship?
Not automatically: the two kits organize their code differently, and Taneship has no installer and no upgrade command. For a project that has barely started, create a new one from the Taneship template and move your code into it. For an older project, take what you need: the quality gates, the architecture tests and AGENTS.md can be copied one by one.
What does Taneship cost?
Taneship Free is free and open source under the MIT license, like the official kit. Taneship Pro and Taneship Teams, which add what a SaaS needs to sell, are paid editions, announced as coming soon.
Read both, then decide
The official kit is one command away, and Taneship Free is a public repository. The code is the best argument either of them has.