<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ai-tools</title>
    <description>The latest articles on DEV Community by Ai-tools (@aibliogs).</description>
    <link>https://dev.to/aibliogs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3892560%2F601c2eb5-baae-4c00-8fa4-6cdd73e70ade.png</url>
      <title>DEV Community: Ai-tools</title>
      <link>https://dev.to/aibliogs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aibliogs"/>
    <language>en</language>
    <item>
      <title>How to Integrate shadcn/ui into Laravel Using Inertia + React (Step-by-Step Guide)</title>
      <dc:creator>Ai-tools</dc:creator>
      <pubDate>Thu, 23 Apr 2026 10:43:12 +0000</pubDate>
      <link>https://dev.to/aibliogs/how-to-integrate-shadcnui-into-laravel-using-inertia-react-step-by-step-guide-2mm6</link>
      <guid>https://dev.to/aibliogs/how-to-integrate-shadcnui-into-laravel-using-inertia-react-step-by-step-guide-2mm6</guid>
      <description>&lt;p&gt;Modern web development often feels like choosing between two worlds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend frameworks like Laravel&lt;/li&gt;
&lt;li&gt;Frontend frameworks like React
But what if you could combine them cleanly - without building a full API layer or managing two separate applications?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s exactly what this guide will show you.&lt;br&gt;
We’ll build a modern Laravel application using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Laravel&lt;/strong&gt; (backend logic)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inertia.js&lt;/strong&gt; (bridge between backend and frontend)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React&lt;/strong&gt; (UI rendering)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind CSS v4&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;shadcn/ui&lt;/strong&gt; (beautiful, customizable components)
If you're a beginner, don’t worry. We’ll go step by step and explain what each piece does and why we need it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of this tutorial, you’ll have a working Laravel + React + shadcn setup.&lt;br&gt;
&lt;strong&gt;What We’re Building (Beginner-Friendly Explanation)&lt;/strong&gt;&lt;br&gt;
Before jumping into commands, let’s understand the architecture in simple terms.&lt;/p&gt;

&lt;p&gt;Normally, Laravel renders Blade templates on the server.&lt;/p&gt;

&lt;p&gt;But with &lt;strong&gt;Inertia.js&lt;/strong&gt;, Laravel sends data to a React frontend without building a separate API. You still define routes in Laravel, but React handles rendering the UI.&lt;/p&gt;

&lt;p&gt;shadcn/ui then gives us high-quality UI components built on Tailwind CSS.&lt;/p&gt;

&lt;p&gt;So the flow looks like this:&lt;/p&gt;

&lt;p&gt;Laravel Route → Inertia → React Page → shadcn Component&lt;/p&gt;

&lt;p&gt;This keeps everything inside one project while still giving us a modern frontend.&lt;/p&gt;
&lt;h1&gt;
  
  
  Prerequisites
&lt;/h1&gt;

&lt;p&gt;Make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PHP 8.1+&lt;/li&gt;
&lt;li&gt;Composer&lt;/li&gt;
&lt;li&gt;Node.js 18+&lt;/li&gt;
&lt;li&gt;npm&lt;/li&gt;
&lt;li&gt;Basic knowledge of Laravel and React&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you need Laravel installation instructions, refer to the official documentation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://laravel.com/docs/installation" rel="noopener noreferrer"&gt;https://laravel.com/docs/installation&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Create a New Laravel Project
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Let’s begin with a fresh Laravel app:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;composer create-project laravel/laravel laravel-shadcnui&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;shadcn-laravel

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Install Node dependencies:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this stage, we have a clean Laravel project with Vite support.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Install Inertia (Laravel Side)&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Now install Inertia on the backend:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require inertiajs/inertia-laravel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generate the middleware:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan inertia:middleware

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app/Http/Middleware/HandleInertiaRequests.php

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8vumy8yuxvzsvp8k4x1.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8vumy8yuxvzsvp8k4x1.webp" alt=" " width="800" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Important: Why php artisan install:react Fails
&lt;/h2&gt;

&lt;p&gt;You might try running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan &lt;span class="nb"&gt;install&lt;/span&gt;:react

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll get an error because this command does not exist in Laravel.&lt;/p&gt;

