Skip to content

Comments

Feat/add qr code support for sharing and joining groups#500

Open
theo-engels wants to merge 2 commits intospliit-app:mainfrom
theo-engels:feat/add-qr-code-support-for-sharing-and-joining-groups
Open

Feat/add qr code support for sharing and joining groups#500
theo-engels wants to merge 2 commits intospliit-app:mainfrom
theo-engels:feat/add-qr-code-support-for-sharing-and-joining-groups

Conversation

@theo-engels
Copy link

  • Add QR code functionality to improve group sharing and joining experience:

    • Display QR codes in share dialog with Spliit logo overlay
    • Support downloading QR codes as PNG images
    • Use high error correction level for reliable scanning
  • Add camera-based QR code scanner for joining groups

    • Enable mobile devices to scan QR codes directly
    • Toggle between URL input and QR scanning on mobile
    • Handle camera permissions and error states gracefully
  • Add new dependencies:

    • qrcode.react (^4.2.0) for QR code generation
    • html5-qrcode (^2.3.8) for camera-based scanning
  • Add translation keys for QR code UI elements

    • Share QR code dialog (title, description, download button)
    • Scanner mode toggle (URL mode vs QR mode)

Generating a QR code can be done on desktop and mobile clients, using the same workflow as for sharing a URL, but with an additional QR code icon. Selecting this will generate the QR Code.

Generate QR Code icon
QR Code generate 1

Show QR Code
QR Code generate 2

For a new group member that is all that would be needed to take the user to the site and access the group. For existing Spliit users, there is also an option to aquire the URL via the QR Code and add it to their list. To go this go to the top level groups section , and select the current Add by URL button. If on a mobile device it will now offer the user to add by URL as per the current option, or via QR code, at which point it would prompt the user to

Aquire Group via QR Code
QR Code aquire 1

- Add internationalization (i18n) to QrCodeScanner component using next-intl
  - Extract hardcoded UI strings: "Start Camera", "Stop Scanning", camera error messages
  - Follow existing translation conventions used in other components

- Fix ShareQrCodeDialog to support multiple instances on same page
  - Replace hardcoded id="qr-code-svg" with per-instance unique id via useId()
  - Update handleDownload to reference dynamic id instead of document.getElementById()
  - Ensures no DOM id conflicts when multiple dialogs are rendered
@theo-engels theo-engels marked this pull request as ready for review January 31, 2026 16:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant