▸ Agent Skills
3 min read

Barcode Scanner

GitHubnpmcrates.io

API Reference:

Allows your mobile application to use the camera to scan QR codes, EAN-13 and other kinds of barcodes.

Supported Platforms

This plugin requires a Rust version of at least 1.77.2

[TABLE]

Setup

Install the barcode-scanner plugin to get started.

Use your project’s package manager to add the dependency:

npm run tauri add barcode-scanner
yarn run tauri add barcode-scanner
pnpm tauri add barcode-scanner
deno task tauri add barcode-scanner
bun tauri add barcode-scanner
cargo tauri add barcode-scanner
  1. Run the following command in the src-tauri folder to add the plugin to the project’s dependencies in Cargo.toml:

    cargo add tauri-plugin-barcode-scanner --target 'cfg(any(target_os = "android", target_os = "ios"))'
  2. Modify lib.rs to initialize the plugin:

    #[cfg_attr(mobile, tauri::mobile_entry_point)]pub fn run() {    tauri::Builder::default()        .setup(|app| {            #[cfg(mobile)]            app.handle().plugin(tauri_plugin_barcode_scanner::init());            Ok(())        })        .run(tauri::generate_context!())        .expect("error while running tauri application");}

    src-tauri/src/lib.rs

  3. Install the JavaScript Guest bindings using your preferred JavaScript package manager:

    npm install @tauri-apps/plugin-barcode-scanner
    yarn add @tauri-apps/plugin-barcode-scanner
    pnpm add @tauri-apps/plugin-barcode-scanner
    deno add npm:@tauri-apps/plugin-barcode-scanner
    bun add @tauri-apps/plugin-barcode-scanner

Configuration

On iOS the barcode scanner plugin requires the NSCameraUsageDescription information property list value, which should describe why your app needs to use the camera.

In the src-tauri/Info.ios.plist file, add the following snippet:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0">  <dict>    <key>NSCameraUsageDescription</key>    <string>Read QR codes</string>  </dict></plist>

src-tauri/Info.ios.plist

Usage

The barcode scanner plugin is available in JavaScript.

import { scan, Format } from '@tauri-apps/plugin-barcode-scanner';// when using `"withGlobalTauri": true`, you may use// const { scan, Format } = window.__TAURI__.barcodeScanner;
// `windowed: true` actually sets the webview to transparent// instead of opening a separate view for the camera// make sure your user interface is ready to show what is underneath with a transparent elementscan({ windowed: true, formats: [Format.QRCode] });

Permissions

By default all potentially dangerous plugin commands and scopes are blocked and cannot be accessed. You must modify the permissions in your capabilities configuration to enable these.

See the Capabilities Overview for more information and the step by step guide to use plugin permissions.

{  "$schema": "../gen/schemas/mobile-schema.json",  "identifier": "mobile-capability",  "windows": ["main"],  "platforms": ["iOS", "android"],  "permissions": ["barcode-scanner:allow-scan", "barcode-scanner:allow-cancel"]}

src-tauri/capabilities/mobile.json

Default Permission

This permission set configures which barcode scanning features are by default exposed.

Granted Permissions

It allows all barcode related features.

This default permission set includes the following:

  • allow-cancel
  • allow-check-permissions
  • allow-open-app-settings
  • allow-request-permissions
  • allow-scan
  • allow-vibrate

Permission Table

IdentifierDescription
barcode-scanner:allow-cancelEnables the cancel command without any pre-configured scope.
barcode-scanner:deny-cancelDenies the cancel command without any pre-configured scope.
barcode-scanner:allow-check-permissionsEnables the check_permissions command without any pre-configured scope.
barcode-scanner:deny-check-permissionsDenies the check_permissions command without any pre-configured scope.
barcode-scanner:allow-open-app-settingsEnables the open_app_settings command without any pre-configured scope.
barcode-scanner:deny-open-app-settingsDenies the open_app_settings command without any pre-configured scope.
barcode-scanner:allow-request-permissionsEnables the request_permissions command without any pre-configured scope.
barcode-scanner:deny-request-permissionsDenies the request_permissions command without any pre-configured scope.
barcode-scanner:allow-scanEnables the scan command without any pre-configured scope.
barcode-scanner:deny-scanDenies the scan command without any pre-configured scope.
barcode-scanner:allow-vibrateEnables the vibrate command without any pre-configured scope.
barcode-scanner:deny-vibrateDenies the vibrate command without any pre-configured scope.

Support on Open CollectiveSponsor on GitHub

© 2026 Tauri Contributors. CC-BY / MIT


Last updated Oct 08, 2026