&lt;p&gt;That’s why you see an error.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgso78xch399509wdis6b.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgso78xch399509wdis6b.webp" alt=" " width="779" height="101"&gt;&lt;/a&gt;&lt;br&gt;
Laravel does not automatically install React. You must install React manually on the frontend side using npm.&lt;/p&gt;
&lt;h2&gt;
  
  
  Register Inertia Middleware
&lt;/h2&gt;

&lt;p&gt;Laravel 11+ changed its structure and removed Kernel.php. So middleware registration differs depending on your version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Laravel 10 and Older&lt;/strong&gt;&lt;br&gt;
Edit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app/Http/Kernel.php

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="s1"&gt;'web'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="mf"&gt;...&lt;/span&gt;
    &lt;span class="nc"&gt;\App\Http\Middleware\HandleInertiaRequests&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;class&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;],&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;inside the web middleware group.&lt;br&gt;
&lt;strong&gt;Laravel 11 / 12&lt;/strong&gt;&lt;br&gt;
Edit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bootstrap/app.php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;withMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Middleware&lt;/span&gt; &lt;span class="nv"&gt;$middleware&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;//&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update middleware section:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;App\Http\Middleware\HandleInertiaRequests&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Illuminate\Foundation\Configuration\Middleware&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;withMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Middleware&lt;/span&gt; &lt;span class="nv"&gt;$middleware&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$middleware&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;web&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="nc"&gt;HandleInertiaRequests&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;class&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg5kiuf9j83sh36ikmbgd.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg5kiuf9j83sh36ikmbgd.webp" alt=" " width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Install React + Vite
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;react react-dom
npm &lt;span class="nb"&gt;install&lt;/span&gt; @vitejs/plugin-react &lt;span class="nt"&gt;--save-dev&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Tailwind CSS v4
&lt;/h2&gt;

&lt;p&gt;Install Tailwind v4 using the Vite plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i tailwindcss @tailwindcss/vite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tailwind v4 uses a Vite plugin approach instead of the old PostCSS method.&lt;br&gt;
&lt;strong&gt;Update vite.config.js:&lt;/strong&gt;&lt;br&gt;
Make sure it looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineConfig&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vite&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;laravel&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;laravel-vite-plugin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;react&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@vitejs/plugin-react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;tailwindcss&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@tailwindcss/vite&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineConfig&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;alias&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;resources/js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nf"&gt;laravel&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;resources/css/app.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;resources/js/app.jsx&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="na"&gt;refresh&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}),&lt;/span&gt;
    &lt;span class="nf"&gt;tailwindcss&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="nf"&gt;react&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0pv3vno4mpjr2bgfmrij.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0pv3vno4mpjr2bgfmrij.webp" alt=" " width="800" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remove Old PostCSS Config (If Exists)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you previously followed a Tailwind v3 tutorial and created:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;postcss.config.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;autoprefixer setup
Remove them unless you explicitly need PostCSS plugins.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Tailwind v4, using old PostCSS config often causes errors.&lt;/p&gt;

&lt;h1&gt;
  
  
  Install Inertia React (Frontend)
&lt;/h1&gt;

&lt;p&gt;Now install Inertia for React:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i @inertiajs/react

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Configure Root Blade View
&lt;/h1&gt;

&lt;p&gt;Create:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resources/views/app.blade.php

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"utf-8"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    @vite(['resources/css/app.css', 'resources/js/app.jsx'])
    @inertiaHead
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    @inertia
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Configure Inertia Root View
&lt;/h1&gt;

&lt;p&gt;If &lt;code&gt;config/inertia.php&lt;/code&gt; does not exist, publish it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;php artisan vendor:publish &lt;span class="nt"&gt;--provider&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Inertia&lt;/span&gt;&lt;span class="se"&gt;\S&lt;/span&gt;&lt;span class="s2"&gt;erviceProvider"&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Configure Routes
&lt;/h1&gt;

