| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-09-25 | 2.3 kB | |
| v1.12.0 source code.tar.gz | 2026-09-25 | 155.5 kB | |
| v1.12.0 source code.zip | 2026-09-25 | 190.6 kB | |
| Totals: 3 Items | 348.4 kB | 0 | |
Highlights
- The API can now ask the client to send a collect beacon. When the pro API returns a
collectdirective on the/thumbmarkresponse, the client sends one small, fire-and-forget request tocollect.thumbmarkjs.comcontaining the User-Agent, the resolved thumbmark, and the JA4 TLS fingerprint the API observed for that request. The receiving server also fingerprints the TLS handshake of that connection and stores it alongside those fields, building network-level fraud-detection signals for the account. Targeting and volume are decided entirely server-side, so there is no client-side sampling to tune. See Collect beacon in the README. (#154) - It never fires for anonymous installs. An install with neither
api_keynorsimple_requestmakes no API call at all, so it never receives the directive and never sends the beacon.collect_beacon: falsedisables it specifically; this is independent oflogging, which governs only the anonymous 0.01% sample.
New options
| Option | Type | Default | Description |
|---|---|---|---|
collect_beacon |
boolean | true |
Disables the collect beacon when set to false. |
collect_endpoint |
string | https://collect.thumbmarkjs.com/beacon |
Overrides the beacon target. |
Fixes
- Possible unhandled promise rejection removed. The beacon's fallback
fetchwas previously wrapped in a timeout race, with the rejection handler attached to the race rather than to the fetch itself. A request that failed after the timeout therefore had no handler and could surface as an uncaught rejection in the host page. The handler is now attached directly to the fetch promise. - The
collectdirective is no longer persisted in the cached API response. It is a one-shot, per-request instruction; a cached copy would have re-triggered the beacon on every page load for the whole cache lifetime.
Size
gzip 11,234 → 11,575 B (+341 B, +3.0%); raw 30,422 → 31,580 B.
Note on fingerprint stability
The fingerprint output is unchanged from 1.11.0. Nothing in this release enters the hash or alters getThumbmark()'s return value, so existing thumbmark hashes remain stable across this upgrade.