Milind Daraniya

How to Get Browser Name, Device, OS Version in Laravel?

Published February 25th, 2023 11 min read

Knowing the browser name, device, and OS version of your website's visitors can provide valuable insights for optimizing the user experience. In this post, we'll explore how to obtain this information in a Laravel application using the "Jenssegers/Agent" package. The "Jenssegers/Agent" package provides an easy and convenient way to access user agent data, allowing you to customize your application based on the user's browser and device.

Installing the "Jenssegers/Agent" Package

First, install the "Jenssegers/Agent" package via Composer:

composer require jenssegers/agent

Setting Up the Middleware

Next, create a custom middleware to detect and store user agent data in the Laravel session.

php artisan make:middleware UserAgentMiddleware

In the generated UserAgentMiddleware class, add the following code:

namespace App\Http\Middleware;

use Closure;
use Jenssegers\Agent\Facades\Agent;

class UserAgentMiddleware
{
    public function handle($request, Closure $next)
    {
        $agent = new Agent();
        $device = $agent->device();
        $browser = $agent->browser();
        $platform = $agent->platform();

        session([
            'user_agent' => [
                'device' => $device,
                'browser' => $browser,
                'platform' => $platform,
            ]
        ]);

        return $next($request);
    }
}

Registering the Middleware

Register the UserAgentMiddleware in the $middleware array of the app/Http/Kernel.php file:

protected $middleware = [
    // ...
    \App\Http\Middleware\UserAgentMiddleware::class,
];

Accessing User Agent Data

Now that the middleware is set up, you can access the user agent data in your controllers, views, or any other part of your application.

For example, to display the user's browser name, device, and OS version in a view, you can do the following:

@if(session('user_agent'))
    <p>User Agent Info:</p>
    <ul>
        <li>Device: {{ session('user_agent.device') }}</li>
        <li>Browser: {{ session('user_agent.browser') }}</li>
        <li>Platform: {{ session('user_agent.platform') }}</li>
    </ul>
@endif

With the "Jenssegers/Agent" package and a custom middleware in Laravel, you can easily obtain and store user agent data such as the browser name, device, and OS version. This information can be used to provide a more tailored user experience, optimize your website for different devices and browsers, and gain valuable insights into your website's audience.

By customizing your application based on user agent data, you can enhance user satisfaction and ensure a smoother user experience, regardless of the device or browser they are using.