<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Erag Blog</title>
    <link>https://erag.in/blog/</link>
    <description>Practical guides for Laravel, Inertia.js, Vue and React developers.</description>
    <language>en-us</language>
    <item>
      <title>How to Block Disposable Emails in Laravel (With a Pest Test)</title>
      <link>https://erag.in/blog/block-disposable-emails-laravel.html</link>
      <guid isPermaLink="true">https://erag.in/blog/block-disposable-emails-laravel.html</guid>
      <description>Block disposable emails in Laravel with one validation rule. Install the package, protect registration, add your own domains and keep the list synced.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>How to Add a Confirm Dialog Before Deleting in Laravel Inertia (Vue or React)</title>
      <link>https://erag.in/blog/confirmation-dialogs-laravel-inertia.html</link>
      <guid isPermaLink="true">https://erag.in/blog/confirmation-dialogs-laravel-inertia.html</guid>
      <description>Build an Inertia confirm dialog for delete buttons in Laravel: await the user's choice in Vue 3 or React, send the request, then flash a toast from the server.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Build an Email Template Editor in React With Merge Tags and Laravel</title>
      <link>https://erag.in/blog/email-templates-merge-tags-react.html</link>
      <guid isPermaLink="true">https://erag.in/blog/email-templates-merge-tags-react.html</guid>
      <description>Let your team edit transactional emails in a React email template editor with merge tags and starter templates, then resolve and send them safely from Laravel.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Headless Phone Input vs Ready-Made Components</title>
      <link>https://erag.in/blog/headless-phone-input-vs-component-libraries.html</link>
      <guid isPermaLink="true">https://erag.in/blog/headless-phone-input-vs-component-libraries.html</guid>
      <description>Compare a headless phone input with ready-made phone components on styling, accessibility, bundle size, validation depth and upkeep, and learn when each fits.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Laravel Email Validation: RFC, DNS and MX Explained</title>
      <link>https://erag.in/blog/laravel-email-validation-rfc-dns.html</link>
      <guid isPermaLink="true">https://erag.in/blog/laravel-email-validation-rfc-dns.html</guid>
      <description>Laravel email validation with DNS and RFC modes explained. Learn what rfc, strict, dns and spoof check, when MX lookups help and when they slow you down.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Turn Laravel Flash Messages Into Inertia Toasts Without Rewriting Controllers</title>
      <link>https://erag.in/blog/laravel-flash-messages-inertia-toasts.html</link>
      <guid isPermaLink="true">https://erag.in/blog/laravel-flash-messages-inertia-toasts.html</guid>
      <description>Show Laravel flash messages in Inertia as toasts: why they vanish, which session keys the package reads, one-toast limits, validation errors and Pest tests.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Build Inertia Forms From a Single PHP Class</title>
      <link>https://erag.in/blog/laravel-inertia-forms-php-class.html</link>
      <guid isPermaLink="true">https://erag.in/blog/laravel-inertia-forms-php-class.html</guid>
      <description>Build Laravel Inertia forms from one PHP class with erag/inertia-forms. Fields, layout, rules and permissions live in Laravel, and one component renders them.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>How to Add Toast Notifications to a Laravel Inertia App (Vue or React)</title>
      <link>https://erag.in/blog/laravel-inertia-toast-notifications.html</link>
      <guid isPermaLink="true">https://erag.in/blog/laravel-inertia-toast-notifications.html</guid>
      <description>Add Inertia toast notifications to Laravel with a toast() helper in your controllers and one plugin for Vue 3 or React. Full setup, options and fixes.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Sharing Laravel Lang Files With Your Frontend</title>
      <link>https://erag.in/blog/laravel-lang-files-frontend-json.html</link>
      <guid isPermaLink="true">https://erag.in/blog/laravel-lang-files-frontend-json.html</guid>
      <description>Two ways to get Laravel lang files to your frontend, Inertia props or exported JSON, and how to choose, configure and build with each one.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Add an Install App Button to Your Laravel Site</title>
      <link>https://erag.in/blog/laravel-pwa-install-button.html</link>
      <guid isPermaLink="true">https://erag.in/blog/laravel-pwa-install-button.html</guid>
      <description>How the PWA install prompt works in Laravel. Use the built-in floating button, restyle it, handle iOS Safari, or build your own Install app button in Vue.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>A Better Laravel Signup Form for SaaS Apps (A Practical Checklist)</title>
      <link>https://erag.in/blog/laravel-saas-signup-checklist.html</link>
      <guid isPermaLink="true">https://erag.in/blog/laravel-saas-signup-checklist.html</guid>
      <description>A practical Laravel signup form checklist for SaaS apps. Block burner emails, collect phone numbers per country, show clear feedback and translate messages.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Use Laravel Translations in Inertia Vue and React</title>
      <link>https://erag.in/blog/laravel-translations-inertia-vue-react.html</link>
      <guid isPermaLink="true">https://erag.in/blog/laravel-translations-inertia-vue-react.html</guid>
      <description>Use Laravel translations in Inertia Vue and React pages with syncLangFiles(), __() and trans(), including placeholders, plurals and missing keys.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Rich Text Image Uploads With Laravel and Vue: Upload, Paste, Resize and Delete</title>
      <link>https://erag.in/blog/laravel-vue-editor-image-upload.html</link>
      <guid isPermaLink="true">https://erag.in/blog/laravel-vue-editor-image-upload.html</guid>
      <description>Wire a Vue editor image upload to Laravel with a form request, public disk storage, progress reporting, CSRF-safe requests and safe server-side deletion.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Mentions and Merge Tags in a Vue Text Editor, With a Laravel Backend</title>
      <link>https://erag.in/blog/mentions-merge-tags-vue-editor.html</link>
      <guid isPermaLink="true">https://erag.in/blog/mentions-merge-tags-vue-editor.html</guid>
      <description>Add @mentions with Laravel user search and double-brace merge tags to a Vue editor, then read mentions from the saved HTML to send notifications.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Multi-Step Form Wizards in Laravel Inertia</title>
      <link>https://erag.in/blog/multi-step-form-wizard-laravel-inertia.html</link>
      <guid isPermaLink="true">https://erag.in/blog/multi-step-form-wizard-laravel-inertia.html</guid>
      <description>Build a multi step form in Laravel Inertia with server-checked steps, conditional steps and one final submit, using fieldsets in a single PHP form class.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Build a Multilingual Laravel Inertia App</title>
      <link>https://erag.in/blog/multilingual-laravel-inertia-app.html</link>
      <guid isPermaLink="true">https://erag.in/blog/multilingual-laravel-inertia-app.html</guid>
      <description>Build a multilingual Laravel Inertia app with locale middleware, a language switcher, translated validation errors and lang files that scale with your pages.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>E.164 Phone Number Format: How to Store and Display Phone Numbers</title>
      <link>https://erag.in/blog/phone-number-formats-e164-web-forms.html</link>
      <guid isPermaLink="true">https://erag.in/blog/phone-number-formats-e164-web-forms.html</guid>
      <description>Learn the E.164 phone number format, how it differs from national display, and how to store and show phone numbers from web forms, with a React example.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>How to Build a Vue Confirm Modal You Can Await</title>
      <link>https://erag.in/blog/promise-confirm-modal-vue-3.html</link>
      <guid isPermaLink="true">https://erag.in/blog/promise-confirm-modal-vue-3.html</guid>
      <description>Build a Vue confirm modal you can await in Vue 3. Replace v-if state and emit handlers with one async call, plus delete and unsaved-changes examples.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Web App Manifest and Service Worker in Laravel</title>
      <link>https://erag.in/blog/pwa-manifest-service-worker-laravel.html</link>
      <guid isPermaLink="true">https://erag.in/blog/pwa-manifest-service-worker-laravel.html</guid>
      <description>What the web app manifest and service worker do in a Laravel PWA, how config/pwa.php becomes manifest.json, and how to change the name and icon at runtime.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Style a React Phone Input With Tailwind CSS</title>
      <link>https://erag.in/blog/react-phone-input-tailwind.html</link>
      <guid isPermaLink="true">https://erag.in/blog/react-phone-input-tailwind.html</guid>
      <description>Style a React phone input with Tailwind CSS as one input group, with focus rings, error and disabled states, dark mode and a calling code prefix.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>A Phone Number Input Hook for React (Country Codes Included)</title>
      <link>https://erag.in/blog/react-phone-number-input-hook.html</link>
      <guid isPermaLink="true">https://erag.in/blog/react-phone-number-input-hook.html</guid>
      <description>Build a React phone number input with country selection, calling codes and length validation using the headless usePhoneNumber hook and your own JSX.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>A Lightweight WYSIWYG Editor for React: Controlled, Uncontrolled and Inertia</title>
      <link>https://erag.in/blog/react-rich-text-editor-wysiwyg.html</link>
      <guid isPermaLink="true">https://erag.in/blog/react-rich-text-editor-wysiwyg.html</guid>
      <description>Set up a React WYSIWYG editor for React 18 and 19 as a controlled or uncontrolled input, with Next.js, Inertia useForm, autosave and custom toolbars.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Store Rich Text Safely: How to Sanitize Rich Text HTML in Laravel</title>
      <link>https://erag.in/blog/sanitize-rich-text-html-laravel.html</link>
      <guid isPermaLink="true">https://erag.in/blog/sanitize-rich-text-html-laravel.html</guid>
      <description>Why the editor's browser sanitizer is not enough, and how to sanitize rich text HTML in Laravel with an allow-list, a form request, Pest tests and a CSP header.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>One Set of Validation Rules for Laravel and Inertia</title>
      <link>https://erag.in/blog/shared-validation-laravel-inertia.html</link>
      <guid isPermaLink="true">https://erag.in/blog/shared-validation-laravel-inertia.html</guid>
      <description>Stop duplicating Laravel Inertia validation in PHP and Vue. Generate rules from field definitions, skip hidden fields, and test them with Pest.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Stop Free Trial Abuse With Burner Email Checks</title>
      <link>https://erag.in/blog/stop-free-trial-abuse-laravel.html</link>
      <guid isPermaLink="true">https://erag.in/blog/stop-free-trial-abuse-laravel.html</guid>
      <description>Free trial abuse often starts with a burner inbox. Block disposable emails at sign-up, gate trials, log what you catch and grow your own Laravel blocklist.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Toast Notification UX: When to Use a Toast and When to Skip It</title>
      <link>https://erag.in/blog/toast-notification-ux-best-practices.html</link>
      <guid isPermaLink="true">https://erag.in/blog/toast-notification-ux-best-practices.html</guid>
      <description>Toast notification UX rules that hold up: which messages belong in a toast, how long to show them, where to place them and how to keep them accessible.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>How to Turn a Laravel App Into a PWA</title>
      <link>https://erag.in/blog/turn-laravel-app-into-pwa.html</link>
      <guid isPermaLink="true">https://erag.in/blog/turn-laravel-app-into-pwa.html</guid>
      <description>A step-by-step Laravel PWA setup. Install the package, configure the manifest, add a 512x512 logo, register the service worker and test it over HTTPS.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>How to Validate International Phone Numbers in Vue 3</title>
      <link>https://erag.in/blog/validate-phone-numbers-vue.html</link>
      <guid isPermaLink="true">https://erag.in/blog/validate-phone-numbers-vue.html</guid>
      <description>A practical guide to Vue phone validation for international numbers, covering country length rules, error timing, accessibility and matching checks in Laravel.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>Build a Country-Aware Phone Input in Vue 3</title>
      <link>https://erag.in/blog/vue-3-phone-number-input.html</link>
      <guid isPermaLink="true">https://erag.in/blog/vue-3-phone-number-input.html</guid>
      <description>Build a Vue phone number input with a country selector, calling code, length checks and a clean v-model, using the headless usePhoneNumber composable.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>A Dependency-Free Rich Text Editor for Vue 3: Setup, Toolbars and v-model</title>
      <link>https://erag.in/blog/vue-3-rich-text-editor.html</link>
      <guid isPermaLink="true">https://erag.in/blog/vue-3-rich-text-editor.html</guid>
      <description>Add a Vue 3 rich text editor with v-model, per-screen toolbars, readonly mode and instance methods, using a component whose only peer dependency is Vue.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
    <item>
      <title>How to Add Toast Notifications to a Vue 3 App Without the Bloat</title>
      <link>https://erag.in/blog/vue-3-toast-notifications.html</link>
      <guid isPermaLink="true">https://erag.in/blog/vue-3-toast-notifications.html</guid>
      <description>Add Vue 3 toast notifications with @erag/vue-toastification. Install it, register the plugin, call useToast() and set duration and position per toast.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <dc:creator>Amit Gupta</dc:creator>
    </item>
  </channel>
</rss>
