Laravel 10 added support for types and it’s great. In some cases, you might see errors if the defined types and actual return types do not match.

When you create a new Controller using php artisan make:controller IndexController , you get this default stub.

<?php
 
namespace AppHttpControllers;
 
use IlluminateHttpRedirectResponse;
use IlluminateHttpRequest;
use IlluminateHttpResponse;
 
class IndexController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index(): Response
    {
        //
    }
 
    /**
     * Display the specified resource.
     */
    public function show(): Response
    {
        //
    }
 
    // ...
 
}

 In this case, if you try to return a view inside of either index or show methods using the view helper, you will see an error.

TypeError:

Return value is expected to be IlluminateHttpResponse, IlluminateViewView returned

The fix is to update the return type of the method from Response to View from the IlluminateViewView namespace.

use IlluminateViewView;
public function index(): View
    {
        //
    }
    

Alternatively, you could also use response()->view(...), Response::view  or update the default return type to Response | View