Skip to content

Ten free Laravel Inertia packages for Vue and React apps shown together

These 10 free Laravel Inertia packages cover jobs almost every Vue or React app runs into: blocking fake signups, showing toast messages, translating the interface, building forms, making the app installable, collecting phone numbers and editing rich text. All ten are open source under the MIT license, and each one installs with a Composer or npm command.

I build and maintain every package on this list. For each one you'll find the problem it solves, who needs it, its main features, the install command and a small example.

The 10 packages at a glance ​

PackageWhat it doesStackInstall
Laravel Disposable EmailBlocks temporary email addressesLaravelcomposer require erag/laravel-disposable-email
Laravel Inertia ToastTurns Laravel flash messages into toastsInertia (Vue, React)composer require erag/laravel-inertia-toast + npm package from vendor
Laravel Lang Sync InertiaUses Laravel lang files in your pagesInertia (Vue, React, Svelte)composer require erag/laravel-lang-sync-inertia + npm install @erag/lang-sync-inertia
Laravel Inertia FormsBuilds forms from a PHP classInertia (Vue, React, Svelte)composer require erag/inertia-forms + npm install @erag/inertia-forms-vue
Laravel PWAMakes your app installable, with an offline pageLaravelcomposer require erag/laravel-pwa
Phone Number VuePhone input logic with country codesVuenpm install @erag/phone-number-vue
Phone Number ReactPhone input logic with country codesReactnpm install @erag/phone-number-react
Vue ToastificationToasts and confirm modalsVuenpm install @erag/vue-toastification
Text Editor VueRich text editor componentVuenpm install @erag/text-editor-vue
Text Editor ReactRich text editor componentReactnpm install @erag/text-editor-react

1. Laravel Disposable Email ​

It stops people from signing up with temporary, throwaway email addresses. You need it for any signup form, free trial or newsletter.

  • Checks a synced list of 136,240 domains (on 12 October 2026), plus about 3,750 bundled ones, with no API calls
  • A disposable_email validation rule, and Disposable::email() for checks in your own code
  • Whitelist, custom blacklist and subdomain blocking
  • php artisan erag:sync-disposable-email-list keeps the list up to date
bash
composer require erag/laravel-disposable-email
php
$request->validate([
    'email' => ['required', 'email', 'disposable_email'],
]);

It has more than 265,000 Packagist installs and was featured on Laravel News in May 2025. Docs · GitHub · Read next: Laravel Disposable Email Package

2. Laravel Inertia Toast ​

It shows Laravel flash messages as toast notifications in your Inertia pages. You need it if your controllers redirect after saving, updating or deleting.

  • A toast() helper for controllers, and support for standard flash keys like message and type
  • A Vue plugin and a React provider that show toasts after every redirect
  • useToast() for client-side toasts and useConfirmation() for confirm dialogs that return a promise
  • Six screen positions
bash
composer require erag/laravel-inertia-toast
npm install ./vendor/erag/laravel-inertia-toast/vue   # or /react

Register ToastPlugin (Vue) or wrap your app in InertiaToastProvider (React) once, then call the helper:

php
toast('Post created successfully', 'success', 'Created');

return redirect()->route('posts.index');

Docs · GitHub · Read next: Toast notifications in Laravel Inertia apps

3. Laravel Lang Sync Inertia ​

It lets your Vue and React pages read Laravel's own lang files, so you write each translation once. You need it for multilingual apps, or any app with translated validation messages.

  • syncLangFiles() sends only the lang files a page needs
  • __(), trans() and transChoice() with :name placeholders and plurals
  • vueLang(), reactLang() and svelteLang() helpers
  • php artisan erag:generate-lang exports translations to JSON
bash
composer require erag/laravel-lang-sync-inertia
npm install @erag/lang-sync-inertia
php
syncLangFiles('messages');

return Inertia::render('Dashboard');

In the page, const { __ } = vueLang() (or reactLang()) gives you the same __() you know from Laravel. The package has more than 45,000 Packagist installs. Docs · GitHub · Read next: Use Laravel translations in Inertia Vue and React

