|
Novarum DX Ltd
|
Document ID: IFU054
|
1. Overview
v4.0.1 is the current major Expo React Native Reader SDK release for the private npm package @novarumdx/ndx-imaging-expo. It moves the Expo bridge forward from the v3.0.2 baseline to the current v4 platform line and aligns the module with the modern native Reader SDK stack on Android and iOS.
-
Platform compatibility update: upgrades the Expo bridge to the Expo SDK 56 generation and updates the bridge for the React Native new architecture (Fabric / TurboModules).
-
Lifecycle and UI reliability: fixes app background/resume issues on iOS and layout sizing issues affecting flexible or partial-screen reader presentations on both platforms.
-
Integration baseline refresh: carries forward the modern customer integration path established in the v4 native SDK family, including current native dependency alignment and current reader-file expectations.
-
Scope: this release focuses on bridge compatibility, integration reliability, and customer-visible behaviour. The host application remains responsible for workflow, permissions prompting strategy, result handling, persistence, and any external communication.
Warning: The SDK 4.0.1 (Expo) is not compatible with current reader files that do not use the new format with the {estimators: [ wrapper. Reader files must be updated to the new format before use with SDK 4.0.1 (Expo).
2. What’s Changed Since 3.0.2
2.1. Expo SDK 56 and React Native new architecture
-
Expo SDK 56 compatibility: resolves the incompatibility in v3.0.2 with Expo SDK 56, including updated bridge behaviour required by the newer Expo and React Native toolchain.
-
New architecture support: updates and verifies the native bridge for React Native’s new architecture, including Fabric renderer and TurboModules integration.
-
Build and runtime alignment: the module is updated so current iOS and Android bridge code works with the newer Expo baseline rather than the earlier v3-era assumptions.
-
Reader keep-awake alignment: while the reader is visible, the screen now remains awake on both platforms. iOS already received this behaviour from the inner imaging SDK, while Android required Kotlin handling in the Expo module because that inner dependency behaviour was not applied through the Android Expo integration path.
-
Outcome for customers: integrations targeting current Expo applications can adopt the supported bridge rather than remaining pinned to the older v3.0.2-compatible toolchain.
2.3. Reader view layout and presentation fixes
-
Flex layout fix: resolves the issue where the Expo reader view did not respect flex-based layout sizing.
-
Partial-screen Android layout fix: resolves incorrect fit/fill behaviour when the reader view is hosted inside constrained or partial layouts such as split screens, embedded containers, or other non-full-screen presentations on Android.
-
iOS fit positioning correction: resolves the issue where fit-mode scans on iOS were gravitated towards the lower portion of the screen.
-
Outcome for customers: the reader view now behaves more predictably when embedded into real application layouts instead of assuming a simple full-screen presentation.
2.4. Lifecycle and scan completion reliability
-
iOS background/resume fix: resolves the issue where the reader did not resume correctly after the app was backgrounded on iOS.
-
End-of-scan freeze fix: addresses image saving and compression work that could block the main thread and cause a visible UI freeze at the end of scans on Android through the Expo integration path.
-
Outcome for customers: scanning flows are more robust during app lifecycle transitions and more responsive at completion.
2.5. API and behavioural continuity from the 3.0.2 baseline
-
Preserved bridge model: the package continues to expose the React Native component
NdxImagingExpoView, typed callbacks such asonFrameCaptured,onComplete, andonAbort, abort control, permission helpers, and TypeScript models. -
Frame callback continuity: the v3.0.2 additive improvement that surfaced
stripStatusesinonFrameCapturedremains part of the current bridge behaviour. -
Native bridge alignment: the Expo module continues to act as the JavaScript / TypeScript bridge above the platform-specific Android and iOS Reader SDKs and the shared NDX Imaging Core.
3. Fixed Bugs Included in This Release
Expo Specific
|
(Total: 6)
project = "SDKEXPO" AND type = "NDX Bug" AND fixversion >="4.0.0-expo" AND status = Done ORDER BY created DESC
|
||||||
|---|---|---|---|---|---|---|
|
Key
|
Summary
|
Affects versions
|
Risk (calculated)
|
Fix versions
|
Test Result
|
Status
|
| toRecord Work blocking main thread causing Freezing at end of scan | 4.0.0-expo |
🟨 Moderate
|
4.0.1-expo | 🟩 Pass |
Done
|
|
| @novarumdx/ndx-imaging-expo: Published artifact omits build/index entry point | 4.0.0-expo |
🟥 High
|
4.0.1-expo | 🟩 Pass |
Done
|
|
| ImagingExpoView doesn't respect Flex/Partial layouts on Android | 3.0.2 (Expo Core) |
🟩 Low
|
4.0.0-expo | 🟩 Pass |
Done
|
|
| Expo reader view does not respect flex layout | 3.0.2 (Expo Core) |
🟨 Moderate
|
4.0.0-expo | 🟩 Pass |
Done
|
|
| On iOS if the app is backgrounded the reader does not resume | 3.0.2 (Expo Core) |
🟥 High
|
4.0.0-expo | 🟩 Pass |
Done
|
|
| Version 3.0.2 Expo is not compatible with Expo SDK 56 | 3.0.2 (Expo Core) |
🟥 High
|
4.0.0-expo | 🟩 Pass |
Done
|
|
Android Inherited
|
(Total: 3)
project = SDKAND AND type = "NDX Bug" AND fixversion >=4.1.0-android AND status = Done ORDER BY created DESC
|
||||||
|---|---|---|---|---|---|---|
|
Key
|
Summary
|
Affects versions
|
Risk (calculated)
|
Fix versions
|
Test Result
|
Status
|
| Devices have a rotated camera resulting in being unable to scan | 4.0.1-android |
🟥 High
|
4.1.0-android | 🟩 Pass |
Done
|
|
| PMF Story: Discrepancy between last strip statuses captured compared to result's pmfstory | 4.0.1-android |
🟨 Moderate
|
4.1.0-android | 🟩 Pass |
Done
|
|
| Green check mark does not appear on last frame | 4.0.0-android, 4.0.1-android |
🟩 Low
|
4.1.0-android | 🟩 Pass |
Done
|
|
iOS Inherited
|
(Total: 5)
project = SDKIOS AND type = "NDX Bug" AND fixversion >=4.1.0-ios AND status = Done ORDER BY created DESC
|
||||||
|---|---|---|---|---|---|---|
|
Key
|
Summary
|
Affects versions
|
Risk (calculated)
|
Fix versions
|
Test Result
|
Status
|
| PMF Story: Discrepancy between last strip statuses captured compared to result's pmfstory | 4.0.1-ios |
🟨 Moderate
|
4.1.0-ios | 🟩 Pass |
Done
|
|
| ReaderViewController deconstruction is causing a leak | 4.0.1-ios |
🟥 High
|
4.1.0-ios | 🟩 Pass |
Done
|
|
| Missing Swift Doc for ReaderViewControllerDelegate | 4.0.1-ios |
🟩 Low
|
4.1.0-ios | 🟩 Pass |
Done
|
|
| Missing Swift Doc for PMFLoader | 4.0.1-ios |
🟩 Low
|
4.1.0-ios | 🟩 Pass |
Done
|
|
| Missing Swift Doc for ReaderViewController | 4.0.1-ios |
🟩 Low
|
4.1.0-ios | 🟩 Pass |
Done
|
|
4. Breaking vs. Non-breaking Summary
|
Change |
Type |
Developer impact |
|---|---|---|
|
Upgrade from v3.0.2 baseline to current Expo 56 / React Native new architecture baseline |
Compatibility and platform-baseline update |
Customer applications should regression test their Expo app against the current runtime and native build environment. |
|
Reader files must use current |
Integration-breaking for older reader configurations |
Older reader JSON files must be updated before use with the v4.x line. |
|
Reader keeps the screen awake while visible on both platforms |
Non-breaking behaviour fix |
No API change required; release-device testing should confirm the screen stays awake during scanning on both platforms and auto-lock resumes after exiting the reader. The Android Expo module now aligns with behaviour already provided through the inner SDK on iOS. |
|
Published package includes bundled Android AARs and iOS XCFrameworks |
Packaging and integration simplification |
Consuming applications should use the scoped npm package and no longer need separate NovarumDX native dependency repository configuration for the published package. |
|
Explicit package exports and generated version metadata alignment |
Non-breaking package API/documentation improvement |
Imports should use |
|
Reader view flex and partial-layout fixes |
Non-breaking behaviour fix |
Existing integrations should render more correctly in constrained layouts without API changes. |
|
iOS background/resume fix |
Non-breaking bug fix |
No API change required; lifecycle behaviour is improved automatically. |
|
End-of-scan freeze reduction |
Non-breaking bug fix |
No API change required; scan completion should feel more responsive. |
5. When to Upgrade
Upgrade from v3.0.2 when your application needs current Expo SDK support, when you are adopting or validating the React Native new architecture, or when you have encountered any of the known v3-era issues around lifecycle resume behaviour, flex layout handling, partial-screen rendering, or end-of-scan UI freezing.
-
Especially recommended for: teams moving to Expo SDK 56, teams embedding the reader inside non-full-screen layouts, and teams affected by lifecycle, layout, or scan-completion reliability issues.
-
Plan a controlled upgrade if: your integration still uses older reader JSON formats, or your mobile app stack is still pinned to the earlier Expo 52-era assumptions documented for v3.0.0 / v3.0.2.
6. Compatibility Notes
-
The SDK remains a private npm package:
@novarumdx/ndx-imaging-expo. -
The bridge continues to depend on supported native Android and iOS Reader SDK packages beneath the Expo module.
-
The package is intended for Expo / React Native host applications, not for direct standalone end-user use.
-
The SDK performs no network communication; upload, storage, workflow, and result presentation remain the responsibility of the host application.
-
For the Expo SDK 56 line with the latest bundled native SDK dependencies, the supported minimum platform versions are Android SDK 26+ and iOS 16.4+.
Practical upgrade guidance: treat this as a platform-line upgrade rather than a small patch. Update the package, verify reader JSON compatibility, rebuild native projects, and regression test scanning flows on both iOS and Android.
7. Summary of Developer Actions
|
Area |
Action required |
|---|---|
|
Package dependency |
Update the application dependency to the v4.0.1 release of |
|
Expo baseline |
Validate the host application against the Expo SDK 56 generation and the corresponding React Native runtime. |
|
Native dependency setup |
For published-package consumers, rely on the bundled Android AARs and iOS XCFrameworks rather than adding separate NovarumDX native repository configuration. |
|
Reader files |
Confirm that Novarum-provided reader JSON files use the current |
|
Keep-awake behaviour |
On physical release builds, verify that the screen stays awake while the reader is visible and that normal dimming / auto-lock resumes after exiting the reader. |
|
Lifecycle testing |
Regression test app background/resume behaviour on iOS during an active reader session. |
|
Layout testing |
Regression test full-screen, flex, and partial-screen reader layouts on both platforms, especially Android embedded-container scenarios. |
|
Performance testing |
Verify scan completion responsiveness and confirm that end-of-scan freezing is no longer observed on representative Android devices. |
|
Callback validation |
Confirm expected behaviour of |
8. Versioning Summary
|
Component |
Version |
Notes |
|---|---|---|
|
Expo React Native Reader SDK |
4.0.1 |
Current release described by this draft note. |
|
Previous Expo baseline |
3.0.2 |
This document summarises changes from the v3.0.2 external Expo release. |
|
Package name |
|
Private npm package distributed through the Novarum client npm path. |
9. Known Issues
No additional Expo-specific known issues are listed in this draft note beyond normal release verification activity. Final release publication should confirm whether any verifying items remain open at release sign-off.