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
Requires
- php: ^8.2.0
- craftcms/cms: ^5.5
- mobiledetect/mobiledetectlib: ^4.8
Requires (Dev)
- craftcms/ecs: dev-main
- craftcms/phpstan: dev-main
- craftcms/rector: dev-main
- markhuot/craft-pest-core: ^3.0
This package is auto-updated.
Last update: 2026-02-13 21:00:04 UTC
README
Use Mobile_Detect for detecting mobile devices (including tablets).
Requirements
- Craft CMS 5.5.0 or later
- PHP 8.2 or later
Installation
-
Open your terminal and go to your Craft project:
cd /path/to/project -
Tell Composer to load the plugin:
composer require superbig/craft3-mobiledetect -
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 togetVersiongetCfHeaders/setCfHeaders— Replaced bygetCloudFrontHeaders(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