Skip to content

Release Notes

Shane Krueger edited this page Oct 10, 2025 · 69 revisions

1.7.0 and newer

Please refer to https://github.com/Shane32/QRCoder/releases for release notes

1.6.0

Released on Status Link
2024-06-30 Live Nuget

Notes

  • [Enhancement] Huge performance (runtime and memory) optimization in QrCodeGenerator (PRs #509, #519, #520, #521, #524, #530, #532)
  • [Enhancement] Big performance (runtime and memory) optimization in BitmapByteQRCode (PR #566)
  • [Enhancement] Added ECC level mismatch detection when using payloads from payload generator (PR #526)
  • [Enhancement] Implementation of encoding constraints (EccLevel, EciMode) in SwissQRCode and GiroCode payloads to enforce that the payloads comply with the specifications of the respective standards (PR #533)
  • [Enhancement] Added support for trimming (IsTrimmable project property) (PR #539)
  • [Enhancement] Added XML comments (code documentation) to all public members (PR #561)
  • [Enhancement] Added new/third overload to PngByteQRCode that accepts colors as System.Drawing.Color (PR #564)
  • [Enhancement] Updated the Bitmap header from BITMAPCOREHEADER to BITMAPINFOHEADER in BitmapByteQRCode (PR #565)
  • [Refactoring] Restructured QRCodeGenerator classes into separate files and partially restructured code for better manageability (PRs #516, #528, #531)
  • [Refactoring] Restructured PayloadGenerator classes into separate files for better manageability (PR #556)
  • [Refactoring] Restructured the PayloadGeneratorTests into separate files for better manageability (PR #569)
  • [Refactoring] Removed category attribute from tests as it is no longer used/useful (PR #568)
  • [Refactoring] Improved code documentation by adding comments to generator methods (PR #517)
  • [Refactoring] Refactored and cleaned up the (needed for backwards compatibility) Stream- and String extension methods (PR #534)
  • [Refactoring] Added nullable reference type (NRT) metadata to all possible members (PR #559)
  • [Refactoring] Removed not longer necessary framework overrides in project files (PR #560)
  • [Refactoring] Reformatted code and added dotnet format toolchain (PR #562)
  • [Note] Added performance benchmark project to ensure that future enhancement don't affect performance negatively (PRs #508, #510)

Breaking Changes:

  • If the function GenerateQrCode(payload, eccLevel) is called and the payload has set an ECC level "X" that differs from the ECC level from the parameter eccLevel, the QRCoder now throws an ArgumentOutOfRangeException to prevent the contract violation in the context of the payload. (Previously, the EccLevel was taken from eccLevel parameter without further checking, which in the worst case could lead to unreadable payloads.)

Deprecations

  • class QRCoder.Extensions.CustomExtensions
  • class QRCoder.Extensions.StringValueAttribute

Special thanks for PRs and support goes to: @Shane32, @gfoidl, @csturm83, @Apflkuacha


1.5.1

Released on Status Link
2024-04-27 Live Nuget

Notes

  • [Bugfix] The SupportedOSPlatformAttribute attributes were missing in the 1.5.0 build. Fixed build steps in workflows. (PRs #504, #505)
  • [Note] Added automated API approval tests to ensure that all changes to the public APIs are deliberate and documented (PR #504)

Special thanks for PRs and support goes to: @Shane32 and the GraphQL for .NET project.


1.5.0

Released on Status Link
2024-04-26 Live Nuget

Notes

  • [Enhancement] Added support for explicit WPA2 in PayloadGenerator.Wifi (PR #494)
  • [Enhancement] Added Linux support for PostscriptQRCode (PR #493)
  • [Enhancement] Added Linux support under .NET5 (or greater) for SvgQRCode incl. logo handling (PRs #490, #491)
  • [Enhancement] Improved README.MD and the examples in it (PRs #456, #481)
  • [Enhancement] Optimized performance of GenerateQrCode-function for payloads of type byte[] (PR #438)
  • [Enhancement] Added another overload of GetGraphic() to the ASCIIQrCode-renderer that allows to render smaller representations of the QR code graphic by pressing two rows of modules into one char (PR #384 with inspiration from #430)
  • [Enhancement] Added support for UTC DateTimes and DateTimeOffsets in CalenderEvent-payload generator (PR #499)
  • [Enhancement] Added support for non-Windows platforms on .NET6+ (or newer) in Base64QRCode (PR #495)
  • [Update] Updated the allowed character set for contacts/addresses in PayloadGenerator.SwissQRCode (PR #432)
  • [Update] Updated the valid country code list by XK for contacts/addresses in PayloadGenerator.SwissQRCode (PR #497)
  • [Bugfix] Changed linebreak behaviour after StrdBkgInf-field in PayloadGenerator.SwissQRCode as it is additional instead of optional since SwissQRCode standard version 2.2 (PR #411)
  • [Bugfix] Fixed bug in placement of finder patterns in ArtQrCode-renderer that occured when quietzones should be drawn and a custom finderPatternImage was set at the same time (PR #474)
  • [Bugfix] Fixed use of pixelSizeFactor in ArtQrCode-renderer, which had no effect before (PR #408)
  • [Bugfix] PayloadGenerator.Url didn't handle upper-case input correctly (PR #447)
  • [Bugfix] Fixed bug in ASCIIQRCode renderer that lead to mirrored/false rendering of ASCII QR codes (PR #476)
  • [Bugfix] Added missing url encoding of the issuer field in OneTimePassword payload generator (PR #391)
  • [Bugfix] Fixed 300 byte limit validator in PaymentOrder payload generator. Now only mandatory fields will be inspected. (PR #498)
  • [Bugfix] Fixed bug that lead to wrongly placed logo backgrounds when rendering a SvgQRCode with logo and disabled quietzones at the same time. (PR #502)

Special thanks for PRs and support goes to: @Shane32, @MarkusG, @PolnerA, @Timwi, @josh-, @doggy8088, @mharen,