Changelog
All notable changes to the VECU Flutter Verifier SDK.
What This Section Covers
Version history, release notes, and migration guidance. Check here before upgrading to understand what's new and what might affect your integration.
Versioning
This SDK follows Semantic Versioning. Breaking changes are indicated with BREAKING.
v0.1.2
Features
- NFC communication now uses the proprietary VECU AID (
F056454355000001) via the ISO 7816-4 APDU sequence (SELECT AID → SELECT NDEF FILE → READ BINARY in 254-byte chunks), preventing Samsung Wallet and other standard NFC readers from intercepting the handshake between wallet and verifier devices. - Android HCE send is now active on devices that support card emulation — previous releases fell back to QR on every device.
- Verification responses now include the custody
authorizationId, giving host apps a direct reference to the underlying authorization record.
Fixes
- The NDEF text-record parser is now fully guarded against malformed input.
Out-of-bounds reads around the IL-bit ID-length skip and the language-code
length used to throw
RangeError; they now returnnullcleanly so callers don't have to catch platform exceptions. - NDEF payload length is capped at 8 KB per read session, preventing a buggy or adversarial HCE emulator from stalling the reader with up to 65,535 advertised bytes (~257 APDU round trips).
Technical
NfcManagerAdapternow drives NFC reads with explicitIsoDep/ISO 7816APDUs instead ofnfc_manager's cached NDEF read, matching the React Native SDK's protocol.parseNdefTextRecordextracted fromNfcManagerAdapterintolib/src/receive/ndef_parser.dartso the parser can be unit tested without NFC hardware.- UTF-16 text record decoding now honours byte-order marks (
0xFEFF,0xFFFE) per the NDEF RTD-Text spec. - iOS example app adds
com.apple.developer.nfc.readersession.iso7816.select-identifiers(F056454355000001) inInfo.plistand theTAGformat entitlement toRunner.entitlements— required for ISO 7816 tag reader sessions on iOS.
v0.1.1
Features
- Receive-from-wallet flow — a new
ReceiveFromWalletViewwidget that manages the full NFC tap, BLE connection, VIN transfer, and verification polling in a single composable widget. Host apps provide only navigation callbacks. BleVerificationController— aChangeNotifier-based orchestrator that drives the BLE read VIN → create presentation → write URL → poll status pipeline for host apps that want a headless BLE flow.- QR code fallback for BLE engagement when NFC is unavailable.
- BLE write-back of the presentation request URL to the wallet device.
- Platform-detection utilities:
isBleAvailable(),isNfcAvailable(),isHceAvailable(). HceAdapterabstraction viaMethodChannelHceAdapterfor host-app Android NFC card emulation.
Fixes
- Improved BLE scan matching and connection reliability.
- BLE read retry with automatic GATT cache refresh when the first attempt fails (Android).
- Version counter rejects stale async results during concurrent operations.
v0.1.0
Initial release
Highlights
- Flutter Verifier SDK release for client integrations on iOS, Android, and web.
- Full verification flow through
VerificationView— displays a QR code, polls for status, and surfaces approved, denied, and expired results. - Headless
VerificationControllerwith aChangeNotifierinterface for host apps that want to build their own UI while the controller manages API calls, polling, and state transitions. - GPS proximity verification — the SDK automatically retrieves device coordinates and surfaces a proximity pass or warning on the approved state.
- User-friendly error messages with status-specific guidance.
Client-Facing Guidance
- Host applications are expected to:
- provide a VECU API bearer token
- configure required native permissions for NFC, Bluetooth, and camera
- mount
VerificationViewor usecreateVerifierSDK()for a custom UI - handle terminal callbacks (
onApproved,onDenied,onExpired)
Notes
- Camera permission is not required for the verification flow — the SDK displays a QR code, it does not scan one. Host apps that build a VIN scan UI on top of the SDK are responsible for their own camera setup.
- Receive-from-wallet flows require
nfc_managerandflutter_blue_plus.
Requirements
- Flutter >= 3.16.0
- Dart >= 3.2.0, < 4.0.0