Package Exports
- reactjs-qr-scanner
- reactjs-qr-scanner/dist/index.js
- reactjs-qr-scanner/dist/index.mjs
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (reactjs-qr-scanner) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
reactjs-qr-scanner
React.js-compatible QR code scanner component that enables easy integration of fast and reliable QR code scanning into web applications. Built on modern web APIs for camera access, it supports real-time scanning, customizable styles, and seamless integration with existing React projects.
📦 Dependencies
This package relies on the following libraries:
| Dependency | Version | Description |
|---|---|---|
| qr-scanner | ^1.4.2 | A Javascript QR Code Scanner based |
These dependencies will be installed automatically when you install this package.
Installation
From the project root:
npm install reactjs-qr-scannerusage
Import the component in your React app:
import { useState } from "react";
import ReactQrScanner from "reactjs-qr-scanner";
function App() {
// State to control whether the scanner is paused
const [paused, setPaused] = useState(false);
return (
<div className="App">
{/* Toggle Pause Button */}
<button onClick={() => setPaused(!paused)}>
{paused ? "Resume" : "Pause"} Scanner
</button>
{/* QR Scanner Component */}
<ReactQrScanner
onScan={(qrdata) => {
console.log(qrdata?.data);
}}
onError={(error) => {
console.error(error);
}}
paused={paused}
classNames={{
video: "w-100",
}}
/>
</div>
);
}
export default App;Features
- Real-time QR code scanning using the camera
- Small, framework-friendly React component
- Customizable UI
Requirements
- React 18 or later
- npm (or a compatible package manager)
Development
The repository includes a small development/playground workflow. To run the local dev environment (watches the library build and runs the playground):
npm run devWhat the dev script does (from package.json):
- Runs Rollup in watch mode to rebuild
dist/on changes - Starts the
playgroundapp (if present) so you can test the component in a live environment
If you only want to watch and rebuild the library without starting the playground:
npm run watchBuild (production)
To create the distributable bundles in dist/:
npm run buildThis will run a prebuild step which removes dist/ and then run Rollup according to rollup.config.js.
Troubleshooting — Rollup / @rollup/plugin-typescript error
Symptom:
[plugin typescript] @rollup/plugin-typescript TS18003: No inputs were found in config file '.../tsconfig.json'. Specified 'include' paths were '["src"]' and 'exclude' paths were '[]'.
[!] (plugin typescript) RollupError: [plugin typescript] @rollup/plugin-typescript: Couldn't process compiler optionsCause and fixes:
Missing
srcentry files- The TypeScript plugin looks for files matched by
tsconfig.jsoninclude(commonlysrc). If thesrcdirectory is missing or empty, you'll get this error. - Fix: create an entry file such as
src/index.tsorsrc/index.tsxthat exports your component(s).
Example minimal
src/index.tsx(create this file if you don't have an entry yet):import React from 'react'; export const QRScanner = () => <div>QR Scanner placeholder</div>; export default QRScanner;
You can create it from PowerShell (project root):
mkdir src Set-Content -Path .\src\index.tsx -Value "import React from 'react';\r\nexport const QRScanner = () => <div>QR Scanner placeholder</div>;\r\nexport default QRScanner;"- The TypeScript plugin looks for files matched by
tsconfig.jsonincludedoesn't match your source layout
Open
tsconfig.jsonand confirmincludeincludes the files you actually use (for example["src"]or["src/**/*"]). If your sources live in a different folder, updateincludeaccordingly.Example
tsconfig.jsonincludethat matches a typical src layout:"include": ["src/**/*"], "exclude": ["node_modules", "dist"]
- Rollup input mismatch
- If Rollup is configured to use a different entry path, update
rollup.config.jsto point at your actual entry file (for exampleinput: 'src/index.tsx'). The TypeScript plugin needs Rollup to provide an entry file that resolves to your source files.
- Missing type packages
If you use React with TypeScript you should have the React types available. You can install them as dev dependencies:
npm install -D @types/react @types/react-dom
Quick troubleshooting checklist
- Ensure
src/exists and contains an entry file (src/index.tsorsrc/index.tsx). - Ensure
tsconfig.jsonincludecovers your source files. - Ensure
rollup.config.jsinputpoints to the proper entry (commonlysrc/index.tsorsrc/index.tsx). - Install React type packages if you use TypeScript in the library or the playground.
playground
The dev script in package.json runs a watch build and (if present) starts the playground app. To start only the playground (if a subfolder exists):
npm run start --prefix playgroundlincense
MIT License
Copyright (c) 2025 - Imran Kaleel
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.