How ionic-team/capacitor-barcode-scanner works
This repository is a Capacitor barcode-scanning plugin with web, Android, and iOS implementations, plus two Ionic demo apps. The demo workflow configures a scan, invokes the plugin, and displays the returned text and format. The plugin normalizes defaults, dispatches to a platform implementation, and returns a scan result. The web and iOS paths are visible in source; Android’s implementation and some helper behavior were not excerpted, so their internal relationships are omitted.
Main entry points: index.ts Plugin facade · CapacitorBarcodeScannerPlugin.swift iOS scanner · pages/Home.tsx Scan controls · pages/Home.tsx Scan controls
Components 15
Demo apps
- Ionic demo
example-app/src/App.tsx - Scan controls
example-app/src/pages/Home.tsx - SPM demo
example-app-spm/src/App.tsx - Scan controls
example-app-spm/src/pages/Home.tsx
Plugin API
- Plugin facade
plugin/src/index.ts - Options and results
plugin/src/definitions.ts - Web styling helpers
plugin/src/utils.ts
Web scanning
- Web scanner
plugin/src/web.ts - html5-qrcode
Native scanning
- Android scanner
plugin/android/src/main/java/com/capacitorjs/barcodescanner/OSBarcodePlugin.kt - iOS scanner
plugin/ios/Sources/CapacitorBarcodeScannerPlugin/CapacitorBarcodeScannerPlugin.swift - Scan argument decoding
plugin/ios/Sources/CapacitorBarcodeScannerPlugin/OSBARCScanParameters+Decodable.swift - iOS scan errors
plugin/ios/Sources/CapacitorBarcodeScannerPlugin/OSBarcodeError.swift - OSBarcodeLib
Other components
- App user
Connections 18
- App user → Scan controls: configures and starts
example-app/src/pages/Home.tsx - Scan controls → Plugin facade: calls scanBarcode
example-app/src/pages/Home.tsx - Plugin facade → Scan controls: returns scan result
example-app/src/pages/Home.tsx - App user → Scan controls: configures and starts
example-app-spm/src/pages/Home.tsx - Scan controls → Plugin facade: calls scanBarcode
example-app-spm/src/pages/Home.tsx - Plugin facade → Scan controls: returns scan result
example-app-spm/src/pages/Home.tsx - Ionic demo → Scan controls: routes to
example-app/src/App.tsx - SPM demo → Scan controls: routes to
example-app-spm/src/App.tsx - Plugin facade → Options and results: uses contract
plugin/src/index.ts - Plugin facade → Web styling helpers: applies web styles
plugin/src/index.ts - Plugin facade → Web scanner: loads web implementation
plugin/src/index.ts - Web scanner → Options and results: uses scan contract
plugin/src/web.ts - Web scanner → html5-qrcode: starts camera scanner
plugin/src/web.ts - Plugin facade → Android scanner: dispatches native scan
- Plugin facade → iOS scanner: dispatches native scan
- iOS scanner → Scan argument decoding: decodes scan options
- iOS scanner → iOS scan errors: maps scan errors
plugin/ios/Sources/CapacitorBarcodeScannerPlugin/CapacitorBarcodeScannerPlugin.swift - iOS scanner → OSBarcodeLib: invokes scan manager
plugin/ios/Sources/CapacitorBarcodeScannerPlugin/CapacitorBarcodeScannerPlugin.swift