Notifications and the app
XLR8 runs in the browser and can also be installed as an app on your phone or computer. Installed or not, it can send push notifications when an agent files an issue, a pull request is merged, or something is due, even while XLR8 is closed. All settings for this live under Settings → Notifications.
Installing XLR8 as an app
Section titled “Installing XLR8 as an app”XLR8 is an installable web app. Installing it gives it its own window and an icon on your home screen or in your app launcher; it is the same XLR8 with the same data.
- Android, Chrome: open the ⋮ menu and choose Install app. Settings → Notifications shows this hint on Android while XLR8 runs in a browser tab rather than as the installed app.
- Desktop, Chrome or Edge: use the install icon in the address bar or the install entry in the browser menu.
- iPhone and iPad, Safari: use Share → Add to Home Screen.
The installed app offers two shortcuts on its icon, Inbox and New issue. On Android, once XLR8 is installed through Chrome, it also appears in the share menu of other apps: sharing a link or text to XLR8 creates an issue in the inbox right away, with an Undo button in case you shared the wrong thing.
Turning on push notifications
Section titled “Turning on push notifications”Notifications are turned on per device, because each browser has its own permission.
- Open Settings → Notifications on the device that should receive them.
- Under This device, switch Notifications on this device to On.
- Allow notifications when the browser asks.
- Click Send next to Test notification to check that it arrives.
Repeat this on every device you want to be notified on. The Devices list at the bottom shows all registered devices, when each was last notified, and failed attempts. Remove unregisters a device.
If the switch is disabled, the line below it tells you why:
- “Only possible over https”: open XLR8 through its https address.
- “This browser cannot receive push notifications”: try another browser. On iPhone and iPad, add XLR8 to the home screen first; Safari currently allows web push only for web apps on the home screen.
- “Blocked in the browser”: you declined the permission earlier. Allow notifications for the site in the browser’s site settings (on Android, in the app settings).
- “Not set up on the server”: the instance has no push keys yet. See For self-hosters.
What triggers a notification
Section titled “What triggers a notification”Under Events you choose which events notify you. This setting applies to all devices.
| Event | When | On by default |
|---|---|---|
| New issue from an agent | An agent creates an issue in the inbox | yes |
| Comment from an agent | An agent comments on an issue | yes |
| Due and overdue | A morning summary of open issues due today or overdue | yes |
| PR merged | A pull request linked to an issue was merged | yes |
| PR linked | A pull request was linked to an issue | no |
| Sprint ending | In the morning on the day before the sprint ends and on its last day | yes |
The pull request events need the GitHub integration. Issues in dormant teams do not count for the due summary.
When notifications arrive
Section titled “When notifications arrive”- Morning notifications (due issues, sprint ending) arrive at 08:00, German time (Europe/Berlin), at most once a day each.
- Bundling: XLR8 waits about ten seconds before sending, so several issues from one agent run arrive as one notification (“3 new issues”) instead of a flood.
- No buzzing while you work: if XLR8 is open, visible and in use on any of your devices (input within the last three minutes), nothing goes to your phone. The notification appears inside the app instead, with a sound (if sounds are on) and an Open button. If no open window shows it within 45 seconds, for example because you just closed it, the push goes out after all.
- Tidy notification shade: tapping a notification opens what it is about: the issue, the inbox for several new issues from an agent, the Active list sorted by due date for a summary of several due issues, or the sprint for Sprint ending. Notifications of issues you have already read are cleared from a device the next time XLR8 is open there.
Updates
Section titled “Updates”XLR8 picks up new versions on its own. When you come back to the app and the last check was more than ten minutes ago, it asks the server for the current version. If a new one is out and nothing unsaved is open, it reloads right away. If you are in the middle of typing or have the create dialog open, it shows New version of XLR8 with a Reload button instead, so you can finish first.
For self-hosters
Section titled “For self-hosters”Push notifications need a VAPID key pair on your Convex deployment. Without it, the switch shows “Not set up on the server”. Generate and store the keys with one command from the repository:
node tooling/vapid.mjs # production deploymentnode tooling/vapid.mjs --local # local development backendThe script writes VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY and VAPID_SUBJECT straight into the Convex
environment; the private key never appears in your terminal. For production it takes the contact address that push
services require from appUrl in your instance settings; pass --subject https://… or --subject mailto:… to
use another. You do not need to back it up: if it gets
lost, run the script again with --force, and every device subscribes again the next time it opens
XLR8. For the deployment’s other settings, see Convex setup.
Notification texts are English unless the deployment sets XLR8_LOCALE=de (see
Language).