qrbit@3.1.0 — 2026-06-29
Replace node-qrcode with a native Rust QR engine; drop the qrcode runtime dependency.
Features
-
replace node-qrcode with a native Rust port — the no-logo
toSvg()path no longer depends on theqrcodenpm package; QR encoding and SVG rendering are now a self-contained Rust port producing byte-identical output (validated against ~18,500 differential cases), ~1.5× faster for SVG generation (dd4abf7, #115)import { QrBit } from "qrbit"; // Same API and byte-identical SVG — qrbit no longer pulls in node-qrcode at runtime. const svg = await new QrBit({ text: "https://jaredwray.com" }).toSvg();
Bug Fixes
- match node-qrcode's lenient hex color parsing for
backgroundColor/foregroundColor(74b676f, #115) - apply
foregroundColorindependently whenbackgroundColoris omitted (a foreground-only color was previously ignored), and preserve aspect ratio when only one ofwidth/heightis passed to the PNG/JPEG/WebP rasterizer instead of stretching to a fixed 2× (8f2f4a7, #117)
Performance
- render logo QR modules as a single
<path>instead of one<rect>per module, shrinking the SVG and the work resvg does when rasterizing to PNG/JPEG/WebP; raster output is pixel-identical (412b351, #118)
Documentation
Internal
- remove dead rasterization code and drop the
imageprocdependency (62ece9c, #116) - collapse duplicated SVG generators and rasterizers into shared helpers (749ab86, #117)
- upgrade GitHub Actions:
actions/checkoutv6→v7,codecov/codecov-actionv6→v7 (87370d8, #114) - upgrade
imageproc0.26.2→0.27.0 (later removed in #116) (9619a85, #113) - upgrade napi crates:
napi3.9.0→3.9.4,napi-derive3.5.6→3.5.7 (9d57c97, #112) - upgrade
hookified3.0.0→3.0.1 (94d9229, #111) - upgrade napi tooling:
@napi-rs/cli3.6.2→3.7.2,@emnapi/core&@emnapi/runtime1.10.0→1.11.1 (675c4ff, #110) - upgrade TypeScript build tooling:
tsx4.22.3→4.22.4,tsdown0.22.0→0.22.3,@types/node24.12.2→24.13.2 (4b0c3a3, #109) - upgrade code-quality deps:
@biomejs/biome2.4.15→2.5.1,vitest&@vitest/coverage-v84.1.7→4.1.9,@faker-js/faker10.4.0→10.5.0 (2f31ebc, #108)
Contributors
- @jaredwray (12)
Full List of Changes
- root - chore: upgrade code quality dependencies by @jaredwray in #108
- root - chore: upgrade TypeScript and build tooling by @jaredwray in #109
- root - chore: upgrade napi tooling by @jaredwray in #110
- root - chore: upgrade hookified by @jaredwray in #111
- root - chore: upgrade napi dependencies by @jaredwray in #112
- root - chore: upgrade imageproc (breaking) by @jaredwray in #113
- root - chore: upgrade GitHub Actions (breaking) by @jaredwray in #114
- Replace node-qrcode with a native Rust port (byte-identical, faster) by @jaredwray in #115
- Remove dead rasterization code and drop imageproc dependency by @jaredwray in #116
- Collapse duplicated SVG generators and rasterizers into shared helpers by @jaredwray in #117
- Render logo QR modules as a single
<path>instead of per-module rects by @jaredwray in #118 - feat - updating readme with new benchmarks by @jaredwray in #119
Full diff: v3.0.0...v3.1.0