Vue DevTools not showing Pages on Laravel + Breeze Starter + Inertia Setup.

Updated: Feb 11, 2025

Vue DevTools not showing Pages on Laravel + Breeze Starter + Inertia Setup.

Vue DevTools is a popular debugging tool for Vue.js applications. However, when working with Laravel, Breeze starter, and Inertia setup, you might face issues where Vue DevTools do not show pages or components. In this answer, we will discuss the possible causes and solutions for this issue.

First, let's understand the basics of Laravel, Breeze starter, and Inertia setup. Laravel is a PHP web application framework that provides an easy-to-use interface for building web applications. Breeze starter is a Laravel project template that includes Inertia.js, a progressive JavaScript framework for building Vue.js applications. Inertia setup allows you to build Vue.js applications using Laravel's routing and server-side functionality.

Now, let's discuss the possible causes and solutions for Vue DevTools not showing pages or components in Laravel + Breeze starter + Inertia setup:

  1. Incorrect setup of Inertia.js: Make sure you have installed Inertia.js correctly by following the official documentation. You can check the installation guide here: https://inertiajs.com/installation

    Also, ensure that you have imported the Inertia Vue plugin in your app.js file:

    import Vue from 'vue'
    import VueInertia from 'vue-inertia'
    
    Vue.use(VueInertia)
    
  2. CORS issue: Laravel and Vue.js applications might be running on different domains or ports, causing a Cross-Origin Resource Sharing (CORS) issue. To fix this issue, you need to configure CORS in Laravel.

    You can add the following code to the app/Providers/AppServiceProvider.php file:

    public function boot()
    {
        if (!app()->environment('local')) {
            $this->app->make(Illuminate\Contracts\Http\Kernel)->routes()->middlewareGroup('web', function ($router) {
                $router->middleware('cors');
            });
        }
    }
    
    public function register()
    {
        if (!app()->environment('local')) {
            $this->app->register(Illuminate\Cookies\CookieServiceProvider::class);
            $this->app->register(Illuminate\Session\SessionServiceProvider::class);
            $this->app->register(Illuminate\Auth\AuthServiceProvider::class);
            $this->app->register(Illuminate\View\Factory::class);
    
            $this->app->register(App\Providers\AppServiceProvider::class);
    
            $this->app->register(Laravel\Sanctum\SanctumServiceProvider::class);
            $this->app->register(Inertia\InertiaServiceProvider::class);
    
            $this->app->register(Vue::class);
        }
    }
    

    Also, add the following CORS configuration to the config/app.php file:

    'cors' => [
        'allowed_origins' => ['*'],
    ],
    
  3. Incorrect routing: Make sure that your routes are correctly defined in Laravel and Inertia.js. You can check your routes in the routes/web.php file in Laravel and the routes.js file in Inertia.js.

    Also, ensure that you have defined a default layout in Inertia.js by adding the following code to the app/Providers/AppServiceProvider.php file:

    public function boot()
    {
        $this->app->make(Illuminate\Contracts\Http\Kernel)->registerMiddleware(
            App\Http\Middleware\ShareErrorsFromSession::class
        );
    
        if (!app()->environment('local')) {
            $this->app->make(Illuminate\Contracts\Http\Kernel)->registerMiddleware(
                App\Http\Middleware\VerifyCsrfToken::class
            );
        }
    
        $this->app->make(Illuminate\Foundation\Application)->registerComponentProvider(
            Inertia\Vue3ComponentServiceProvider::class
        );
    
        $this->app->make(Illuminate\Routing\Router)->middlewareGroup('web', function ($router) {
            $router->middleware('web');
            $router->middleware('auth');
            $router->middleware('verified');
    
            $router->middleware('inertia');
    
            $router->get('/', 'App\Http\Controllers\HomeController@index')->name('home');
        });
    
        $this->app->make(Illuminate\Routing\Router)->middlewareGroup('api', function ($router) {
            $router->middleware('api');
    
            $router->get('/user', 'App\Http\Controllers\Auth\UserController@index');
        });
    
        $this->app->make(Illuminate\Routing\Router)->middlewareGroup('inertia', function ($router) {
            $router->middleware('inertia');
    
            $router->get('/{any}', 'App\Http\Controllers\Inertia\PageController@index')->where('any', '.*');
        });
    }
    

    Make sure that the HomeController@index method returns a view or a component in Laravel, and the PageController@index method returns an Inertia response in Laravel.

  4. Incorrect setup of Vue DevTools: Make sure that you have installed Vue DevTools correctly in your browser. You can check the installation guide here: https://github.com/vuejs/vue-devtools#installation

    Also, ensure that you have enabled Vue DevTools in your browser by following the instructions here: https://github.com/vuejs/vue-devtools#enabling

  5. Other causes: If none of the above solutions work, there might be other causes for Vue DevTools not showing pages or components. You can try the following steps:

    • Check the browser console for any errors or warnings.
    • Disable any browser extensions that might be interfering with Vue DevTools.
    • Try opening the application in a different browser or incognito mode.
    • Check if the application is running on HTTPS or HTTP, and make sure that you have the correct certificate installed in your browser.
    • Try clearing your browser cache and cookies.

I hope this answer helps you resolve the issue of Vue DevTools not showing pages or components in Laravel + Breeze starter + Inertia setup. If you have any further questions or concerns, please let me know in the comments section.