Skip to content

Auto-Updater

The Now Playing desktop app updates itself automatically in the background. You do not need to visit a website, download installers, or click through update prompts — updates arrive, install when you next quit the app, and the app relaunches on the new version.

A few seconds after each launch, the desktop app checks a CDN-hosted update feed for a newer version. If one is available, it downloads in the background while you continue to use the app. When you quit, the update is installed and the app relaunches on the new version.

App launch
├─ 5 second grace period (finish initialising)
├─ Check update feed
│ │
│ ├─ None available → idle
│ └─ Available → download in background
├─ You use the app normally
└─ App quit
└─ Install update → relaunch on new version

Now Playing publishes two channels:

ChannelVersion PatternAudience
Stable3.0.0, 3.1.0Everyone
Beta3.0.0-beta.619Early adopters who opt in

The channel is determined by the version of the app you are running. Any version containing -beta in its version string checks the beta channel for updates; anything else checks the stable channel. This means you can try beta, find a bug, downgrade to stable, and the updater will follow you back — no reinstall needed.

Update packages are published to Cloudflare R2 and served through the Cloudflare CDN. The app polls:

  • https://cdn.nowplayingapp.com/desktop/releases/stable/
  • https://cdn.nowplayingapp.com/desktop/releases/beta/

Because the packages are CDN-served, downloads start quickly from anywhere in the world.

  • macOS — code-signed and notarised by Apple. Updates are verified against the signing certificate before installation.
  • Windows — code-signed with a standard Windows certificate. Updates are verified against the certificate before installation.

Signing verification is mandatory: the updater refuses to install a package whose signature does not match the expected certificate, so a compromised CDN cannot force a malicious build onto your machine.

Almost nothing. By design, the updater is silent:

  • No pop-up asking to download.
  • No progress bar during download.
  • No “please wait” screen on quit.
  • A brief period of app startup time on relaunch as the new version initialises.

If an update fails for any reason (network blip, signature mismatch, disk full) the app logs it and keeps running the previous version. The updater retries on the next launch.

If you need to freeze on a specific version (for example, during a live broadcast where reliability matters more than being current), you can:

  • Quit the app without waiting for a download to complete — the update installs only on quit, so an aborted download is discarded.
  • Use a firewall rule to block the CDN domain — the updater fails silently and the app continues to run.

For most users, the default “update on next quit” behaviour is the right one: bug fixes, new integrations, and performance improvements arrive without any effort.