Packaging and Distributing Nexus Addons

Updated 21 October, 2026

Packaging and Distributing Nexus Addons

Once your addon works, you want players to find it, install it with one click and receive your updates without thinking about it. Nexus handles installation and updates for you, as long as your releases follow a few conventions. This guide covers preparing your DLL, publishing releases on GitHub, listing your addon in the Nexus library, and shipping updates.

Ship a single DLL

Nexus installs and updates exactly one file per addon: your DLL. Everything your addon needs at startup has to be inside it.

  • Embed assets such as icons, fonts and translations as resources, see Textures and Fonts.
  • Avoid additional DLLs. Link libraries statically. A second DLL in the addons folder would be treated as a separate, incompatible addon, and in the game folder it would not be updated.
  • Link the C++ runtime statically (/MT) or make sure your users have the matching Visual C++ Redistributable. Missing runtimes are a common reason for an addon to fail loading.
  • Download large or optional data at runtime into your addon folder, which you get from Paths_GetAddonDirectory.
  • Build in release mode, and keep the PDB of every release privately, so you can read crash reports later. See Investigating crashes.

Publishing releases on GitHub

GitHub releases are the recommended way to deliver your addon. Set the update provider in your definition:

s_AddonDef.Provider   = UP_GitHub;
s_AddonDef.UpdateLink = "https://github.com/you/MyAddon";

For each version:

  1. Increase the version in GetAddonDef, for example to 1.3.0.
  2. Build the release DLL.
  3. Create a GitHub release whose tag is the same version: 1.3.0 or v1.3.0, or with four parts like 1.3.0.0. Other tag formats, such as 1.3.0-beta, are ignored by Nexus.
  4. Attach the DLL as the release's only .dll asset. Nexus downloads the first .dll it finds.
  5. Publish the release.

From now on, Nexus finds the update on its users' next game start, or earlier if they click Check for Updates, and installs it automatically.

The version inside the DLL must match the release tag. If the tag says 1.3.0 but GetAddonDef still says 1.2.0, Nexus sees an update every time and downloads the same file again and again.

Pre-releases

Mark test versions as pre-release on GitHub. Nexus ignores them unless a user explicitly allows pre-release updates for your addon, which they can do in the addon's right-click menu. This is a convenient way to let testers try a version before everyone gets it. Give pre-releases a higher version than the current stable release, as usual.

Automating releases

A GitHub Actions workflow that builds your project with MSBuild on a Windows runner and uploads the DLL when you push a tag saves time and avoids mistakes such as uploading a debug build. Generate the version in GetAddonDef from the tag in the same workflow, so they can never disagree.

Other update providers

If you do not use GitHub, Nexus can also update from a direct download link, with an MD5 hash file next to it, or let your addon find updates itself. The details are in The Addon Definition and API Versioning. GitHub is the best supported option and the one the addon library expects.

Listing your addon in the Nexus library

The Nexus addon library is where players discover addons, both on this site and inside the game. To add yours:

  1. Sign in on raidcore.gg and start a project.
  2. Fill in the details:
    • Name and Short Summary appear in the library lists and in the game.
    • Signature must be the same value your GetAddonDef returns, written in hexadecimal, for example 0x1A2B3C4D. It must be unique. Nexus uses it to recognise installed copies of your addon.
    • Release Source URL is your GitHub repository, for example https://github.com/you/MyAddon. Nexus installs your addon from its releases, and the download count shown on the site is taken from them.
    • Direct Download URL is used for the download button on the website. For GitHub, a link like https://github.com/you/MyAddon/releases/latest/download/MyAddon.dll always points to the newest release.
    • Page Content, Cover Image, Categories and links to your website, Discord, Patreon or Ko-fi make up your addon's page.
    • Custom URL gives your page a readable address such as /gw2/addons/myaddon.
  3. Choose the visibility: Public addons are listed for everyone, Unlisted addons can only be opened with the link, and Private addons are only visible to people you grant access.
  4. Save. Your addon is now waiting for approval.

Raidcore reviews every addon before it appears in the library, and assigns its labels according to the Addon Policy: whether it accesses game memory, uses macros, or was made with generative AI. Describe honestly what your addon does to speed this up. Only approved, public addons with a signature and a release source appear in the in-game library.

You can register your addon before its first public release, to reserve your signature and prepare the page. Keep it private or unlisted until you are ready.

Working with others

Under Manage Access on your addon's page, you can give other people access to edit or view it, and transfer ownership if someone else takes over the project. Your addons are listed under My Addons.

Shipping updates

For a listed addon, publishing an update is just publishing a new GitHub release. You do not need to change anything on raidcore.gg. A few practices keep updates smooth for your users:

  • Never reuse a version number. If a release was broken, publish a new one with a higher version.
  • Keep the signature. Changing it turns your update into a different addon.
  • Migrate settings. Store a version in your settings file and convert old settings, rather than resetting them.
  • Write release notes on the GitHub release. Users and the community read them.
  • React to game updates quickly if your addon is volatile. Nexus re-enables it automatically for all users as soon as your fixed release is out.

The library API

The library is also available as JSON, for example for community tools and websites. GET https://api.raidcore.gg/gw2/addons returns all listed Nexus addons:

interface Addon {
	id: number;                /* Signature as a number. */
	name: string;
	author: string;
	description: string;
	download: string;          /* Release source URL. */
	addon_policy_tier: number; /* 1 if it accesses memory or uses macros, otherwise 0. */
	tags: string[];
}

GET https://api.raidcore.gg/arcdpslibrary returns the ArcDPS extensions offered by Nexus in the same format, and GET https://api.raidcore.gg/nexusversion returns the current Nexus version and changelog.