Stop writing an updater for every add-on you ship. Register an ID, publish a version, and every user running the LEUC master add-on hears about it the next time Blender opens.
What your users see, inside Blender
Every add-on that ships its own updater duplicates the same network code, the same version parsing, and the same failure modes. Users end up on old builds not because they refused an update, but because nothing told them.
See how LEUC handles itThe master add-on collects every installed add-on ID and version in one pass. No per-add-on network code.
A single batched POST carries the whole library. Version comparison happens server-side, against the registry.
Back comes only what changed: latest version, semantic update type, changelog, download URL, criticality.
A notification inside Blender, with the changelog attached. One click to the download. Nothing to configure.
# blender 5.2 · master add-on 1.4.0$ leuc scan --installed found 4 add-ons · 1 request POST /api/bulk-check{ "addons": [ { "addon_id": "CleanPanels", "version": "7.0.0" }, { "addon_id": "NGonLoopSelect", "version": "3.0.0" } ]} 200 OK · 38 ms CleanPanels 7.0.0 → 7.1.0 minor NGonLoopSelect 3.0.0 → 4.0.0 major · breaking → 2 notifications shown in Blender
Send the IDs and versions you have. Comparison is semantic and server-side, so the add-on never parses a version string. The response carries only what changed.
{
"addon_id": "cleanpanels",
"latest_version": "9.2.3",
"update_type": "patch",
"is_critical": false,
"changelog_url": "/addons/cleanpanels/changelog"
}Claim the ID once and it is bound to your account. Nobody else can publish a version under it, and users can verify who shipped what.
Version spread, adoption after a release, and the Blender versions your users run. Enough to decide when a legacy branch can be dropped.
Users file a report from inside Blender — the traceback redacted on their machine and again on arrival, no account, no email. Point an add-on at a Discord webhook and every report lands in the channel the moment it does. Answer in the thread; they read your reply in the same panel they filed from.
#addon-support Project LEUC APP Bug report - Clean Panels AttributeError: 'NoneType' object has no attribute 'panels' File "/home/<user>/.config/blender/addons/cleanpanels/core.py", line 88 Ticket leuc-K4TQ-8ZP2WM1X-3RV0DCEA · Blender 4.2 · v9.2.3 Click the title to triage this report
Drop the module in and register it. It handles the request, the cache, the backoff, and the notification UI.
# __init__.py from . import addon_update_checker def register(): addon_update_checker.register()
Claim your ID in the dashboard. It is checked against the registry, so collisions are caught before your first release.
Push the version, changelog, and download URL — from the dashboard or the API. Mark it critical if users must take it.
Adoption shows up per version. You see how fast a release spreads and who is still on the old build.