Skip to content

[MOO-2490] : Updated vision camera to v5 & used react-native-vision-camera-barcode-scanner for barcode scanning-11-12-x - #680

Open
saurabhchavan1711 wants to merge 12 commits into
mx/11.12.xfrom
moo/MOO-2490-barcode-scanner-vision-camera-v5-library-migration
Open

saurabhchavan1711 wants to merge 12 commits into
mx/11.12.xfrom
moo/MOO-2490-barcode-scanner-vision-camera-v5-library-migration

Conversation

@saurabhchavan1711

@saurabhchavan1711 saurabhchavan1711 commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Checklist

  • Contains unit tests ✅
  • Contains breaking changes ✅
  • Compatible with: MX 11
  • Did you update version and changelog? ✅
  • PR title properly formatted ([XX-000]: description)? ✅
  • Works in Android ✅
  • Works in iOS ✅
  • Works in Tablet ✅

Feature specific

  • Comply with designs ✅
  • Comply with PM's requirements ✅

This PR contains

  • Bug fix
  • Feature
  • Refactor
  • Documentation
  • Other (describe)

What is the purpose of this PR?

This PR updates the react native vision camera from v4 to v5. Also uses its aligned react-native-vision-camera-barcode-scanner library which is more advance and fixes the issue of scanning dense and patterned background QR codes.

Relevant Changes -

The barcode scanner now uses react-native-vision-camera-barcode-scanner, which brings in Google MLKit as prebuilt frameworks. MLKit's arm64 code is labelled for physical iPhones only, so the iOS e2e build fails at link time on our Apple Silicon CI runners, which build for an arm64 simulator: "building for 'iOS-simulator', but linking in object file ... built for 'iOS'". To fix this, the pipeline now runs scripts/test/patch-mlkit-arm64-simulator.js after pod install. The script changes the platform label on MLKit's arm64 object files from iOS to iOS simulator, which is safe because device and simulator arm64 code use the same instructions and only that label differs. xcodebuild also gets EXCLUDED_ARCHS="i386 x86_64" so Xcode builds the simulator app for arm64 only and never tries to link the unpatched x86_64 code. Without these changes the iOS app can't be built, so the iOS e2e tests can't run on this branch. The patch only touches the CI simulator build.

What should be covered while testing?

Test the given QR code in the ticket .
Test different online generated QR codes on both IOS and Android.

@saurabhchavan1711
saurabhchavan1711 requested a review from a team as a code owner October 13, 2026 13:12

@YogendraShelke YogendraShelke left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

configs/e2e/native_dependencies.json isn't updated on this branch. It still pins react-native-vision-camera 4.7.3, and scripts/test/add-native-dependencies.js merges that file into the native template's package.json for the e2e build. So the 11.12.x e2e app would be built with v4 native code and without react-native-nitro-image / react-native-vision-camera-barcode-scanner, while the widget uses the v5 API. The main PR (#681) includes this change.


const [cameraViewDimensions, setCameraViewDimensions] = useState<{ width: number; height: number } | null>(null);
// Timer that releases the lock, kept so it can be cleared when the widget unmounts
const lockTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lockTimeoutRef is never assigned. The setTimeout(...) in onBarcodeScanned doesn't store its handle, so the unmount cleanup below never clears anything. Either assign it there (lockTimeoutRef.current = setTimeout(...)) or remove the ref and the effect.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@YogendraShelke

Copy link
Copy Markdown
Contributor

Please check the failing GitHub Actions checks on this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants