Skip to content
R edited this page Jul 8, 2026 · 15 revisions

Foundry

Foundry is a small toolkit for building WoW addons. I made it while reworking my own addons (Homestead and Sift), and since the work was happening anyway, I cleaned it up so other people could use it too.

If you've built an addon before, you've probably used Ace3. Foundry isn't trying to replace it, Ace3 is solid and still maintained. The thing is, Ace3 was built for an older version of WoW's API, and Blizzard has added a lot since then: a proper settings system, a new menu system, better scrolling lists, cleaner tooltip hooks. A bunch of that newer stuff either has no good library wrapping it, or the old community libraries that did have gone unmaintained. So you end up either fighting the raw Blizzard code yourself or leaning on a library nobody's touched in years.

That's the gap Foundry fills. It wraps the modern Blizzard stuff so you write a few clean lines instead of a verbose mess but it never hides the real Blizzard objects from you. There's always a way to reach underneath and grab the raw thing when you need to. You're saving yourself typing, not giving up control.

Right now it handles the everyday stuff: slash commands, game events, addon startup/login, saved settings (and it reads your existing AceDB save files as-is, so switching doesn't nuke anyone's settings), Blizzard's scrolling lists, your addon's options panel, tooltip hooks, and context menus.

The best part is you don't have to commit to anything. Grab one piece, keep using Ace3 for everything else, and add more whenever you feel like it. And if there's some Blizzard API you wish was easier to use, tell me that's literally how every module so far got added. You bring an addon and a thing you want made simpler, and that's enough.

New to WoW addons? Start here →

Packaging for CurseForge, Wago, or embedded releases? Package Foundry with your addon →

Moving from Ace3? Use the Ace-to-Foundry migration guide →

This wiki is the API reference — full docs for each module are below. At runtime Foundry is exposed as _G.Foundry_1_0.

Modules

Each module is self-contained: declare ## Dependencies: Foundry-1.0 and use only the modules you need.

Module What it bridges Status Reference
Commands Slash commands — Blizzard's SlashCmdList + SLASH_* registration system Available Foundry.Commands
Events Game events — Blizzard's frame event system (RegisterEvent/OnEvent, RegisterUnitEvent) Available Foundry.Events
Lifecycle Addon startup — the ADDON_LOADED, PLAYER_LOGIN, and PLAYER_LOGOUT events Available Foundry.Lifecycle
DB Saved data — Blizzard's SavedVariables persistence Available Foundry.DB
List Scrolling lists — Blizzard's ScrollBox system (ScrollBoxListView, DataProvider, ScrollUtil) Available Foundry.List
Settings Options panel — Blizzard's Settings registration API (RegisterCanvasLayoutCategory, RegisterAddOnCategory) Available Foundry.Settings
Tooltip Tooltip hooks — the modern TooltipDataProcessor system Available Foundry.Tooltip
Menu Context menus — the modern Blizzard_Menu / MenuUtil system Available Foundry.Menu

Accessing Foundry at runtime

local F = _G.Foundry_1_0
if not F then
    error("MyAddon requires Foundry-1.0. Please install or enable it.")
end

Foundry on its own does nothing — it only runs when an addon depends on it.

Roadmap

Foundry ships one module at a time, and each module is validated against a real consuming addon before it lands. All eight modules — Commands, Events, Lifecycle, DB, List, Settings, Tooltip, and Menu — are now available (consumers: Homestead and Sift).

There are no dates here on purpose: a module ships when an addon has actually proven it, not on a schedule. To propose or pull forward a module, see Adding new modules in the README.

Clone this wiki locally