Skip to content

Releases: IntegerAlex/fingerprint-oss

Fingerprint OSS v0.9.5

03 Apr 08:43

Choose a tag to compare

Fingerprint OSS v0.9.5

Release Date: April 3, 2026

Highlights

This release focuses on robustness, developer experience (DX), and infrastructure. We've introduced a structured error handling system, improved configuration validation with real-time warnings, and optimized our build pipeline for better performance and smaller distribution footprints.


What's New

Robust Configuration & Validation

Integration is now safer with a new configuration validation layer:

  • Normalization: Automatically handles environment-specific defaults (TEST, DEV, STAGING, PROD).
  • Warnings Surface: The userInfo() function now returns an optional warnings array, providing immediate feedback on invalid configuration or runtime hiccups (like geolocation timeouts).
  • Strict Mode Support: Added internal hooks for stricter configuration checks to prevent silent failures.

Structured Error Handling

We've migrated from generic errors to a typed FingerprintError system:

  • Error Codes: Easily handle specific failure modes with codes like CONFIG_INVALID, GEO_TIMEOUT, GEO_FETCH_FAILED, and SYSTEM_INFO_FAILED.
  • Safe Fallbacks: Improved fallback logic ensures that even if one collector fails, you still get a deterministic fingerprint with reduced confidence.

Geolocation Enhancements

  • Timeout Support: Added geoTimeout configuration to prevent slow geolocation requests from hanging your application.
  • Abortable Requests: Uses modern AbortController for low-overhead request termination.
  • Better Connectivity Reporting: Structured warnings when the geolocation API is unreachable or returns invalid data.

Infrastructure & Build Improvements

  • pnpm Migration: Switched to pnpm for faster, deterministic, and space-efficient dependency management.
  • Rollup Optimization: Migrated to the official @rollup/plugin-typescript and added tslib to externalize TypeScript helpers, reducing the final bundle size.
  • Lean Distribution: Refined the npm package to include only essential files, excluding source maps and internal metadata from production builds.

Usage

import userInfo from 'fingerprint-oss';

try {
  const data = await userInfo({
    geoTimeout: 5000,
    transparency: true
  });
  
  if (data.warnings) {
    console.warn('Fingerprint Warnings:', data.warnings);
  }
  
  console.log('ID:', data.hash);
} catch (error) {
  if (error.code === 'CONFIG_INVALID') {
    console.error('Check your config!', error.details);
  }
}

Changes

Category Description
Added FingerprintError and FingerprintWarning types
Added geoTimeout support for geolocation fetch
Added warnings array in userInfo() output
Changed Build pipeline migrated to @rollup/plugin-typescript and tslib
Infrastructure Migrated from npm to pnpm
Compatibility Fully backward compatible with v0.9.4 fingerprints

Installation

pnpm add fingerprint-oss@0.9.5
# or
npm install fingerprint-oss@0.9.5
# or
yarn add fingerprint-oss@0.9.5

Documentation


Links

v0.9.4 - Advanced Device Type Detection

10 Feb 17:46

Choose a tag to compare

Fingerprint OSS v0.9.4

Release Date: February 8, 2025

Highlights

This release introduces advanced device type detection with multi-signal classification, enabling accurate categorization of devices as mobile, tablet, desktop, or TV—with confidence scoring and full backward compatibility.


What's New

Device Type Detection

Multi-signal device classification is now available in systemInfo.deviceType:

  • Types: mobile | tablet | desktop | tv | unknown
  • Confidence: 0–1 score indicating classification certainty
  • Transparency: Detailed signal breakdown for each detection

8 detection techniques:

  1. User-Agent Client Hints (navigator.userAgentData)
  2. Bowser platform parsing
  3. Screen characteristics (size, pixel ratio, orientation)
  4. Touch and pointer analysis
  5. CSS media queries
  6. Hardware patterns (memory, CPU)
  7. Behavioral heuristics
  8. UA pattern fallback

Edge cases handled: iPad desktop mode, touchscreen laptops, Android tablets.


Usage

import userInfo from 'fingerprint-oss';

const data = await userInfo();
console.log(data.systemInfo.deviceType?.type);       // "desktop"
console.log(data.systemInfo.deviceType?.confidence); // 0.85
console.log(data.systemInfo.deviceType?.signals);     // Signal breakdown

Changes

Category Description
Added deviceType object in SystemInfo
Changed Bowser browser detection updated to v2.13.1
Compatibility Hash unchanged—existing fingerprints remain valid