&lt;p&gt;Open: &lt;code&gt;routes/web.php&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Inertia\Inertia&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nc"&gt;Route&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;Inertia&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Home'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Create React Entry File
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;resources/js/app.jsx&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../css/app.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createInertiaApp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@inertiajs/react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createRoot&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-dom/client&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nf"&gt;createInertiaApp&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;glob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./Pages/**/*.jsx&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;eager&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;pages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;`./Pages/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.jsx`&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;createRoot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="p"&gt;{...&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;)
&lt;/span&gt;  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Create First Page
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;resources/js/Pages/Home.jsx&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Home&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"p-6"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hello Inertia + React&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Add shadcn/ui
&lt;/h1&gt;

&lt;p&gt;Official guide:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ui.shadcn.com/docs/installation/vite" rel="noopener noreferrer"&gt;https://ui.shadcn.com/docs/installation/vite&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Initialize:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest init

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add button:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx shadcn@latest add button

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fye9qhe5wtb79i8o99ffs.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fye9qhe5wtb79i8o99ffs.webp" alt=" " width="800" height="70"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Use the Component
&lt;/h1&gt;

&lt;p&gt;Update &lt;code&gt;Home.jsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Button&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@/components/ui/button&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Home&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"p-6 text-center bg-amber-50"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"mr-2"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hello i am shadcn ui in laravel with vite and React&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;span&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Click me&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You are now officially using shadcn/ui inside Laravel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw1cym7umcc7s9nc6ds9z.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw1cym7umcc7s9nc6ds9z.webp" alt=" " width="800" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Add Watch Command (Optional but Helpful)
&lt;/h1&gt;

&lt;p&gt;In &lt;code&gt;package.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"watch"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vite build --watch"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run watch

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows you to see changes without rebuilding manually.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp736ed1q87slska20qtg.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp736ed1q87slska20qtg.webp" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;br&gt;
Run the Project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run warch
php artisan serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Visit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://127.0.0.1:8000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see your shadcn Button rendered inside a Laravel app.&lt;/p&gt;

&lt;h1&gt;
  
  
  Clone the Final Source Code
&lt;/h1&gt;

&lt;p&gt;If you want to skip the manual setup and directly explore the completed project, you can clone the repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gitclone https://github.com/smitbhalodiya/laravel-shadcnui.gitcd laravel-shadcnui
composer &lt;span class="nb"&gt;install
&lt;/span&gt;npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
php artisan serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repository link:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/smitbhalodiya/laravel-shadcnui" rel="noopener noreferrer"&gt;https://github.com/smitbhalodiya/laravel-shadcnui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This repository contains the complete working configuration described in this article.&lt;br&gt;
&lt;strong&gt;Final Project Structure&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;resources/
 ├── js/
 │   ├── app.jsx
 │   ├── Pages/
 │   └── components/ui/
 ├── css/app.css
 └── views/app.blade.php

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjysw7q00apdfu0mimldr.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjysw7q00apdfu0mimldr.webp" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also check Shadcn Studio, which you can use with Laravel using Inertia React as well. It comes with 700+ Ready To use &lt;a href="https://shadcnstudio.com/blocks" rel="noopener noreferrer"&gt;Shadcn Blocks&lt;/a&gt;, 1000+ &lt;a href="https://shadcnstudio.com/components" rel="noopener noreferrer"&gt;Shadcn Component&lt;/a&gt; Variants. Also, it offers &lt;a href="https://shadcnstudio.com/builder" rel="noopener noreferrer"&gt;Shadcn Builder&lt;/a&gt;, Shadcn Templates, AI MCP builder, and the Figma design system as well.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Integrating shadcn/ui into Laravel becomes straightforward once you understand the roles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Laravel handles backend logic&lt;/li&gt;
&lt;li&gt;Inertia connects backend and frontend&lt;/li&gt;
&lt;li&gt;React renders the interface&lt;/li&gt;
&lt;li&gt;Tailwind styles everything&lt;/li&gt;
&lt;li&gt;shadcn provides polished components&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of treating Laravel and React as separate worlds, Inertia lets them work together naturally.&lt;/p&gt;

