Releases: microblink/blinkid-ios
v8000.0.0
What's new
-
SDK Modularization & Enhanced Flexibility - We’ve transformed our core architecture. Features previously known as "fallback modes" are now independent SDK modules.
- Tailored Implementation: Users can now toggle specific modules such as Capture, Barcode, MRZ, or VIZ scanners to build a workflow that fits their exact needs.
- Total Control: This modular approach offers unprecedented flexibility, allowing you to use BlinkID as a comprehensive recognition tool or a specialized scanner, all while leveraging our latest feature updates.
-
Expanded Barcode Support - When operating in Barcode Mode, BlinkID is no longer limited to PDF417.
- Universal Scanning: We’ve added support for QR codes, Code 128, Code 39, ITF, EAN, UPC, and DataMatrix.
- Versatility: This expansion allows the SDK to be used across a wider variety of document types beyond standard IDs.
-
Streamlined Extraction & Anonymization - We are putting more power in the hands of our integrators by removing restrictive custom rules.
- Document Rules: Custom document rules have been removed. Customers can now implement their own logic based on result completeness to determine how a document is processed.
- Anonymization: We’ve transitioned away from fixed anonymization rules. You can now programmatically decide which fields to mask and how to handle them based on the specific data returned.
-
Intelligent Timeout Mechanism - To balance performance with accuracy, we’ve introduced a new timeout feature
- Non-Blocking Scans: Ensures a smooth user experience by preventing "stuck" scan states.
- Step-by-Step Decisions: After each extraction step, you can decide whether the current data is sufficient or if the SDK should continue processing to gather more information.
- Inactivity Timer: A new inactivity timer ends the scanning session after a configurable period (default
10seconds) during which no changes in scanning events are observed. - Per-Step Timer: The existing per-step timer continues to apply independently to each scanning step (first side, second side, and barcode), and works alongside the new inactivity timer.
-
Improved Barcode Reading Logic - Refined the internal logic for barcode detection and decoding, resulting in more reliable extraction across supported symbologies and document types.
-
New Initializers -
BlinkIDUXViewnow exposes a simplified initializer that takes only the analyzer and a scan-completion closure. UX configuration and frame-processing callbacks are provided via SwiftUI environment values (uxSettings,frameProcessResultCallback), keeping the call site clean while remaining fully customizable.public struct BlinkIDUXView: View { @Environment(\.uxSettings) private var uxSettings @Environment(\.frameProcessResultCallback) private var frameProcessResultCallback private let analyzer: any CameraFrameAnalyzer<CameraFrame, UIEvent> private let onScanCompleted: (BlinkIDResultState) -> Void public init( analyzer: any CameraFrameAnalyzer<CameraFrame, UIEvent>, onScanCompleted: @escaping (BlinkIDResultState) -> Void ) { self.analyzer = analyzer self.onScanCompleted = onScanCompleted self.externalViewModel = nil } }
-
New UI for Extraction Modes - Added dedicated UI flows tailored to each extraction mode:
barcodeOnly: streamlined UI focused exclusively on barcode capture.documentWithBarcode: UI optimized for documents where both the visual document and the barcode are captured.fullDocument: UI for complete document extraction across all supported sides.
-
Document-Specific Improvements
- EU Residence Permits: For documents with redundant fields on both the front and back, BlinkID now intelligently merges these into the top-level results for better data consistency.
- Egypt Driver’s License: Enhanced data extraction to now include Date of Birth (DOB) as an additional field.
- Zimbabwe ID: Improved data extraction to support and return both alphabetic and numeric characters within the document number field.
Bug fixes
- Date Conversion Accuracy: Resolved an issue where Islamic-to-Gregorian date conversions could occasionally differ by +/- 1 day. These conversions are now precise and consistent.
API changes
BlinkIDUXView API Redesign
Overview
The scanning result observation API has been redesigned from a Combine-based publisher pattern to a SwiftUI-native closure and modifier approach. This removes the need for managing AnyCancellable subscriptions manually and makes integration significantly more concise.
What Changed
BlinkIDUXModel + Combine publisher -> BlinkIDUXView with result closure
The previous API required instantiating a BlinkIDUXModel, subscribing to its $result publisher via .sink, and storing the cancellable. The new API passes the result handler directly as a trailing closure on BlinkIDUXView, which receives the scanningResultState inline.
Frame processing result handling via .onFrameProcessResult
Advance-to-next-step logic is now expressed through the new .onFrameProcessResult modifier. The closure receives a handle with access to processResult?.resultCompleteness, and you call handle.advanceToNextStep() directly — no separate publisher or delegate needed.
Migration
Before:
let scanningUxModel = BlinkIDUXModel(analyzer: analyzer)
scanningUxModel.$result
.sink { [weak self] scanningResultState in
if let scanningResultState {
if let scanningResult = scanningResultState.scanningResult {
} else {
}
}
}
.store(in: &cancellables)After:
BlinkIDUXView(analyzer: analyzer) { scanningResultState in
if let scanningResult = scanningResultState.scanningResult {
} else {
}
}Buffer
MBSampleBufferWrapper has been removed — pass your CMSampleBuffer directly to CameraFrame when handling camera processing yourself.
v7.8.0
What's new
- The list of all supported documents and result fields is now available here.
- We have added extraction of date of birth from document numbers on Egypt DL.
- If a residence permit has a "remarks" field on both the front and back side, values of these fields will be combined in the top level result.
Bug fixes
- We have fixed MRZ parsing rules for Zimbabwe ID and the new version of Brunei ID; these are now successfully extracted.
New documents support
- Argentina - Polycarbonate Passport
- Bhutan - Identity Card
- Georgia - Polycarbonate Passport
- Jamaica - Identity Card
- Maldives - Driver's License
- Mongolia - Identity Card
- New Zealand - Proof Of Age Card
- Pakistan - Origin Card
- Saint Kitts And Nevis - Polycarbonate Passport
- South Sudan - Identity Card
- Virgin Islands Of The United States - Driver's License
- Virgin Islands Of The United States - Identity Card
New document versions for supported documents
- Argentina - Alien ID
- Argentina - Identity Card
- Armenia - Identity Card
- Australia, Australian Capital Territory - Driver's License
- Australia, Australian Capital Territory - Identity Card
- Brunei - Identity Card
- Bulgaria - Residence Permit
- Denmark - Driver's License
- Georgia - Identity Card
- Greece - Residence Permit
- Guatemala - Alien ID
- Guatemala - Identity Card
- Guyana - Paper Passport
- Kosovo - Driver's License
- Kyrgyzstan - Polycarbonate Passport
- Liechtenstein - Identity Card
- Mauritius - Identity Card
- Nigeria - Identity Card
- Puerto Rico - Driver's License
- Puerto Rico - Identity Card
- Uganda - Identity Card
- USA - Paper Passport
- USA - Polycarbonate Passport
- USA, Montana - Driver's License
- USA, Montana - Identity Card
- USA, New York City - Identity Card
- Venezuela - Driver's License
New segments supported on documents
- Pakistan, proof of registration: renamed fathersName to additionalNameInformation
- Mauritania, ID: renamed documentNumber to personalIdNumber
Minor API changes
- Added new items to enums:
- new
FieldTypeenum values:cardAccessNumber - new
Typeenum values:originaCard - new
Countryenum value:virginIslandsOfTheUnitedStates
- new
- Added member results to
BlinkIDScanningResultandVizResult:- 'cardAccessNumber'
- Removed items from enums:
- removed
FieldTypeenum values: RemovedParentsLastName2,ParentsFirstName2,ChinPermanentExpiry - removed
Countryenum value:virginIslandsUs
- removed
v7.7.0
What's new
- Barcode extraction is marked as optional on documents where barcode detecton has bad performance (Cuba ID and Passport, Philippines DL, Haiti ID, Sudan ID, Egypt ID, Ecuador Passport, Ghana Passport, Iraq Passport, Nicaragua Passport, Pakistan Passport)
Bug fixes
- In situations where some fields on different sides of a document have values in multiple alphabets it could happen that while merging results we overwrite them and keep only one alphabet. With this version this is fixed and both alphabets are returned.
New documents support
- Angola - Identity Card
- Antigua And Barbuda - Paper Passport
- Barbados - Paper Passport
- Belize - Paper Passport
- Benin - Driver's License
- Benin - Polycarbonate Passport
- Bermuda - Paper Passport
- Bermuda - Polycarbonate Passport
- Bhutan - Paper Passport
- Botswana - Paper Passport
- Brazil, Acre - Identity Card
- Brazil, Espirito Santo - Identity Card
- Brazil, Mato Grosso Do Sul - Identity Card
- Brazil, Paraiba - Identity Card
- Brazil, Piaui - Identity Card
- Brazil, Rio Grande Do Norte - Identity Card
- Brazil, Tocantins - Identity Card
- Central African Republic - Paper Passport
- Chad - Paper Passport
- Chad - Polycarbonate Passport
- Congo - Paper Passport
- Democratic Republic Of The Congo - Paper Passport
- Djibouti - Paper Passport
- Djibouti - Polycarbonate Passport
- Equatorial Guinea - Paper Passport
- Equatorial Guinea - Polycarbonate Passport
- Eswatini - Identity Card
- Ethiopia - Paper Passport
- Federated States Of Micronesia - Paper Passport
- Gabon - Paper Passport
- Gabon - Polycarbonate Passport
- Ghana - Polycarbonate Passport
- Ghana - Social Security Card
- Guinea - Driver's License
- Guinea Bissau - Paper Passport
- Guinea Bissau - Polycarbonate Passport
- India, Odisha - Driver's License
- India, Uttarakhand - Driver's License
- Ireland - Proof Of Age Card
- Laos - Paper Passport
- Lesotho - Paper Passport
- Liberia - Driver's License
- Liberia - Social Security Card
- Madagascar - Paper Passport
- Malawi - Driver's License
- Mauritania - Identity Card
- Mauritania - Polycarbonate Passport
- Mexico - Social Security Card
- Mongolia - Paper Passport
- Mongolia - Polycarbonate Passport
- Namibia - Paper Passport
- Niger - Paper Passport
- Nigeria - Nin Card
- Papua New Guinea - Paper Passport
- Philippines - eID
- Philippines - MySSS Card
- Puerto Rico - Identity Card
- Saint Thomas And Prince - Paper Passport
- Saint Vincent And The Grenadines - Paper Passport
- Seychelles - Paper Passport
- Seychelles - Polycarbonate Passport
- South Sudan - Polycarbonate Passport
- Taiwan - Paper Passport
- Togo - Gendarmerie ID
- Togo - Military ID
- Togo - Police ID
- Togo - Residence Permit
- Togo - Voter ID
- Tonga - Paper Passport
- Yemen - Paper Passport
- Ghana - Health Insurance Card
New document versions for supported documents
- Afghanistan - Identity Card
- Cameroon - Identity Card
- Chile - Driver's License
- Colombia - Alien ID
- Costa Rica - Identity Card
- Malaysia - Driver's License
- Moldova - Identity Card
- Netherlands - Driver's License
- Panama - Driver's License
- South Korea - Driver's License
- South Korea - Identity Card
- Sweden - Driver's License
- UK - Polycarbonate Passport
- USA - Veteran ID
- USA, Alaska - Identity Card
- USA, California - Driver's License
- USA, California - Identity Card
- USA, North Carolina - Driver's License
- USA, Texas - Driver's License
- USA, Texas - Identity Card
- USA, Texas - Weapon Permit
- Vietnam - Driver's License
- Zimbabwe - Identity Card
New segments supported on documents
- Greece, Estonia, Finland, Hungary, Ireland, Latvia, Lithuania, Norway, Romania, Slovenia, Croatia, Slovakia, Poland, Malta, Austria, Luxembourg, Netherlands, Bulgaria, Portugal, Cyprus, Sweden, Czechia, Belgium, Germany, Italy, Spain, Switzerland, Denmark - Residence Permit: remarks, residencePermitType
- Belgium, Minors ID: added parentsInfo vector
- Nicaragua, Passport: barcode
- USA, Social Security Card: workRestriction
- China, Identity Card: permanentExpiry (Chinese)
Minor API changes
- added new items to enums:
- new
FieldTypeenum values:EffectiveDate,ParentsLastName,ParentsLastName2,ParentsFirstName2,WorkRestriction,ParentsFirstName,SocialSecurityStatus,LegalStatus,HusbandName,ChinPermanentExpiry - new
Typeenum values:NIN_CARD,MYSSS_CARD,GENDARMERIE_ID,POLICE_ID - new
Countryenum value:SAINT_THOMAS_AND_PRINCE - new
Regionenum values:ACRE,ESPIRITO_SANTO,MATO_GROSSO_DO_SUL,PARAIBA,PIAUI,RIO_GRANDE_DO_NORTE,TOCANTINS,ODISHA,UTTARAKHAND
- new
- added member results to
ScanningResultandVizResult- 'effectiveDate'
- 'husbandName'
- 'legalStatus'
- 'socialSecurityStatus'
- 'workRestriction'
- 'parentsInfo' (new struct)
Breaking changes
- Removed sessionNumber from BlinkIDUXModel init
Improvements and bug fixes
- Removed
MoveDocumentFromEdgescanning UI message - UI messages now correctly reflect
skipImagesWithBlur,skipImagesWithGlare,skipImagesWithInadequateLightingConditionsandskipImagesOccludedByHandsettings - when enabled, feedback message is provided to the user to adjust the document. These settings should be set totruewhen the goal of the scan is not only to correctly read all the data fields but also to capture the document image. - Other miscellaneous improvements
v7.6.2
What's New
- For some documents document type was returned as None, which was causing confusion. To prevent this, we are filling in document type from the barcode in case customers are using BarcodeId mode.
- The fix is applied to all the AAMVA types, plus some others (Argentina, Canada, Colombia, Nigeria, Panama, Paraguay, SouthAfrica)
v7.6.1
v7.6.0
What's New
- Added support for capturing the back of US and India passports that feature a barcode
- Prevent parsing of two-line MRZ in TD1 format unless it's explicitly allowed. This will prevent false positive MRZ extraction on documents where the last line of the MRZ is covered or not fully visible
Bugfixes
- Users are no longer forced to scan back sides of Alien and Refugee passports
- Fixed the issue with Togo ID where document number from VIZ was overriden by a wrong value from MRZ
New Documents Support
- Angola - Paper Passport
- Bahrain - Polycarbonate Passport
- Burkina Faso - Polycarbonate Passport
- Cameroon - Driver's License
- Canada, Manitoba - Metis Federation Card
- East Timor - Polycarbonate Passport
- El Salvador - Paper Passport
- Eritrea - Paper Passport
- France - Adr Certificate
- Germany - Adr Certificate
- Ghana - Voter ID
- India, Telangana - Driver's License
- Ivory Coast - Paper Passport
- Japan - Polycarbonate Passport
- Liberia - Paper Passport
- Liberia - Voter ID
- Malawi - Identity Card
- Malawi - Paper Passport
- Maldives - Polycarbonate Passport
- Mali - Paper Passport
- Mauritius - Paper Passport
- Oman - Vehicle Registration
- Paraguay - Polycarbonate Passport
- Rwanda - Driver's License
- Senegal - Driver's License
- Sierra Leone - Paper Passport
- Somalia - Paper Passport
- Switzerland - Adr Certificate
- Togo - Driver's License
- Togo - Paper Passport
- USA, Maryland - Medical Marijuana ID
- Vietnam - Paper Passport
New Document Versions for Supported Documents
- Chile - Polycarbonate Passport
- India - Paper Passport
- Moldova - Identity Card
- Pakistan - Identity Card
- Peru - Identity Card
- Romania - Identity Card
- Slovakia - Identity Card
- USA, California - Driver's License
- USA, California - Identity Card
- USA, New Hampshire - Identity Card
- USA, Georgia - Medical Marijuana ID
- USA, Pennsylvania - Medical Marijuana ID
- USA, South Carolina - Driver's License
- USA, South Carolina - Identity Card
- USA, Texas - Driver's License
- USA, Texas - Identity Card
New Segments Supported on Documents
- Switzerland, Residence Permit - 'dateOfEntry'
- Hungary, Identity Card - 'maidenName', 'nationality', 'sex', 'documentNumber', 'dateOfBirth'
- Greece, Identity Card - 'fathersName' (Latin and Greek), 'mothersName' (Latin and Greek), 'personalIdNumber', 'issuingAuthority' (Greek), 'municipalityOfRegistration' (Greek)
- Mexico, Voter ID - 'sectionCode', 'stateCode', 'municipalityCode', 'localityCode'
- Mexico, Consular Voter ID - 'stateCode', 'stateName'
Renamed segments
- Hungary - Identity Card -
additionalNameInformation->mothersName
SDK updates
- SDK was built with Xcode 26
UI/UX updates
- Added the option to use the front-facing camera for scanning. You can select front-facing camera through
ScanningUXSettingsproperty ofBlinkIDUXModel. - Added haptics to the scanning process. Haptics can be disabled in
ScanningUXSettings - Improved VoiceOver
- Changed default
tiltDetectionLevelfromOfftoMid
Breaking API Changes
- Removed
shouldShowIntroductionAlertandshowHelpButtonfromBlinkIDUXModelinit. They are now included in theScanningUXSettingsproperty. - Added
ScanningUXSettingstoBlinkIDUXModelinit
New languages
- Danish
- English (U.K.)
- Finnish
- Greek
- Icelandic
- Latvian
- Norwegian
- Polish
- Swedish
- Turkish
- Ukrainian
- Russian
- Japanese
- Korean
- Hindi
- Urdu
- Bengali
- Farsi
- Swahili
- Amharic
- Hausa
- Yoruba
- Nepali
- Kazakh
- Uzbek
- Pashto
- Sinhala
- Georgian
- Khmer
- Akan
- Mexican Spanish
- Brazilian Portuguese
- Canadian French
v7.5.0
What's New
- We introduced event tracking across the SDK lifecycle, giving you deeper insights into user journeys, success rates, and drop-off points during scanning sessions. These enhanced analytics make it easier to identify optimization opportunities and ensure the best possible user experience.
- Updated detection analysis logic in case of photo mode
- Added new
parsedresult member to the BarcodeResult which indicates whether the raw barcode data was successfully parsed - Barcode recognition is now allowed on all document classes; unparsable barcodes will be returned as raw data
Bugfixes
- Fixed the issue with scanning the back of the Essad Card which was causing only Date of Expiry to be extracted
- Fixed the issue with additionalNameInformation extraction for France ID and Residence Permit
v7.4.0
New Documents Support
- Canada, Newfoundland And Labrador - Identity Card
- Canada, Northwest Territories - Driver's License
- Canada, Northwest Territories - Identity Card
- Canada, Prince Edward Island - Identity Card
- Canada, Yukon - Identity Card
New Document Versions for Supported Documents
- Canada, Yukon - Driver's License
API Changes
dependentsInfoinVizResultis now nullable
Bug fixes
- Fixed core data concurrency crash when using com.apple.CoreData.ConcurrencyDebug flag
v7.3.1
v7.3.0
What's new
- Improved extraction for Canada/Nunavut ID and DL by introducing error correction for "1" and "I" characters which look the same in the font used on a document
New Documents Support
- Canada, Nunavut - Driver's License
- Canada, Nunavut - Identity Card
- Liberia - Identity Card
- Mali - Identity Card
- UK - Military ID
New Document Versions for Supported Documents
- Bahrain - Identity Card
- Canada - Weapon Permit
- Chile - Alien ID
- Chile - Identity Card
- Finland - Driver's License
- Indonesia - Driver's License
- Kosovo - Identity Card
- Latvia - Polycarbonate Passport
- Mexico, Chiapas - Driver's License
- Mexico, Ciudad de Mexico - Driver's License
- Mexico, Durango - Driver's License
- Mexico, Jalisco - Driver's License
- Sri Lanka - Driver's License
- USA, Alaska - Driver's License
- USA, New Hampshire - Driver's License
- European Union - Health Insurance Card
New Beta Documents Support
- Canada - Non Card Tribal ID
- Dominica - Paper Passport
- Dominica - Polycarbonate Passport
- UAE - Diplomatic ID
- USA, Georgia - Medical Marijuana ID
New Document Versions for Beta-Supported Documents
- Egypt - Driver's License
- Mexico, Quintana Roo - Driver's License
- Philippines - Postal ID
- Vietnam - Identity Card
New Segments Supported on Documents
- European Union, Health Insurance Card -
countryCode - Italy, Identity Card -
documentOptionalAdditionalNumber - France, Identity Card -
additionalNameInformation - UK, Asylum Request -
residencePermitType,remarks - UK, Residence Permit -
residencePermitType,remarks,certificateNumber,nationalInsuranceNumber
Renamed segments
- Bahrain - Identity Card -
documentNumber->personalIdNumber
Bugs and fixes
- Fixed document number extraction from Canada/Nunavut barcodes
- Fix for ARGENTINA ID and ALIEN_ID documents - made separate barcode scanning step optional for these documents; they have a barcode on the front side, and requiring barcode extraction was causing the scanning process to get stuck on the front
- Onboarding and help screen settings now correctly apply to
BlinkIdScanActivity
UI/UX updates
- Complete scanning instruction messages revamp - the scanning session is now more stable and cleaner, which ensures a better scanning experience
- Added a separate timeout timer for the Barcode step
- Updated help screens with new illustrations
- Updated
Need help?tooltip triggers - Updated translations for Croatian language