Releases: gfazioli/mantine-qr-code
2.0.2
⚡ Improvements
1. Documentation site moved to Next.js 16
The docs/ workspace has been upgraded from Next.js 15.5 to Next.js 16.2.6 (@next/mdx aligned to ^16.2.6). The build now runs under Turbopack by default, which is faster on cold builds and noticeably snappier in dev mode. No change for consumers of the npm package — Next.js is a docs-only dependency.
2. Storybook stories anchored to the top
.storybook/preview.tsx now uses layout: 'padded' instead of 'centered'. Demos are no longer vertically centered and are pinned at the top with consistent padding. Affects local Storybook only.
🛠️ Other Changes
- Dependency refresh (within existing semver ranges, no major upgrades):
@mantine/*to 9.2.0, React / React DOM to 19.2.6, plus tooling patch bumps (oxfmt, oxlint, postcss, rollup,@types/node,@tabler/icons-react, …). docs/next.config.mjs:remarkPlugins: [remarkSlug]→remarkPlugins: ['remark-slug']so loader options stay serializable under Turbopack (mandatory in Next 16).docs/next.config.mjs: removed theeslint.ignoreDuringBuildsoverride that Next 16 no longer accepts.docs/tsconfig.json:jsxset toreact-jsx(mandatory under Next 16).- Header Undolog icon and footer Undolog anchor now point to
https://gfazioli.github.io/. scripts/release.tsrewritten: parsesCHANGELOG.md, fetches GitHub's auto-generated notes, and creates the release viagh release create. The browser form step is gone, andopen+new-github-release-urlhave been dropped from the toolchain.
📝 Summary
A maintenance release with no changes to the public API of @gfazioli/mantine-qr-code: no new props, no removed exports, no behavioral changes. The release brings the docs site to Next.js 16, refreshes dependencies to their latest minor/patch versions, polishes Storybook ergonomics, and automates the GitHub release step so multi-component release sessions no longer require manual copy/paste into the GitHub release form.
What's Changed
Full Changelog: 2.0.1...2.0.2
2.0.1
⚡ Improvements
1. Documentation site moved to Next.js 16
The docs/ workspace has been upgraded from Next.js 15.5 to Next.js 16.2.6 (@next/mdx aligned to ^16.2.6). The build now runs under Turbopack by default, which is faster on cold builds and noticeably snappier in dev mode. No change for consumers of the npm package — Next.js is a docs-only dependency.
2. Storybook stories anchored to the top
.storybook/preview.tsx now uses layout: 'padded' instead of 'centered'. Demos are no longer vertically centered and are pinned at the top with consistent padding. Affects local Storybook only.
🛠️ Other Changes
- Dependency refresh (within existing semver ranges, no major upgrades):
@mantine/*to 9.2.0, React / React DOM to 19.2.6, plus tooling patch bumps (oxfmt, oxlint, postcss, rollup,@types/node,@tabler/icons-react, …). docs/next.config.mjs:remarkPlugins: [remarkSlug]→remarkPlugins: ['remark-slug']so loader options stay serializable under Turbopack (mandatory in Next 16).docs/next.config.mjs: removed theeslint.ignoreDuringBuildsoverride that Next 16 no longer accepts.docs/tsconfig.json:jsxset toreact-jsx(mandatory under Next 16).- Header Undolog icon and footer Undolog anchor now point to
https://gfazioli.github.io/. scripts/release.tsrewritten: parsesCHANGELOG.md, fetches GitHub's auto-generated notes, and creates the release viagh release create. The browser form step is gone, andopen+new-github-release-urlhave been dropped from the toolchain.
📝 Summary
A maintenance release with no changes to the public API of @gfazioli/mantine-qr-code: no new props, no removed exports, no behavioral changes. The release brings the docs site to Next.js 16, refreshes dependencies to their latest minor/patch versions, polishes Storybook ergonomics, and automates the GitHub release step so multi-component release sessions no longer require manual copy/paste into the GitHub release form.
What's Changed
Full Changelog: 2.0.0...2.0.1
2.0.0
Caution
This release contains breaking changes. The component now requires Mantine 9.x and React 19.
Breaking Changes
1. Mantine 9 and React 19 required
The component has been upgraded to Mantine 9 and React 19. Mantine 7/8 and React 18 are no longer supported at runtime, even though peerDependencies still allows them for workspace alignment1.
2. Toolchain migration: prettier → oxfmt, eslint → oxlint
The project now uses oxfmt for formatting and oxlint for linting. If you contributed to the project:
.prettierrc.mjs→.oxfmtrc.jsoneslint.config.mjs→oxlint.config.ts- Run
yarn format:writeinstead ofyarn prettier:write
Bug Fixes
1. React 19 RefObject type compatibility
The useQRCodeDownload hook's ref type has been updated from React.RefObject<HTMLDivElement> to React.RefObject<HTMLDivElement | null> to match React 19's useRef return type. Without this fix, TypeScript 6 would report a TS2322 error when using the hook.
2. Jest tests failing with qrcode CJS module
The qrcode npm package is a CommonJS module whose default export was not resolved correctly by esbuild-jest. A minimal jest mock (__mocks__/qrcode.ts) has been added that provides a valid 21×21 QR matrix, enabling all 12 tests to pass. The real library works correctly at runtime — the issue was limited to the test environment.
Improvements
1. Ref forwarding simplified
In Mantine 9 with React 19, polymorphicFactory handles ref forwarding automatically — the ref is passed through {...others} to the root <Box>. No manual ref extraction or useMergedRef is needed.
2. Dependencies aligned with workspace template
All devDependencies have been aligned with the mantine-base-component template:
- Storybook 10.3.4
@mantine-tests/core2.1.0- Rollup 4.60.1
- Next.js 15.5.14
@tabler/icons-react3.41.1
Other Changes
- Upgraded TypeScript from 5.x to 6.0.2
- Upgraded Yarn from 4.12.0 to 4.13.0
- Upgraded Storybook from 8.x to 10.3.4
- CLAUDE.md updated with Mantine 9 reference and oxfmt/oxlint tooling
package.jsondescription and keywords updated (mantine-v9,qr-code-generator,svg,download)- GitHub repo description and topics updated
Migration Guide
Step 1: Update dependencies
yarn add @gfazioli/mantine-qr-code@latest @mantine/core@^9.0.0 @mantine/hooks@^9.0.0 react@^19.0.0 react-dom@^19.0.0Step 2: Update useQRCodeDownload ref type (if typed explicitly)
If you explicitly typed the ref from useQRCodeDownload:
Before:
const { ref, download } = useQRCodeDownload();
// ref was React.RefObject<HTMLDivElement>After:
const { ref, download } = useQRCodeDownload();
// ref is now React.RefObject<HTMLDivElement | null>Tip
In most cases no code change is needed — the hook's return type is inferred automatically.
Summary
This is a major release that upgrades Mantine QR Code to Mantine 9 and React 19, fixes React 19 type compatibility for the download hook, and modernizes the toolchain. The API surface is fully backward compatible — the only breaking change is the runtime requirement for Mantine 9 and React 19.
What's Changed
New Contributors
Full Changelog: 1.0.0...2.0.0
-
The
peerDependenciesrange (>=7.0.0for Mantine,^18.x || ^19.xfor React) is kept wide to align with the workspace standard across all Mantine Extension components. ↩
1.0.0
- First public release
Full Changelog: https://github.com/gfazioli/mantine-qr-code/commits/1.0.0