Button Forge Forever is a fork of the Button Forge project. It has been a great addon in WoW retail and with the current BF maintainers unable to provide a Forever version, we decided to add it ourselves. In their Addon Status they state:
"The addon is not in active development anymore, but we are going to provide support for WoW Updates and add some features once in a while. We are also trying to keep up with other WoW versions (Classic, Burning Crusade Classic)."
So we've made a few improvements and tested it on the Forever Test server. This is what we ended up with.
As the original description says:
BFF is an Action Bar addon that allows you to create completely new Action Bars (as many as you could need). Each bar can have up to 1500 buttons organised into rows and columns (up to 5000 buttons total).
By default, your existing UI won't be changed by Button Forge Forever, it will continue to function and look how it currently does. The bars you create are totally independent allowing you to simply and cleanly add additional action bars to your UI. But you can turn off some Blizzard bars in the add-on.
The new buttons operate almost identically to the default action buttons (i.e. drag and drop actions as you normally would, etc); there are a few subtle differences though, such as the ability to drop non usable items into the buttons (handy for keeping count of items you're harvesting), and the restriction of being unable to change the buttons by dragging new items to the bar while in combat.
Creation and configuration of the bars is done via the mouse using a GUI interface. This GUI is designed to be straight forward and easy to use. We have added many new features to the GUI to enable creating much more useful bars quickly.
Basic Use
Type /bff while out of combat to open the configuration toolbar. Click Create Bar, then click where you want the new bar to appear. Drag spells, macros, items, and other supported actions onto its buttons just as you would with Blizzard’s action bars.
Move the bar into position and use its controls to adjust its rows, columns, and button size. Enable Advanced Bar Configuration Options for additional controls, including bar names, button locking, visibility, and keybindings. Hover over controls for help.
To assign keyboard shortcuts, click Quick Bind Mode, hover over a button, and press the desired key or combination, such as 1, Alt+1, or Ctrl+Q. Right-click a button to clear its binding. Press Escape or click Done when finished.
Type /bff again to close the configuration controls and use your bars normally. Most layout and binding changes must be made outside combat.
Advanced Use
Layered bars: Place several bars in the same location and enable the L — Layered checkbox to make them a linked group. Use the tabs to edit individual layers and Options to add more. Layers share their position and size while keeping separate actions and visibility rules. New layers have no automatically assigned modifier conditions. Turning Layered off retains their settings, but each bar then evaluates its visibility independently.
Conditional visibility: Open a bar’s Visibility Macro editor to configure Show only when requirements and Hide when conditions. Choose whether ANY or ALL conditions must match within each section. Hide conditions take precedence. Use Quick controls for Shift, Ctrl, and Alt requirements, alongside conditions such as combat, forms, or stealth. Click Apply, then close configuration mode to test the result.
Specific and fallback layers: Use Specific layer for bars that should take priority when their conditions match. Use Fallback for a base bar that should appear when no specific layer qualifies. Fallbacks still obey their own Show/Hide rules. Why this layer? helps explain which layer is selected.
Appearance and reusable layouts: Options include hover-to-reveal fading, opacity, and cooldown display settings. Templates save reusable layouts, visibility rules, and bindings without copying the spells or items on the buttons. Recovery provides layout snapshots and restoration tools. Shift-click Create Bar to create several ordinary bars at once.
Optional Blizzard controls: Under Options, use Blizzard bars… to hide Blizzard’s main action bar while keeping a movable stance/form bar. Use Bag windows… to unlock, move, and relock separate or combined inventory windows. Saved positions are remembered for your character.
Command-Line Options
Enter these commands in WoW’s chat window. Most configuration changes should be made outside combat.
Main commands
| Command | Function |
|---|---|
/bff |
Open or close the configuration toolbar and bar-editing controls. |
/bff show |
Show the configuration controls. |
/bff hide |
Hide the configuration controls—not your action bars. |
/bff options |
Open Options, including appearance, layered-bar settings, and keyboard activation preferences. |
/bff templates |
Open the layout template manager to save, load, import, or export templates. |
/bff recovery |
Open recovery tools to save a layout snapshot or restore an earlier one. |
/bff help |
Display a brief reminder of the main commands. |
Blizzard bars and bag windows
| Command | Function |
|---|---|
/bff blizzard |
Open options for hiding Blizzard’s main action bar and keeping the stance/form bar. |
/bff blizzard restore |
Disable main-bar hiding and return the affected native bars to Blizzard’s layout control. |
/bff stance |
Unlock the stance/form-bar positioning box. Requires Hide main action bar and Keep stance/form bar to be enabled. |
/bff stance reset |
Reset the saved stance/form-bar position. |
/bff bags |
Open bag-window positioning options. |
/bff bags unlock |
Open your bags and show move handles for the current separate or combined bag mode. |
/bff bags lock |
Remove the move handles while keeping your saved positions. |
/bff bags reset |
Clear saved bag-window positions and return positioning to Blizzard. This does not reset your action bars. |
Troubleshooting
| Command | Function |
|---|---|
/bff status |
Print the addon version, client information, loaded bars/buttons, capacity, and loading details. Useful when reporting a problem. |
/bff tabs |
Open diagnostics for layered bars and their tabs. |
/bff warnings |
Open keybinding warnings. |
/buttonforgeforever can be used instead of /bff with the same commands.
Advanced bar commands
The original /bufo and /buttonforge commands remain available for detailed control of bar dimensions, position, appearance, visibility, and profiles. Enter /bufo without arguments to display the full list.
Target a particular bar using its name:
/bufo -bar Mounts -scale 0.85 -emptybuttons off
This makes the bar named Mounts smaller and hides its empty button slots.
Common switches include:
| Switch | Function |
|---|---|
-list |
List your bars. |
-bar <name> |
Select the bar to change. |
-rows <number> / -cols <number> |
Set the button grid dimensions. |
-scale <number> |
Set bar scale; 1 is normal size. |
-gap <number> |
Set spacing between buttons. |
-alpha <number> |
Set opacity from 0 to 1. |
-lockbuttons on/off |
Lock or unlock the actions on the bar. |
-emptybuttons on/off |
Show or hide empty button slots. |
-tooltips on/off |
Enable or disable action tooltips. |
-macrotext on/off / -keybindtext on/off |
Show or hide macro names and keybinding labels. |
Include -bar <name> when changing a particular bar. Some advanced switches affect all bars when no bar is specified.
Example: A four-layer Rogue action bar
This walkthrough uses the GUI in ButtonForgeForever to create one stack containing four action bars. Only the appropriate layer will appear during normal play:
| Layer | When it appears |
|---|---|
| Normal | Not stealthed, with Shift released. |
| Normal + Shift | Not stealthed, while holding Shift. |
| Stealth | Stealthed, with Shift released. |
| Stealth + Shift | Stealthed, while holding Shift. |
Each layer holds its own actions, but all four share the same position and dimensions. No custom macro text is needed.
1. Create four bars in one stack
While outside combat:
- Type
/bffto open the configuration toolbar. - Hold Shift and click Create Bar. Release Shift after the quantity window opens.
- Enter 4 in How many bars?, then click Okay.
- Click an empty location on the screen to place the stack.
This creates four ordinary bars at the same position. They are not layered yet.
2. Turn the stack into a layered group
Click the L — Layered checkbox in the upper-right controls of one of the new bars.
The four stacked bars become a linked layered group. You should see tabs for selecting the individual layers and a yellow ! identifying the layered stack.
Set the dimensions you want—for example, one row of six buttons—using the bar’s Add/Remove Button Rows and Add/Remove Button Columns controls. The linked layers resize together.
Keep Layered enabled throughout this example.
3. Name the layers
Enable Advanced Bar Configuration Options on the toolbar if the label and visibility controls are not already visible. Hover over the toolbar buttons to find that tooltip.
Click the first layer’s tab, then its Enter/Edit a Bar Label control. Enter Normal and accept the name.
Repeat for the other three tabs, naming them:
Normal
Normal + Shift
Stealth
Stealth + Shift
Names are only labels. Naming a layer “Stealth” does not make it respond to stealth; the next step sets that behavior.
4. Configure each layer’s visibility
Click a layer’s tab, then its Visibility Macro control to open the visibility editor.
For every layer in this example, use these matching modes:
Show only when: ALL must match
Hide when: ANY reason hides
Leave those modes unchanged as you configure the four layers.
Use Add… beneath the appropriate section to choose conditions. Shift held is under Quick controls; Stealthed is under Class abilities. Click Done to close the condition picker, then Apply in the main editor to save that layer.
Layer 1: Normal
Set Layer role to Fallback.
Leave Show only when empty. Under Hide when, add Stealthed and Shift held.
SHOW ONLY WHEN — ALL must match
Nothing selected
HIDE WHEN — ANY reason hides
Stealthed
Shift held
Click Apply.
This is your base bar. It is allowed by default, but entering stealth or holding Shift excludes it.
Layer 2: Normal + Shift
Select the Normal + Shift tab and open its visibility editor. Set Layer role to Specific layer.
SHOW ONLY WHEN — ALL must match
Shift held
HIDE WHEN — ANY reason hides
Stealthed
Click Apply.
This layer requires Shift, but being stealthed prevents it from appearing.
Layer 3: Stealth
Select the Stealth tab and open its visibility editor. Set Layer role to Specific layer.
SHOW ONLY WHEN — ALL must match
Stealthed
HIDE WHEN — ANY reason hides
Shift held
Click Apply.
This layer requires stealth, but holding Shift excludes it so the next layer can appear instead.
Layer 4: Stealth + Shift
Select the Stealth + Shift tab and open its visibility editor. Set Layer role to Specific layer.
SHOW ONLY WHEN — ALL must match
Stealthed
Shift held
HIDE WHEN — ANY reason hides
Nothing selected
Click Apply.
ALL must match is important here: you must be stealthed and holding Shift. Selecting ANY may match would allow this layer when either condition was true on its own.
5. Add actions to each layer
While configuration remains open, click each tab and drag the desired abilities, macros, or items onto its buttons.
For example, you might put your regular attacks on Normal, utility actions on Normal + Shift, opening attacks on Stealth, and alternate opening actions on Stealth + Shift.
You do not need to enter stealth to populate the Stealth layers. The tabs let you select and edit each layer while configuring the stack.
6. Assign shared keybindings
To use corresponding keys across the four layers:
- Open Options, select your new layered group, and make sure Keep key bindings consistent is checked.
- Return to the Normal tab.
- Click Quick Bind Mode on the toolbar.
- With Shift released, hover over the first button and press 1. Bind the next buttons to 2, 3, and so on.
- Click Done to finish Quick Bind.
The corresponding button positions share those key choices. BFF adds the required Shift modifier to the layers whose visibility rules require it:
| Active layer | First button’s binding |
|---|---|
| Normal | 1 |
| Normal + Shift | Shift+1 |
| Stealth | 1 |
| Stealth + Shift | Shift+1 |
Shared bindings do not copy abilities. Button 1 can contain a different action on every layer.
7. Close configuration and test
Type /bff to close the configuration controls before testing. Editing mode lets you preview selected tabs, so it is not the same as normal gameplay selection.
Start out of stealth with Shift released. You should see Normal. Hold Shift to see Normal + Shift, then release it to return to Normal.
Enter stealth. You should now see Stealth. Hold Shift to see Stealth + Shift, then release it to return to Stealth. Leaving stealth returns you to the appropriate Normal layer.
When something does not switch correctly
Reopen configuration and check that the group’s L — Layered checkbox is still enabled, that each layer’s settings were saved with Apply, and that Stealth + Shift uses ALL must match.
The visibility editor’s Why this layer? button can explain which saved conditions match. Also remember that the Hide list contains the condition that should hide the bar: adding Stealthed there means “hide while stealthed,” not “hide while not stealthed.”
The finished setup gives you four sets of actions in one screen location, switching automatically with stealth and Shift. This example does not add Ctrl or Alt requirements; those can be configured later using the same Show/Hide controls.
Oh, and this addon works on retail as well. :)

