superbig/craft3-mobiledetect

Use Mobile_Detect for detecting mobile devices (including tablets)

Installs: 53 236

Dependents: 0

Suggesters: 0

Security: 0

Stars: 19

Watchers: 1

Forks: 2

Open Issues: 0

Type:craft-plugin

pkg:composer/superbig/craft3-mobiledetect

3.0.0 2026-02-13 20:58 UTC

This package is auto-updated.

Last update: 2026-02-13 21:00:04 UTC


README

Use Mobile_Detect for detecting mobile devices (including tablets).

Screenshot

Requirements

  • Craft CMS 5.5.0 or later
  • PHP 8.2 or later

Installation

  1. Open your terminal and go to your Craft project:

     cd /path/to/project
    
  2. Tell Composer to load the plugin:

     composer require superbig/craft3-mobiledetect
    
  3. In the Control Panel, go to Settings → Plugins and click the "Install" button for MobileDetect.

Overview

A wrapper for the Mobile_Detect library (v4) by @serbanghita.

Usage

Twig

{# Device detection #}
{{ craft.mobileDetect.isMobile ? 'I am mobile.' : 'I am not mobile.' }}
{{ craft.mobileDetect.isTablet ? 'Tablet' : 'Not a tablet' }}
{{ craft.mobileDetect.isPhone ? 'Phone' : 'Not a phone' }}

{# OS detection — magic methods #}
{% if craft.mobileDetect.isiOS %}
    <p>Welcome, iOS user!</p>
{% elseif craft.mobileDetect.isAndroidOS %}
    <p>Welcome, Android user!</p>
{% endif %}

{# Browser detection — magic methods #}
{% if craft.mobileDetect.isChrome %}
    <p>You're using Chrome</p>
{% elseif craft.mobileDetect.isSafari %}
    <p>You're using Safari</p>
{% endif %}

{# Generic rule matching #}
{{ craft.mobileDetect.is('iOS') }}
{{ craft.mobileDetect.is('WindowsPhoneOS') }}
{{ craft.mobileDetect.is('Firefox') }}

PHP

$service = \superbig\mobiledetect\MobileDetect::getInstance()->mobileDetectService;
$isMobile = $service->isMobile();
$isIOS = $service->is('iOS');

Methods

Device detection

Method Description
isMobile Returns true for any mobile device (including tablets)
isTablet Returns true for tablets only
isPhone Returns true for phones only (mobile but not tablet)

OS & browser detection (magic methods)

Any is* call is forwarded to the library's rule matching. These work in both Twig and PHP:

Method Description
isiOS iOS devices
isAndroidOS Android devices
isBlackBerryOS BlackBerry devices
isWindowsMobileOS Windows Mobile devices
isWindowsPhoneOS Windows Phone devices
isChrome Chrome browser
isSafari Safari browser
isFirefox Firefox browser
is* Any rule the library supports — see Mobile_Detect docs

Rule-based detection

Method Description
is(key) Test any rule by name, e.g. is('iOS'), is('AndroidOS'), is('Chrome')
match(pattern) Test using a regular expression against the user agent
version(component) Get the version of a component, e.g. version('Android')

Utility methods

Method Description
getVersion Returns the Mobile_Detect library version
getUserAgent Get the current user agent string

Upgrading from v2 (Craft 4)

Breaking changes

  • mobileGrade — Removed (not available in Mobile_Detect v4)
  • getScriptVersion — Renamed to getVersion
  • getCfHeaders / setCfHeaders — Replaced by getCloudFrontHeaders (service only)
  • setUserAgent / setHttpHeaders — Available on the service only, not the Twig variable

What still works

All is* magic methods (isiOS, isAndroidOS, isChrome, etc.) continue to work in Twig templates — no changes needed.

PHP service access

The static $plugin property has been removed. Use getInstance():

// Before (Craft 4)
MobileDetect::$plugin->mobileDetectService->isMobile();

// After (Craft 5)
MobileDetect::getInstance()->mobileDetectService->isMobile();

Brought to you by Superbig