Releases: IntegerAlex/fingerprint-oss
Fingerprint OSS v0.9.5
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 optionalwarningsarray, 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, andSYSTEM_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
geoTimeoutconfiguration to prevent slow geolocation requests from hanging your application. - Abortable Requests: Uses modern
AbortControllerfor 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
pnpmfor faster, deterministic, and space-efficient dependency management. - Rollup Optimization: Migrated to the official
@rollup/plugin-typescriptand addedtslibto 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.5Documentation
- API Reference — Configuration & Errors
- Changelog
Links
v0.9.4 - Advanced Device Type Detection
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:
- User-Agent Client Hints (
navigator.userAgentData) - Bowser platform parsing
- Screen characteristics (size, pixel ratio, orientation)
- Touch and pointer analysis
- CSS media queries
- Hardware patterns (memory, CPU)
- Behavioral heuristics
- 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 breakdownChanges
| 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.4Documentation
- API Reference —
deviceTypein SystemInfo - Fingerprinting Techniques — Device Type Detection section
- Changelog
Links
v0.9.3
Release v0.9.3
Added
- IPv4 and IPv6 Support: Enhanced IP address handling with separate IPv4 and IPv6 fields
- Added separate
ipv4andipv6fields to geolocation response - UI now displays IPv4 and IPv6 addresses separately with clear labels
- Maintains backward compatibility with legacy
ipfield
- Added separate
- 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.tswithisIPv4(),isIPv6(), andextractIPv4FromMapped()functions - Eliminated code duplication across worker-entry.ts and index.ts
- Improved maintainability and consistency
- Created
Fixed
- Location Object Validation: Fixed potential undefined field errors in geo-worker.ts
- Added validation to ensure
data.lat,data.lon, anddata.timezoneare present before constructing location object - Location field is now conditionally assigned, preventing runtime errors
- Updated TypeScript types to allow location to be undefined
- Added validation to ensure
- IPv6 Fallback for Primary IP: Fixed backward compatibility issue for IPv6-only users
- Updated
response.ipto useipv4 || ipv6fallback instead ofipv4only - Ensures IPv6-only users receive their IP address in the primary
ipfield - Matches client-side logic in
src/geo-ip.tsfor consistency - Also updated
response.traits.ipAddressto use same fallback logic
- Updated
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.3v0.9.2 - Enhanced Browser Detection
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
browserfield toSystemInfoobject withnameandversionproperties - 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
- Demo: https://fingerprint-oss.gossorg.in/
- GitHub: https://github.com/IntegerAlex/fingerprint-oss
- NPM: https://www.npmjs.com/package/fingerprint-oss
- Documentation: https://docs.fingerprint-oss.gossorg.in
🙏 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
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.