From b60dd88702a2be2af942a3d104d728970a4c42d6 Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Mon, 19 Jan 2026 13:16:16 -0300 Subject: [PATCH] fix(barcode-scanner): start capture session on a separate thread (#3223) fixes the given warning: Thread Performance Checker: -[AVCaptureSession startRunning] should be called from background thread. Calling it on the main thread can lead to UI unresponsiveness which might cause a UI freeze --- .changes/barcode-scanner-ios-thread.md | 6 ++++++ .../barcode-scanner/ios/Sources/BarcodeScannerPlugin.swift | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .changes/barcode-scanner-ios-thread.md diff --git a/.changes/barcode-scanner-ios-thread.md b/.changes/barcode-scanner-ios-thread.md new file mode 100644 index 000000000..61365bfa8 --- /dev/null +++ b/.changes/barcode-scanner-ios-thread.md @@ -0,0 +1,6 @@ +--- +barcode-scanner: patch +barcode-scanner-js: patch +--- + +On iOS, start the scanning session on a separate thread to fix performance issues. diff --git a/plugins/barcode-scanner/ios/Sources/BarcodeScannerPlugin.swift b/plugins/barcode-scanner/ios/Sources/BarcodeScannerPlugin.swift index 4ad399daf..450c3cf77 100644 --- a/plugins/barcode-scanner/ios/Sources/BarcodeScannerPlugin.swift +++ b/plugins/barcode-scanner/ios/Sources/BarcodeScannerPlugin.swift @@ -286,7 +286,9 @@ class BarcodeScannerPlugin: Plugin, AVCaptureMetadataOutputObjectsDelegate { } self.metaOutput!.metadataObjectTypes = self.scanFormats - self.captureSession!.startRunning() + DispatchQueue.main.async { + self.captureSession!.startRunning() + } self.isScanning = true }