NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
A Flutter package for integrating with the Biometry API to provide biometric authentication and verification services.
Last release 2 months ago
23 Jul 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 15 of 15 stable releases
1 version withdrawn
withdrawn after publishing
2 years old
16 releases · first in 2024
One column per month.
userId parameter (required) on Biometry.initialize() — the opaque, customer-provided identity key the v2 API uses to identify users.
userId parameter (required) on Biometry.initialize() — the opaque, customer-provided identity key the v2 API uses to identify users.livenessCheck(), faceVerify(), voiceVerify(), and deepfakeCheck() methods, replacing processVideo().faceMatch() accepts useSessionVideo (defaults to true, matching the old hardcoded behavior) and an optional video file for when it's false.docAuth() accepts optional provider and mrzProvider overrides.endSession() accepts an optional phoneNumber to run a SIM-swap fraud check when ending the session.approveConsent({consentId}) and getConsentApprovals(), with a new ConsentApproval model (consentId, userId, approvedAt).clientAppName and clientAppVersion parameters on Biometry.initialize(), sent as X-Client-App / X-Client-App-Version headers on every request (carried forward from 1.0.9)./api-gateway/v2/*) across every endpoint: sessions, document verification, face/voice enrollment, and face matching.assertConsent() now takes a required consentId and checks it against getConsentApprovals(), instead of checking a cached boolean flag.fullName is no longer sent to the API — it's local/display-only now; pass userId instead for API calls.processVideo() removed — v2 has no single call that both authenticates and auto-enrolls; use livenessCheck(), faceVerify(), voiceVerify(), and/or deepfakeCheck() individually.allowConsent(), allowStorageConsent(), getConsentHistory(), and the ConsentHistoryResult/ConsentRecord/ConsentHistoryEntry models removed — replaced by approveConsent()/getConsentApprovals()/ConsentApproval. v2 has no consent-revoke endpoint — there is currently no way to withdraw a recorded approval.BiometryGeoLocation, setGeoLocation(), and the geoLocation parameter on initialize() removed — v2 has no geolocation field.X-Device-Info header and the device_info_plus/recase dependencies) — v2 has no device-info field.scanDocument() now correctly handles the flutter_doc_scanner ^0.0.21 API (ImageScanResult / DocScanException) instead of the old raw List/Map/PlatformException shape — the previous implementation silently returned an empty path on every scan against the actually-resolved plugin version.This is a breaking release. Every consumer needs to: pass userId to initialize(), replace processVideo() calls with the new granular verification methods, and migrate consent handling to the approval-based API. See the README for updated usage examples.
Published to pub.dev on 2026-07-23.
_Retroactively added — published to pub.dev but missing from this changelog's history until now._
Retroactively added — published to pub.dev but missing from this changelog's history until now.
flutter_doc_scanner 0.0.17+ (typed ImageScanResult return).flutter_doc_scanner dependency constraint to ^0.0.18._Retroactively added — published to pub.dev but missing from this changelog's history until now._
Retroactively added — published to pub.dev but missing from this changelog's history until now.
Biometry.initialize() accepts two new optional parameters — clientAppName and clientAppVersion. When provided, X-Client-App and X-Client-App-Version headers are attached to every request sent to the API gateway (session start/end, docAuth, processVideo, enrolFace, enrolVoice, faceMatch).No breaking changes.
Reference frame for face match (cross-device): Biometry.initialize() accepts optional referenceFramePath to use a local reference image without callin
Biometry.initialize() accepts optional referenceFramePath to use a local reference image without calling docAuth() first.setReferenceFrameFromTransaction(transactionId) fetches the frame from the Biometry samples API (X-Request-Id from processVideo response) and sets it as the face reference — works on any device that has the transaction ID.extractReferenceFrame(videoFile) extracts a frame from a video file and saves it as the reference (e.g. for offline or testing).faceMatch() now sets the request content-type from the reference image file extension (image/jpeg for .jpg/.jpeg, image/png otherwise).ConsentHistoryResult.consent and ConsentHistoryResult.storageConsent are now nullable (ConsentRecord?) to match the API (one consent type can be null). Code that formats or displays consent must handle null.ConsentHistoryResult with both consent fields null instead of throwing. Non-404 errors still throw with a clear message. Parse/unexpected-format failures throw with an "Unexpected consent history response format" message instead of "No consents found".consent before reading isConsentGiven.login-extracted-frame (hyphenated) with fallback to login_extracted_frame. Reference frame download uses a separate http.get() for the signed GCS URL so the Biometry auth header is not sent to storage.consent or storage_consent.Note: No breaking API changes for callers that null-check or use optional consent fields. Callers that assumed non-null consent/storageConsent need to add null checks.
New getConsentHistory() method to retrieve the full consent history for the current user, returning a typed ConsentHistoryResult with both authorizati
getConsentHistory() method to retrieve the full consent history for the current user, returning a typed ConsentHistoryResult with both authorization and storage consent records including their histories.ConsentHistoryResult, ConsentRecord, and ConsentHistoryEntry for typed access to consent history data.processVideo(), docAuth(), faceMatch(), enrolFace(), and enrolVoice() now verify that the user has given authorization consent before executing. The consent check is fetched once per session and cached — no extra network call on subsequent operations.Note: No breaking API changes; library API remains backward-compatible.
Session warmup is now enabled by default by calling sessions/start?warmup=true to reduce first-call latency.
sessions/start?warmup=true to reduce first-call latency.Support for optional geolocation information in all transactions via the X-Geo-Location header
X-Geo-Location headerBiometryGeoLocation class to represent latitude, longitude, country, city, and optional IP addressgeoLocation parameter in Biometry.initialize() to set geolocation during initializationsetGeoLocation() method to update geolocation information at any time_addCommonHeaders() internal methodLocationAccuracy.medium with 15-second timeout for better battery efficiencyNote: No breaking API changes; library API remains backward-compatible.
Example app UX improvements: animated results panel, progress/loading states, and clearer form validation and error messages.
Biometry.initialize and video processing flows.Biometry.resetPhrase() to regenerate the 7-digit verification phrase (unique digits) at any time, using the same logic as during initialization.PERMISSION_CAMERA=1 in Pod build settings.processVideo().pubspec.yaml.example/test/widget_test.dart.Note: No breaking API changes; library API remains backward-compatible.
Support for automatic enrollment when both consent and storage consent are given before processVideo()
processVideo()processVideo() response including status, headers, and bodyprocessVideo() method documentationBumped dependencies in pubspec.yaml to their latest compatible versions for improved stability and performance.
pubspec.yaml to their latest compatible versions for improved stability and performance.Enhanced example app with updated UI, session management, and integrated biometric actions.
Initial stable release of the Biometry Flutter package.
Enhanced convertKeysToSnakeCase to support recursive conversion of nested maps and lists, ensuring consistent snake_case formatting for deeply nested
convertKeysToSnakeCase to support recursive conversion of nested maps and lists, ensuring consistent snake_case formatting for deeply nested device information.snake_case, leading to inconsistent data formats.Added documentation comments to public members of the Biometry class to resolve public_member_api_docs lint warnings.
Biometry class to resolve public_member_api_docs lint warnings.example/pubspec.yaml to remove 'path' dependencies for publishable package compliance.Fixed a bug where the processVideo method would incorrectly handle file lengths.
processVideo method would incorrectly handle file lengths.http_parser from dev_dependencies to dependencies.Initial release of the Biometry package.
Your coding agent can read these notes before it upgrades. Set up the MCP server →