Installation

npm install fingerprint-oss@0.9.4
# or
yarn add fingerprint-oss@0.9.4
# or
pnpm add fingerprint-oss@0.9.4

Documentation


Links

v0.9.3

03 Jan 11:48
0d75935

Choose a tag to compare

Release v0.9.3

Added

  • IPv4 and IPv6 Support: Enhanced IP address handling with separate IPv4 and IPv6 fields
    • Added separate ipv4 and ipv6 fields to geolocation response
    • UI now displays IPv4 and IPv6 addresses separately with clear labels
    • Maintains backward compatibility with legacy ip field
  • Structured Logging: Implemented structured logging system for proxy server
    • Added StructuredLogger class for Cloudflare Workers with consistent formatting
    • All console.log/warn/error calls replaced with structured logging
    • Logs include structured data fields (ip, error, response) for better queryability
  • Shared IP Utilities: Extracted IP helper functions into reusable module
    • Created proxy_server/src/ip-utils.ts with isIPv4(), isIPv6(), and extractIPv4FromMapped() functions
    • Eliminated code duplication across worker-entry.ts and index.ts
    • Improved maintainability and consistency

Fixed

  • Location Object Validation: Fixed potential undefined field errors in geo-worker.ts
    • Added validation to ensure data.lat, data.lon, and data.timezone are present before constructing location object
    • Location field is now conditionally assigned, preventing runtime errors
    • Updated TypeScript types to allow location to be undefined
  • IPv6 Fallback for Primary IP: Fixed backward compatibility issue for IPv6-only users
    • Updated response.ip to use ipv4 || ipv6 fallback instead of ipv4 only
    • Ensures IPv6-only users receive their IP address in the primary ip field
    • Matches client-side logic in src/geo-ip.ts for consistency
    • Also updated response.traits.ipAddress to use same fallback logic

Improved

  • Code Organization: Better separation of concerns with shared utility modules
  • Logging Consistency: Standardized logging format across proxy server codebase
  • Type Safety: Enhanced type safety with proper validation and conditional assignment

Installation:

npm install fingerprint-oss@0.9.3

v0.9.2 - Enhanced Browser Detection

25 Dec 06:07

Choose a tag to compare

Release v0.9.2 - Enhanced Browser Detection

🚀 Major Improvements

Enhanced Browser Detection

  • Integrated Bowser library for industry-standard browser parsing
  • Accuracy improved from ~75% to ~98% for common browsers
  • Support for 100+ browsers (was ~20-30)
  • Better handling of browser aliases and edge cases
  • More reliable version parsing and normalization
  • Enhanced support for detecting specialized browsers (Electron, WebView, etc.)

New Features

  • Added browser field to SystemInfo object with name and version properties
  • Parser-based browser detection replaces regex matching
  • Better detection of Chromium-based browsers (Edge, Opera, Brave, etc.)
  • Improved mobile browser support

Technical Details

  • Bowser library integrated as internal module (no external dependency)
  • All Bowser source files converted to TypeScript with proper type annotations
  • Maintains 100% backward compatibility - existing code continues to work without changes

📦 Installation

npm install fingerprint-oss@0.9.2
# or
pnpm add fingerprint-oss@0.9.2
# or
yarn add fingerprint-oss@0.9.2

🔧 Usage

The new browser field is automatically included in the SystemInfo object:

import userInfo from 'fingerprint-oss';

const data = await userInfo();
console.log(data.systemInfo.browser);
// { name: "Chrome", version: "120.0.0.0" }

📚 Documentation

🔗 Links

🙏 Credits

This release includes the Bowser library (MIT License) by Dustin Diaz and Denis Demchenko, integrated directly into the project.

New version 0.2.4

27 Apr 00:06
54779ad

Choose a tag to compare

Release v0.2.4

New Features

  • Introduced VPN detection by comparing geolocation and system time zones to display VPN usage status and probability.
  • Improved detection of Safari private browsing mode using storage quota checks.

Bug Fixes

  • Enhanced incognito detection logic for newer Safari versions.

Refactor

  • Refined browser fingerprinting ID generation process for more stable and deterministic results.

Documentation

  • Updated README with a new logo, improved formatting, and a direct demo link.
  • Added Contributor License Agreement (CLA) document.
  • Updated CHANGELOG with the latest release notes.

Chores

  • Released version 0.2.4 as stable.
  • Added funding information for GitHub Sponsors.