&lt;p&gt;This approach gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full backend control&lt;/li&gt;
&lt;li&gt;Modern React UI&lt;/li&gt;
&lt;li&gt;Clean, customizable components&lt;/li&gt;
&lt;li&gt;No heavy UI dependencies&lt;/li&gt;
&lt;li&gt;Excellent developer experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From here, you can extend this setup with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication (Laravel Breeze + React)&lt;/li&gt;
&lt;li&gt;Layout systems&lt;/li&gt;
&lt;li&gt;Theming with shadcn&lt;/li&gt;
&lt;li&gt;Full SaaS dashboards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You now have a production-ready foundation for modern Laravel applications.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>react</category>
      <category>tailwindcss</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Choose the Best Payment Gateway for International Business</title>
      <dc:creator>Ai-tools</dc:creator>
      <pubDate>Wed, 22 Apr 2026 14:20:40 +0000</pubDate>
      <link>https://dev.to/aibliogs/how-to-choose-the-best-payment-gateway-for-international-business-449c</link>
      <guid>https://dev.to/aibliogs/how-to-choose-the-best-payment-gateway-for-international-business-449c</guid>
      <description>&lt;p&gt;Expanding your business globally is easier than ever—but accepting payments from international customers is where many businesses struggle. Different currencies, varying regulations, and multiple payment preferences can make the process complex.&lt;/p&gt;

&lt;p&gt;That’s where choosing the right payment gateway for international business becomes critical. A good payment gateway not only helps you accept payments smoothly but also improves customer trust, reduces transaction failures, and protects your revenue.&lt;/p&gt;

&lt;p&gt;In this guide, you’ll learn exactly how to choose the best payment gateway for your international business, even if you’re just starting out.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an International Payment Gateway?
&lt;/h2&gt;

&lt;p&gt;An international payment gateway is a technology that allows businesses to accept payments from customers across different countries. It acts as a bridge between your website (or app) and the financial institutions that process the payment.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A customer enters their payment details&lt;/li&gt;
&lt;li&gt;The gateway encrypts the data&lt;/li&gt;
&lt;li&gt;It sends the request to the payment processor&lt;/li&gt;
&lt;li&gt;The bank approves or declines the transaction&lt;/li&gt;
&lt;li&gt;Funds are transferred to your account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Popular examples include Stripe, PayPal, Wise, and Payoneer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Choosing the Right Payment Gateway Matters
&lt;/h3&gt;

&lt;p&gt;Picking the wrong payment gateway can hurt your business more than you think.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Higher Cart Abandonment: If customers don’t see their preferred payment method, they may leave&lt;/li&gt;
&lt;li&gt;Extra Fees: Hidden charges can reduce your profit margins&lt;/li&gt;
&lt;li&gt;Poor User Experience: Slow or failed transactions damage trust&lt;/li&gt;
&lt;li&gt;Limited Growth: Some gateways don’t support all countries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the other hand, the right gateway helps you scale globally with ease.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Factors to Consider When Choosing a Payment Gateway
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Supported Countries &amp;amp; Regions
&lt;/h3&gt;

&lt;p&gt;Not all payment gateways are available worldwide. Before choosing one, check if it supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your business location&lt;/li&gt;
&lt;li&gt;Your target customer countries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is especially important for businesses in countries like Pakistan, where options may be limited.&lt;/p&gt;

&lt;p&gt;Before choosing a gateway, always review the &lt;a href="https://www.cs-cart.com/blog/stripe-supported-countries/" rel="noopener noreferrer"&gt;Stripe Supported Countries&lt;/a&gt; list to ensure your business and target markets are covered.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Supported Currencies
&lt;/h3&gt;

&lt;p&gt;A good international payment gateway should support multiple currencies.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accept payments in local currencies&lt;/li&gt;
&lt;li&gt;Avoid high conversion fees&lt;/li&gt;
&lt;li&gt;Provide automatic currency conversion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This improves the customer experience and increases conversion rates.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Transaction Fees &amp;amp; Pricing
&lt;/h3&gt;

&lt;p&gt;Always review the full pricing structure.&lt;/p&gt;

&lt;p&gt;Look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transaction fees (usually 2–4%)&lt;/li&gt;
&lt;li&gt;Cross-border charges&lt;/li&gt;
&lt;li&gt;Currency conversion fees&lt;/li&gt;
&lt;li&gt;Monthly or setup fees&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even small differences in fees can significantly impact your profits over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Payment Methods Supported
&lt;/h3&gt;

