Experimental components
A small set of components are still under evaluation and are not included in the thumbmark hash by default. They only run when you opt in:
const t = new Thumbmark({ experimental: true });
const { experimental } = await t.get();
When enabled, the resolved values appear on ThumbmarkResponse.experimental rather than components. The set is currently:
intl
Captures the output of the Intl APIs against a fixed reference date, including:
- Date formatting (
full,medium,longstyles, both Latin and non-Latin locales) - Number, currency and percentage formatting
Intl.ListFormatandIntl.DisplayNamesoutput where supported
The collected outputs are reduced to a single hash. Differences in ICU data and locale support across browsers and OS versions make this a useful signal.
mathml
Renders a series of MathML structures (integrals, fractions, matrices, multi-script symbols using blackboard-bold and Greek glyphs) inside an ephemeral iframe and measures their bounding boxes plus the resolved font style. Both the per-structure dimensions and the font-style hash are captured.
This is sensitive to the OS-installed math fonts and the browser's MathML implementation, which together vary considerably across platforms.
mediadevices
Calls navigator.mediaDevices.enumerateDevices() and counts how many devices of each kind are present:
"mediadevices": {
"audioinput": 2,
"audiooutput": 2,
"videoinput": 1
}
Note that without permission grants, only the counts (not device labels or IDs) are exposed by the browser.
Code
See the experimental components in the source tree (intl, mathml, mediaDevices).