4. Laravel Inertia Forms ​

You describe a form once in a PHP class and render it with a single <Form> component. You need it for admin panels, CRUD screens, settings pages and onboarding wizards.

  • 22 field types, from text inputs to repeaters and file uploads
  • Validation rules generated from your fields, checked on the server by the same class
  • Conditional visibility, authorization and multi-step wizards
  • Components styled with Tailwind CSS 4, for Laravel 13 and Inertia 3
bash
composer require erag/inertia-forms
php artisan erag:install-inertia-forms
npm install @erag/inertia-forms-vue   # or @erag/inertia-forms-react
php
public function fields(): array
{
    return [
        TextInput::make('name')->required()->maxLength(100),
        TextInput::make('email')->email()->required(),
        Submit::make('Create user'),
    ];
}

Docs · GitHub · Read next: Build Inertia forms from a single PHP class

5. Laravel PWA ​

It makes your Laravel app installable on phones and desktops and shows an offline page when the connection drops. You need it for apps people open often on their phones, like dashboards and booking tools.

  • Generates manifest.json from config/pwa.php
  • Two Blade directives for your Inertia root view
  • An install button, plus an "Add to Home Screen" tip on iPhone
  • A PWA facade and a logo upload helper for admin settings
bash
composer require erag/laravel-pwa
php artisan erag:install-pwa
blade
<head>
    @PwaHead
</head>
<body>
    <x-inertia::app />
    @RegisterServiceWorkerScript
</body>

Docs · GitHub · Read next: How to turn a Laravel app into a PWA

6. Phone Number Vue ​

It gives you the logic for a country-aware phone input in Vue 3, while you keep your own markup and styles. You need it for signup, checkout or contact forms that collect phone numbers.

  • One composable, usePhoneNumber(), with a country list and calling codes
  • An input mask pattern for the selected country
  • Strips non-digits, limits the length and validates against the country's allowed lengths
  • No runtime dependencies, with TypeScript types
bash
npm install @erag/phone-number-vue
ts
import { usePhoneNumber } from '@erag/phone-number-vue';

const { selectedCountry, countryOptions, localPhone, callingCode, isValid, handleInput } =
    usePhoneNumber({ countryCode: 'US' });

Docs · GitHub · Read next: Vue phone number input with country codes

7. Phone Number React ​

It's the same phone logic as a React hook, for React 18 and 19. You need it when your Inertia pages use React.

  • One hook, usePhoneNumber(), with the same options as the Vue version
  • handleInput accepts an input event, a string or a country object
  • A mask, the calling code and an isValid flag
  • No runtime dependencies, with TypeScript types
bash
npm install @erag/phone-number-react
tsx
const phone = usePhoneNumber({ countryCode: 'US' });

<input value={phone.localPhone} onChange={phone.handleInput} placeholder={phone.mask} inputMode="numeric" />

Docs · GitHub · Read next: React phone number input with a headless hook

8. Vue Toastification ​

It adds toast notifications and confirm modals to any Vue 3 app, with or without Laravel. Use it for toasts you trigger in the browser. When the messages come from Laravel redirects, Laravel Inertia Toast is the better fit.

  • useToast() with success, error, warning and info
  • useModal() confirm dialogs that return a promise
  • Six positions, TypeScript types and erag- prefixed CSS classes
  • Zero runtime dependencies
bash
npm install @erag/vue-toastification
ts
import ToastPlugin, { useToast } from '@erag/vue-toastification';
import '@erag/vue-toastification/dist/style.css';

app.use(ToastPlugin, { position: 'bottom-right' });

// Later, inside a component:
const { success } = useToast();
success('Profile information has been updated.', 'Saved');

Docs · GitHub · Read next: Toast notifications in Vue 3 without the bloat

9. Text Editor Vue ​

It's a rich text editor component for Vue 3 with no dependencies besides Vue. You need it for blog posts, CMS pages, support replies and email templates.

  • v-model gives you the content as HTML
  • Toolbar and menubar set through one init object
  • Image uploads through callbacks you control, plus tables, mentions and merge tags
  • Source view, preview, find and replace, and light and dark themes
