Skip to content
Taneship

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.

What both kits give you

Taneship Free was built to match the official kit feature for feature. With either one, your project starts with:

  • Sign-up, sign-in with rate-limited attempts, sign-out
  • Email verification and password reset
  • Password confirmation before sensitive pages
  • Two-factor authentication with recovery codes
  • Passkeys, to sign in and to confirm a password
  • Profile, password change and account deletion
  • A light, dark or system theme
  • A dashboard behind a sidebar, built with shadcn/ui
  • Typed routes with Laravel Wayfinder, and the React Compiler
  • The MIT license

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.

CriterionTaneship FreeLaravel’s official React starter kit
FrameworkLaravel 13, Inertia 3, React 19Laravel 13, Inertia 3, React 19
PHP8.58.3 or later
TypeScriptTypeScript 7TypeScript 5
ToolchainVite+ 1: Vite, Vitest, Oxlint, OxfmtVite+ 0.3: Vite, Oxlint, Oxfmt
Componentsshadcn/ui on Base UIshadcn/ui on Radix UI
Creating a projectA GitHub template: gh repo create --templateThe Laravel installer: laravel new
Removing a featureYou delete its codeA prompt at installation removes the authentication features you do not select
LayoutsOne application layout with a sidebar, one authentication layoutSidebar 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.

CriterionTaneship FreeLaravel’s official React starter kit
Where the logic livesapp/Actions, one class per operation: RegisterUser, VerifyEmail, ResetPasswordThe laravel/fortify package, completed by two classes in app/Actions/Fortify
Routesroutes/identity.php, in your applicationRegistered by the package
Controllersapp/Http/Controllers/Auth, with resourceful methods onlyIn the package
Changing a behaviorYou edit the actionThrough the configuration, the callbacks and the contracts of Fortify
Two-factor authenticationActions of your application, on pragmarx/google2faFortify
PasskeysActions of your application, on web-auth/webauthn-lib and @simplewebauthn/browserFortify and @laravel/passkeys
Security fixesYou port them by hand from the releases of Taneshipcomposer 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.

CriterionTaneship FreeLaravel’s official React starter kit
Larastan level10, the maximum7
Baselines and ignore commentsNone, and a test rejects themNo rule
Automated refactoringRector, with the Laravel rulesNone
PHP formattingPintPint
Strict types and final classesRequired in every file, checked by a testNot required
Type coverage100% requiredNot measured
TypeScript lintType-aware Oxlint: any, non-null assertions and @ts-ignore are errorsType-aware Oxlint, with its default rules
Git hooksThey fix the staged files and check the commit messageNone

Tests

The official kit ships feature tests for its authentication and settings pages. Taneship adds architecture tests, browser tests and coverage thresholds.

CriterionTaneship FreeLaravel’s official React starter kit
FrameworkPest 5PHPUnit 12 by default
Feature testsEvery action and every routeThe authentication and settings pages
Architecture testsLayering, naming, strict types, final classes, unused code, translation keysNone
Browser testsEvery page in light and in dark mode, and the critical journeys, on PlaywrightNone
Accessibilityaxe runs on every page: no issue at any impact levelNot tested
Test coverage90% minimum, or the build failsNot measured
Front-end unit testsVitestNone
Databases testedSQLite, PostgreSQL and MySQLSQLite

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.

CriterionTaneship FreeLaravel’s official React starter kit
Server-side renderingOn by default: one build produces the client and server bundles, and the browser tests check that each page was rendered on the serverOptional: a separate build:ssr script produces the server bundle
ThemeStored on the account: it follows the user from one device to anotherStored in the browser: a cookie and localStorage
Interface textIn translation files, ready for other languagesWritten in the components, in English
Right-to-left languagesReady: the page direction follows the locale, the components use logical CSS classes, and keyboard navigation and popups follow the directionNot set up: the components use left and right classes
Security headersSent by a middleware of the applicationLeft to you
LighthouseAt least 95 on mobile for the public pages, checked in CINot measured

Coding agents

Both kits work with coding agents. Taneship writes its rules down for them, then lets the tools reject what breaks one.

CriterionTaneship FreeLaravel’s official React starter kit
ConventionsAGENTS.md: stack, structure, naming, tests and boundariesNo conventions file in the repository
Laravel BoostIncluded, for its MCP serverNot in the repository: the Laravel installer can add it
What stops a driftLarastan level 10, the architecture tests and the coverage thresholds fail the buildLarastan 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.

CriterionTaneship FreeLaravel’s official React starter kit
WorkflowsFour: quality gates, Lighthouse, commit messages, dependency auditsOne: lint, type checks and tests
RuntimePHP 8.5 and Node.js 24PHP 8.3 and Node.js 22
Dependenciescomposer audit and npm audit on every push, and every weekDependabot, for the GitHub Actions
Commit messagesConventional Commits, checked on every commit and in CINo 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;
    }
}
The sign-up action of Taneship Free, as it ships.

Try both in five minutes

Neither kit needs a third-party key. Install them side by side, then read their code.

Taneship Free
gh repo create my-app --template taneship/taneship --private --clonecd my-appcomposer setupcomposer dev
The seeders create a demo user to sign in with.
Laravel’s official kit
laravel new my-appcd my-appcomposer dev
The installer asks for a starter kit: choose React.

Questions 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.