&lt;p&gt;Your customers may prefer different payment methods depending on their country.&lt;/p&gt;

&lt;p&gt;A strong gateway should support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Credit/debit cards (Visa, Mastercard)&lt;/li&gt;
&lt;li&gt;Digital wallets (Apple Pay, Google Pay)&lt;/li&gt;
&lt;li&gt;Local payment methods (like regional wallets or bank transfers)
More options = higher chances of successful payments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Security &amp;amp; Compliance
&lt;/h3&gt;

&lt;p&gt;Security is non-negotiable in online payments.&lt;/p&gt;

&lt;p&gt;Make sure the gateway offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PCI-DSS compliance&lt;/li&gt;
&lt;li&gt;Data encryption&lt;/li&gt;
&lt;li&gt;Fraud detection tools
This protects both your business and your customers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Ease of Integration
&lt;/h3&gt;

&lt;p&gt;If a gateway is difficult to integrate, it can slow down your business.&lt;/p&gt;

&lt;p&gt;Look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple APIs&lt;/li&gt;
&lt;li&gt;Plugins for platforms like Shopify or WooCommerce&lt;/li&gt;
&lt;li&gt;Developer-friendly documentation
If you're non-technical, choose a gateway with easy setup options.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. Settlement Time
&lt;/h3&gt;

&lt;p&gt;Settlement time is how quickly you receive your money.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some gateways take 1–2 days&lt;/li&gt;
&lt;li&gt;Others may take up to a week&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Faster settlements improve your cash flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Customer Support
&lt;/h3&gt;

&lt;p&gt;Issues can happen anytime, especially with international payments.&lt;/p&gt;

&lt;p&gt;Choose a provider that offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;24/7 support&lt;/li&gt;
&lt;li&gt;Multiple support channels (chat, email, phone)
Reliable support can save you from major losses.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Top Payment Gateways for International Business
&lt;/h3&gt;

&lt;p&gt;Here are some of the most popular options:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stripe&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best for SaaS and developers&lt;/li&gt;
&lt;li&gt;Powerful APIs&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supports subscriptions and global payments&lt;br&gt;
&lt;strong&gt;PayPal&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Widely trusted&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy to set up&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Available in many countries&lt;br&gt;
&lt;strong&gt;Wise&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Low-cost international transfers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Transparent fees&lt;br&gt;
&lt;strong&gt;Payoneer&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ideal for freelancers and marketplaces&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy withdrawals&lt;br&gt;
Each has its own pros and cons, so choose based on your business needs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best Payment Gateways by Use Case
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;For E-commerce Businesses&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Look for gateways that integrate with Shopify or WooCommerce&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support multiple currencies and payment methods&lt;br&gt;
&lt;strong&gt;For SaaS &amp;amp; Subscription Businesses&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose gateways with recurring billing features&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stripe is often a strong choice here&lt;br&gt;
&lt;strong&gt;For Freelancers &amp;amp; Agencies&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Focus on low fees and easy withdrawals&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Payoneer and Wise are popular options&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Choose the Right Payment Gateway (Step-by-Step)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Follow this simple process:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Identify Your Target Countries&lt;/p&gt;

&lt;p&gt;Know where your customers are located.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Define Your Business Model&lt;/p&gt;

&lt;p&gt;Are you running an e-commerce store, SaaS product, or freelance service?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Compare Features &amp;amp; Fees&lt;/p&gt;

&lt;p&gt;Don’t just look at pricing—compare features too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Test Integration&lt;/p&gt;

&lt;p&gt;Try the gateway before fully committing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;: Start Small and Scale&lt;/p&gt;

&lt;p&gt;Begin with one gateway and expand as your business grows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Choosing the best payment gateway for international business is a crucial decision that directly impacts your growth, revenue, and customer experience.&lt;/p&gt;

&lt;p&gt;Focus on key factors like supported countries, fees, payment methods, and security. Don’t rush the decision—test different options and choose what works best for your business model.&lt;/p&gt;

&lt;p&gt;With the right payment gateway in place, you’ll be ready to scale your business globally and accept payments without barriers.&lt;/p&gt;

</description>
      <category>stripe</category>
    </item>
  </channel>
</rss>
