Documentation
Learn how Polypane improves your workflow
Detecting Polypane
You might have various reasons for wanting to detect that you're running in Polypane. Because Polypane emulates other devices and browsers, those might not always be available. This is why there are multiple ways to detect Polypane, and you can choose the one that works best for you.
Option 1: user agent
The Polypane user agent is derived from the Chrome user agent and looks something like this (With slight variations for Mac, Windows and Linux):
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Polypane/24.0.0 Chrome/136.0.0.0 Safari/537.36
The user agent will tell you which version of Polypane and Chromium is being used.
If you use emulation then the user agent might be overwritten. For that we have another option:
Option 2: navigator.userAgentData
The userAgentData
object has a brands
property, which is an array of objects with a brand
and a version
property. The first item in the array will be an object with the property "brand" with value "Polypane".
console.log(navigator.userAgentData.brands);
// [
// { brand: 'Polypane', version: '24' },
// { brand: 'Not.A/Brand', version: '99' },
// { brand: 'Chromium', version: '136' },
// ]
Option 3: window.__polypane object
When running in Polypane, the window
object is extended with a __polypane
key. This is an object that gives you information
on the pane your page is running in. It has these properties:
width
: The width of the pane in pixelsheight
: The height of the pane in pixelsindex
: The (zero-based) index of the paneltitle
: The title of the panehidden
: Whether the pane is visible in the UI or not (boolean)overlay
: Which, if any, debug tool is currently active on this panezoom
: At which zoom level a pane is showndarkUI
: If Polypane is running in dark or light modeemulation
: An object with the emulation options as applied to the pane:userAgent
,pixelRatio
,screenType
,emulateTouch
andnetwork
.extraHeaders
: a string with the extra headers being sent to this pane.
Option 4: The in-polypane
class
When running on Polypane, the HTML element will have the 'in-polypane' class applied to it, letting you style based on it.
Turning the in-polypane
class off to deal with hydration issues
The class does not interfere with any hydration, but your server might complain that the HTML differs from what they expect. If you want to suppress this warning, you can turn off the 'in-polypane' class in the App settings in the top right of the address bar.
Option 4: Send a custom HTTP header:
You can also send your own custom header, like polypane: true
, and detect that on your server.
Have a question about Polypane?
Contact us any time though chat, Slack or our contact form:
Contact SupportBuild your next project with Polypane
- Use all features on all plans
- On Mac, Windows and Linux
- 14-day free trial – no credit card needed
