React component to generate QR codes
npm install @devmehq/react-qr-code๐ฏ Simple & Advanced React component to generate QR codes with custom styling, multiple render formats, and image embedding support.







- ๐จ Customizable: Colors, sizes, margins, and styles
- ๐ผ๏ธ Multiple Formats: Render as SVG or Canvas
- ๐ฑ Responsive: Scales perfectly on all devices
- ๐๏ธ Image Embedding: Add logos or images to QR codes
- ๐ก๏ธ Error Correction: Four levels (L, M, Q, H)
- ๐ฆ Lightweight: Zero dependencies, small bundle size
- ๐ง TypeScript: Full TypeScript support
- โก Performance: Optimized rendering with React hooks
``bashUsing npm
npm install @devmehq/react-qr-code
๐ Quick Start
$3
`tsx
import React from 'react'
import { ReactQrCode } from '@devmehq/react-qr-code'function App() {
return
}
`$3
`tsx
import React from 'react'
import { ReactQrCode } from '@devmehq/react-qr-code'function StyledQRCode() {
return (
value="https://your-website.com"
size={300}
bgColor="#f3f4f6"
fgColor="#1f2937"
level="H"
marginSize={4}
style={{ borderRadius: '8px' }}
className="shadow-lg"
/>
)
}
`$3
`tsx
import React from 'react'
import { ReactQrCode } from '@devmehq/react-qr-code'function CanvasQRCode() {
return (
value="https://your-website.com"
renderAs="canvas"
size={256}
/>
)
}
`$3
`tsx
import React from 'react'
import { ReactQrCode } from '@devmehq/react-qr-code'function QRCodeWithLogo() {
return (
value="https://your-website.com"
size={256}
images={[
{
src: '/logo.png',
height: 50,
width: 50,
excavate: true,
},
]}
/>
)
}
`๐ API Reference
$3
| Prop | Type | Default | Description |
| ------------ | -------------------------- | ------------ | --------------------------------------- |
|
value | string | Required | The value to encode in the QR code |
| renderAs | 'svg' \| 'canvas' | 'svg' | Render format (SVG or Canvas) |
| size | number | 256 | Size of the QR code in pixels |
| bgColor | string | '#ffffff' | Background color (CSS color value) |
| fgColor | string | '#000000' | Foreground color (CSS color value) |
| level | 'L' \| 'M' \| 'Q' \| 'H' | 'L' | Error correction level |
| marginSize | number | 0 | Margin around the QR code in pixels |
| style | CSSProperties | undefined | React style object |
| className | string | undefined | CSS class name |
| title | string | undefined | Title for SVG accessibility |
| id | string | undefined | HTML id attribute |
| images | ReactQrCodeImageProps[] | undefined | Array of images to embed in the QR code |$3
| Property | Type | Default | Description |
| ---------- | --------- | -------------- | -------------------------------------------- |
|
src | string | Required | Image source URL |
| x | number | Auto-centered | X position of the image |
| y | number | Auto-centered | Y position of the image |
| height | number | 10% of QR size | Height of the image |
| width | number | 10% of QR size | Width of the image |
| excavate | boolean | false | Whether to clear QR modules behind the image |$3
| Level | Error Correction | Data Capacity |
| ----- | ---------------- | ------------- |
|
L | ~7% | High |
| M | ~15% | Medium |
| Q | ~25% | Medium-Low |
| H | ~30% | Low |๐จ Styling & Customization
$3
`tsx
import React from 'react'
import { ReactQrCode } from '@devmehq/react-qr-code'function ResponsiveQRCode() {
return (
value="https://your-website.com"
size={256}
style={{ width: '100%', height: 'auto' }}
/>
)
}
`$3
`tsx
import React from 'react'
import { ReactQrCode } from '@devmehq/react-qr-code'function DarkModeQRCode({ isDarkMode }) {
return (
value="https://your-website.com"
bgColor={isDarkMode ? '#1f2937' : '#ffffff'}
fgColor={isDarkMode ? '#f3f4f6' : '#000000'}
/>
)
}
`$3
`tsx
import React from 'react'
import { ReactQrCode } from '@devmehq/react-qr-code'
import './styles.css'function CustomStyledQRCode() {
return (
value="https://your-website.com"
className="qr-code-custom"
size={300}
/>
)
}
``css
/ styles.css /
.qr-code-custom {
border-radius: 16px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
padding: 16px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
`Note: When using
renderAs="canvas" on high-density displays, the canvas is scaled for pixel-perfect rendering. Custom styles are merged with internal scaling styles.๐ก Use Cases
$3
`tsx
function WiFiQRCode({ ssid, password, security = 'WPA' }) {
const wifiString = WIFI:T:${security};S:${ssid};P:${password};; return
}
`$3
`tsx
function ContactQRCode({ name, phone, email }) {
const vCard = BEGIN:VCARD return
}
`$3
`tsx
function TwoFactorQRCode({ secret, issuer, accountName }) {
const otpauth = otpauth://totp/${issuer}:${accountName}?secret=${secret}&issuer=${issuer} return (
value={otpauth}
size={256}
level="H"
images={[
{
src: '/logo.png',
height: 40,
width: 40,
excavate: true,
},
]}
/>
)
}
`$3
`tsx
function PaymentQRCode({ amount, recipient, currency = 'USD' }) {
const paymentLink = https://pay.example.com/?to=${recipient}&amount=${amount}¤cy=${currency} return
}
`
๐งช Testing
`bash
Run tests
yarn testRun tests in watch mode
yarn test:watchGenerate coverage report
yarn test:coverage
`๐ง Development
`bash
Install dependencies
yarn installBuild the library
yarn buildRun linting
yarn lint-jsFormat code
yarn prettier
`๐ค Contributing
Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
1. Fork the repository
2. Create your feature branch (
git checkout -b feature/amazing-feature)
3. Commit your changes (git commit -m 'Add some amazing feature')
4. Push to the branch (git push origin feature/amazing-feature`)- [ ] Download QR code as image (PNG/JPEG/SVG)
- [ ] Share QR code functionality
- [ ] Server-side rendering (SSR) support
- [ ] Corner dot customization
- [ ] Gradient color support
- [ ] Custom shape modules (dots, rounded, etc.)
- [ ] Animation support
- [ ] Batch QR code generation
- [ ] QR code scanner component
This project is licensed under the MIT License - see the LICENSE file for details.
- QR Code is a registered trademark of DENSO WAVE INCORPORATED
- Built with โค๏ธ by the DEV.ME team
- Inspired by the QR code specification and community feedback
For support, email support@dev.me or open an issue on GitHub.
---