bash
npm install @erag/text-editor-vue
vue
<script setup lang="ts">
import { shallowRef } from 'vue';
import { Editor } from '@erag/text-editor-vue';
import '@erag/text-editor-vue/style.css';

const content = shallowRef('<p>Hello</p>');
</script>

<template>
    <Editor v-model="content" />
</template>

Docs · GitHub · Read next: A dependency-free rich text editor for Vue 3

10. Text Editor React ​

It's the same editor for React 18 and 19, used as a controlled component with value and onChange. You need it for the same jobs in React pages.

  • Controlled HTML with value and onChange, or defaultValue
  • The same init options for toolbar, menubar and plugins
  • Image upload callbacks, mentions, merge tags and templates
  • disabled and readOnly modes
bash
npm install @erag/text-editor-react
tsx
import { useState } from 'react';
import { Editor } from '@erag/text-editor-react';
import '@erag/text-editor-react/style.css';

export default function PostEditor() {
    const [content, setContent] = useState('');

    return <Editor value={content} onChange={setContent} />;
}

Docs · GitHub · Read next: A lightweight WYSIWYG editor for React

Which ones to install first ​

A SaaS app. Start with Laravel Disposable Email on your signup form and Laravel Inertia Toast for feedback after every save. Add Laravel Lang Sync Inertia once you sell in more than one language, and Phone Number Vue or React if you collect numbers.

A content site. Start with Text Editor Vue or React for writing. Add Laravel PWA so regular readers can keep your site on their home screen, and Laravel Lang Sync Inertia for more languages.

An internal admin tool. Start with Laravel Inertia Forms for CRUD screens and Laravel Inertia Toast for messages and confirm dialogs. Add Laravel PWA if staff use the tool on their phones.

Common setup mistakes ​

Forms look unstyled. Laravel Inertia Forms needs an @source line in resources/css/app.css so Tailwind scans the package. Check the path and restart npm run dev.

Toasts or editors look broken. Import the package stylesheet, such as @erag/inertia-toast-vue/style.css or @erag/text-editor-vue/style.css.

Translations show raw keys. Call syncLangFiles() before Inertia::render() for every page that needs those files.

PWA name changes don't appear. Run php artisan erag:update-manifest after editing config/pwa.php.

Editor HTML is saved as-is. Sanitize it again on the server. See store rich text safely.

Frequently asked questions ​

Are these Laravel Inertia packages free? ​

Yes. All ten are open source under the MIT license, so you can use them in personal and commercial projects.

Do they work with both Vue and React? ​

Mostly. Laravel Disposable Email and Laravel PWA work on the Laravel side, so your frontend doesn't matter. Laravel Inertia Toast, Laravel Lang Sync Inertia and Laravel Inertia Forms support both Vue and React. Phone Number and Text Editor come as separate Vue and React packages, and Vue Toastification is for Vue only.

Which Laravel versions do they support? ​

Laravel Disposable Email and Laravel Inertia Toast support Laravel 10 to 13. Laravel Lang Sync Inertia and Laravel PWA support Laravel 8 to 13. Laravel Inertia Forms supports Laravel 13 with Inertia 3 only.

Can I use the Vue and React packages without Laravel? ​

Yes. Phone Number Vue, Phone Number React, Vue Toastification and both Text Editor packages are plain npm packages. They work in any Vue 3 or React app.

Do I need all ten packages? ​

No. Each package solves one problem and works on its own. Install the ones that match your app, and add more as it grows.

Get started ​

A common starting set for a Vue SaaS app:

bash
composer require erag/laravel-disposable-email erag/laravel-inertia-toast
npm install ./vendor/erag/laravel-inertia-toast/vue

Every package has full docs at erag.in, and the source is on GitHub. For a full signup walkthrough, read a better Laravel signup form for SaaS apps.

Last updated:

Written by Amit Gupta. Code samples are MIT licensed.