NFC SDK Release Notes
Release Notes
The Daon NFC SDK can read and verify electronic passports and travel cards that comply with the ICAO specifications for Machine Readable Travel Documents.
Sizing
The table below contains the universal binary sizes based on building a basic application with a specific feature supported.
Architecture | NFC |
|---|---|
armeabi-v7a | 0.1 MB |
arm64-v8a | 0.1 MB |
NFC SDK v1.4.28
Preview
November 2026
What's Changed
Improved PACE master-file selection and chip-file reads for certain response errors.
Added support for ISO 39794 face-image records alongside ISO 19794, with fallback between representations.
Improved RSA active authentication and MRZ/BAC handling.
File-read progress now reflects bytes delivered to the SDK, including cached bytes, rather than APDU events.
Dependency Upgrades
JMRTD:
0.8.7→0.8.9
Scuba smartcards:
0.0.20→0.0.21(transitive)
Bouncy Castle
bcprov-jdk18onandbcutil-jdk18on:1.85→1.86(transitive)
Transitive versions shown are those declared by JMRTD; your application may resolve different versions.
API and Behavior Changes
Added
NFCReader.pause()to suspend foreground dispatch without cancelling an active read.disable()still cancels it; automatic lifecycle handling continues to calldisable()on pause.
enable()now registers dispatch only when the activity isRESUMED. In manual mode, use anON_RESUMElifecycle observer: calling it from the activity'sonResume()can be too early on Android 10 and later.Starting a new read now cancels an active read, whose callback receives
TagError.ERROR_CANCELLED.MRZRecognizer.processBAC()validates OCR line formats more strictly while accepting missing TD1/TD3 composite check digits.No existing public SDK method signatures were removed or changed.
For direct JMRTD users:
org.jmrtd.lds.EFDIRInfowas removed, andASN1Util()is no longer publicly constructible.
Upgrade Notes for Integrators
Update any explicit org.jmrtd:jmrtd dependency to 0.8.9 and avoid forcing older transitive dependency versions.
Physical-device qualification remains necessary for BAC/PACE fallback, large DG2 reads, JPEG 2000 portraits, and RSA/EC active authentication.
NFC SDK v1.4.23
August 2026
What's Changed
Eliminated known CVEs.
Dependency updates:
JMRTD
0.8.6→0.8.7- Improved passport compatibility by updating the JMRTD dependency.OpenJPEG
2.2.0→2.5.4- Rebuilt the native components with Android NDK r28 to support 16 KB memory page sizes and meet Google Play compatibility requirements.Dependency cleanup:
Removed the explicit
org.bouncycastle:bcprov-jdk18on:1.84dependency. Bouncy Castle is already provided transitively by JMRTD, so the explicit dependency was redundant and could cause recurring version conflicts.Removed the
com.github.mhshams:jnbisdependency.
Reduced overall library size through dependency optimizations.
Upgrade Notes for Integrators
Remove any explicit
org.bouncycastle:bcprov-jdk18ondependency from your project, along with any Bouncy Castle exclusion rules added to work around dependency conflicts.Remove any
com.github.mhshams:jnbisdependency from your project.If your build fails due to a duplicate
META-INF/LICENSE.md, add the following to your Android configuration:
NFC SDK v1.4.15
July 2026
What's Changed
This release focuses on broader ePassport compatibility, faster scans, more accurate failure reporting, and several robustness/security hardening fixes.
Document Compatibility Fixes
Improved German ePassport support - Fixed an issue that could prevent some German passports from completing access-control authentication, improving read reliability and compatibility.
Improved compatibility with passports that advertise multiple PACE configurations - The reader now evaluates all supported PACE options when establishing a secure session, improving compatibility with certain German, UK, and other ePassports.
Improved Serbian ePassport support (issue code 309) - Fixed an issue in Passive Authentication that could prevent successful verification on some Serbian passports.
Behavior Changes
Accurate authentication failure reporting - Failures are now classified instead of being reported as an MRZ mismatch:
Wrong MRZ / rejected key →
ERROR_NO_ACCESS.Lost tag / I/O / unresponsive chip →
ERROR_CONNECTION_LOST.PACE on a BAC-only document →
ERROR_PACE_NOT_SUPPORTED.
Faster failure detection - The reader now reports authentication failures immediately with the correct error instead of performing additional fallback operations that could delay the result.
Improved read isolation between sessions - Reader configuration is now reset for each scan, preventing settings from a previous read from affecting subsequent document reads.
More reliable authentication status reporting - Card access success and failure events now accurately reflect the outcome of the authentication process.
Improved NFC communication reliability - Increased NFC communication timeouts to better accommodate slower documents and devices.
Enhanced Active Authentication compatibility - Signature algorithms are now automatically detected from document data, improving interoperability across a wider range of ePassports.
Performance
Extended-length APDU reading — when both the chip and the reader support it, data groups are read in larger chunks, cutting NFC round-trips and noticeably speeding up large files. The reader falls back to normal APDUs when unsupported.
New Public APIs
TagError.ERROR_CONNECTION_LOST (0x0A0C) — The chip connection was lost mid-read (an I/O failure).
TagError.ERROR_PACE_NOT_SUPPORTED (0x0A2C) — PACE was attempted on a document that does not support it.
NFC SDK v1.4.5
April 2026
Breaking API Changes
NFCAnalyticsReaderConfigurationhas been madeinternaland is no longer accessible as part of the public API. Customers that were referencing this class directly must remove this reference.
Improvements
Maven Repository Distribution
The Daon NFC SDK is now available as a standard Maven dependency. It can be added directly to a project using your preferred build tool by declaring the Daon Maven repository and adding the SDK as a dependency — no additional setup or manual file management is required. This makes it easier to keep the SDK up to date and simplifies integration into new projects.
New Jetpack Compose Sample App
A new sample application has been added to demonstrate how to integrate the NFC SDK using Jetpack Compose — Android's modern UI toolkit. The sample app showcases a complete NFC scanning flow, including a scan screen with an animated indicator that provides real-time visual feedback during scanning, distinct icons for each scan state (idle, scanning, success, failure), a result screen displaying the data read from the document, and full support for dark and light themes. The implementation follows modern Android architecture best practices and includes automated tests to verify correct behavior.
The source code for this sample is publicly accessible here: https://github.com/daoninc/nfc-sdk-android
Improved Scan Reliability
The NFC scanning process has been made more reliable when a scan is stopped or interrupted. If scanning is cancelled while a read is in progress, the process now stops cleanly and immediately, ensuring resources are freed and the application returns to a consistent state without any lingering background activity.
Dependency Version Catalog
All third-party library versions used by the SDK are now managed through a centralized Gradle version catalog (
gradle/libs.versions.toml). Instead of hardcoding version strings scattered across individual build.gradle files, all versions are declared once in the catalog and referenced by alias throughout the project.
To use the version catalog in your own project, declare it in your settings.gradle:
Any version of the library can then be reference by its alias in your build.grade:
And override or pin a specific version by referencing the versions block:
This approach makes it easy to audit and update dependency versions in a single place, and ensures consistency across all modules in the project.
Bug Fixes
Issue ID | Description |
|---|---|
OBM-4212 | Resolved an issue where scanning restarted automatically without user interaction by adding state validation checks. |
OBM-4216 | Fixed a potential crash occurring in multi-window environments. |
OBM-4217 | Improved scan reliability when scanning is stopped mid-read. |
Library Updates
Library | v1.3.53 | v1.4.5 |
|---|---|---|
AndroidX AppCompat | 1.4.1 | 1.7.1 |
Jetpack Compose BOM | - | 2024.12.01 (new — sample app) |
MockK | - | .13.12 (new — sample app tests) |