Bartender4
Bartender4 is a full ActionBar replacement mod. It provides you with all the features needed to fully customization most aspects of your action and related bars.
Bartender4 in Midnight: As of version 4.16.5, Midnight support is in preview - it'll be worked on until release, of course.
Major Changes since Dragonflight / 10.0
- Hold-to-cast is not currently available for addons
- Action Bars have been slightly re-arranged in Bartender4 for Dragonflight and beyond
- Bar 1-8 now reflect Blizzard Bars 1-8 (these are old 1, 3-6, and the 3 new bars)
- The old bars 7-10 are now called "Class Bar 1-4" (Shapeshifting, Stances, etc)
- The old bar 2 is now called Bonus Action Bar
Features
- Support for all Action Bars and all related bars
- 10 Action Bars (13 in Dragonflight & War Within!)
- Stance Bar
- Pet Bar
- Bag Bar
- Micro Menu
- XP/Reputation Bar
- All Bars are fully customizable (Scale, Alpha, Fade-Out settings, ...)
- Very flexible and customizable Show/Hide driver based on Macro Conditions
- Additional Layout and Paging settings for Action Bars
- Page all bars based on Stance or Modifier
- Possess Bar support
- Custom State driver support with Macro Conditions
- Options to hide specific elements of the buttons (Macro Text, HotKey, more could be added on demand)
- StickyFrames support
- Masque/ButtonFacade support!
- Easy Hotkey Binding using KeyBound
- Options to control the hiding of the default blizzard artwork (you might still want that to be displayed..)
FAQ
Q: I cannot move/drag my skills on my bars?
A: Hold Shift to move skills safely. You can also unlock your bars in the Bartender4 options, but using Shift is safer and recommended.
Q: How do i access the Configuration?
A: You can open the configuration with the Slash Commands (/bt or /bartender) or through the Bartender4 LDB plugin.
Q: Where are my keybindings? And how do i bind new keys?
A: Bartender4 buttons should automatically inherit keybindings from the Blizzard bars. For new keybindings, you can use KeyBound to re-bind your keys. You can access KeyBound by its slash command (/kb) or through the button in the BT4 config. Hover a button, press key → voila!
Q: Can I skin the buttons beyond the built-in options?
A: Bartender4 allows skinning through Masque! After installing both Bartender4 and Masque, you can customize the BT4 appearance in the Masque options.
Q: How do i disable the snapping of the bars?
A: Currently, you can temporarily override the snapping by holding down the Shift Key while moving your bars, or uncheck the option in the popup when your bars are unlocked.
Feature Requests/Bug Tracker
Please submit Bugs and/or Feature Requests using the Ticket System on the WoWAce Project page or in the Bartender4 Forum Thread. Please provide as many information as possible, including your client language, the exact version you are running, how to reproduce any errors, and a stack trace, if applicable.
Links
WoWAce Project: Bartender4 on WoWAce
Custom State Header: Info page on WoWAce
-
View User Profile
-
Send Message
Posted Jul 13, 2026any update on the "press and hold casting" front, their seems to be some addons which fix it for elvui "ElvUI HoldToCastFix" by "It restores hold-to-cast functionality by redirecting your keybinds back to Blizzard's native action buttons behind the scenes." would that somehow be an options. I kinda enjoy bartender and i dont wanna switch back to normal cast bars and that feature seems so helpfull in getting castpremin up :D
-
View User Profile
-
Send Message
Posted Jul 9, 2026elseif WoWClassic then
BT_MICRO_BUTTONS = {
"CharacterMicroButton",
"SpellbookMicroButton",
"TalentMicroButton",
"QuestLogMicroButton",
"SocialsMicroButton",
"GuildMicroButton",
"MainMenuMicroButton",
}
end fixes the micromenu
-
View User Profile
-
Send Message
Posted Jul 9, 2026@ErrantCelt Not sure if this was fixed in the newest version, but I also fixed the keyring button on the bagbar by removing WoWClassicEra from this string, if KeyRingButton and WoWClassicEra and self.config.keyring then
table_insert(self.buttons, KeyRingButton)
count = count + 1
elseif KeyRingButton then
KeyRingButton:Hide()
KeyRingButton:ClearAllPoints()
end
-
View User Profile
-
Send Message
Posted Jul 10, 2026@ErrantCelt sorry, what do I do with this, exactly? :<
-
View User Profile
-
Send Message
Posted Jul 10, 2026@TheScrubExpress Under your Bartender4 folder, look for MicroMenu.lua. Open it in a notepad and look for towards the top of the code for "elseif WoWClassic then" and you'll see a bunch of buttons associated with the micromenu, you replace all of that with what I posted in it's place and you'll have your micro menu back.
-
View User Profile
-
Send Message
Posted Jul 10, 2026@ErrantCelt will this fix it for tbc? or just classic
-
View User Profile
-
Send Message
Posted Jul 11, 2026@420nightman I haven't tested it in Era as I don't play Era, but it fixes it for TBC
-
View User Profile
-
Send Message
Posted Jul 9, 2026I stopped playin wow because I can't find the micro bar. I think the addon is broke
-
View User Profile
-
Send Message
Posted Jul 9, 2026@user_jnphppku38wg8k7o same here.
I hope it will be fixed soon by an update
-
View User Profile
-
Send Message
Posted Jul 9, 2026@user_jnphppku38wg8k7o Keep in mind there are keyboard shortcuts for everything you might need (assuming you haven't altered them). That's what I've been doing in the meantime until it's fixed.
off the top of my head there's:
(C)haracter
S(P)ell book
Tale(N)ts
Quest (L)og
Group F(I)nder
(M)ap
System (Escape)
Some other useful shortcuts:
S(K)ills
S(O)cial
Rep(U)tation
(H)onor
-
View User Profile
-
Send Message
Posted Jul 8, 2026Fixing the CopyTable(nil) crash in Bartender4's micro menu
Addon Bartender4
File MicroMenu.lua:44
Client WoW Classic — Anniversary / TBC content phase
Resolved
On login or /reload, Bartender4 threw a Lua error while building its micro menu bar (Character, Spellbook, Talents, Guild, and so on). The addon didn't load, and the default Blizzard micro buttons were left stranded. Below is the full error, why it happens specifically on the current Anniversary/TBC client, and the one-line root cause with its fix.
01
The error
This is the exact traceback produced on load:
Lua error
TableUtil.lua
1x Blizzard_SharedXMLBase/TableUtil.lua:247: bad argument #1 to 'pairs' (table expected, got nil)
[Blizzard_SharedXMLBase/TableUtil.lua]:247: in function 'CopyTable'
[Bartender4/MicroMenu.lua]:44: in main chunk
Locals:
settings=nil
shallow=nil
copy=<table>
pairs() is refusing to iterate something that isn't a table. The trace says that "something" is whatever got passed into Blizzard's CopyTable, called from line 44 of MicroMenu.lua.
02
What line 44 was doing
Bartender4 builds its list of micro buttons differently depending on which WoW client it's running under. For classic clients, it took a shortcut: copy Blizzard's own list instead of hardcoding one.
Before
MicroMenu.lua
elseif WoWClassic then
- BT_MICRO_BUTTONS = CopyTable(MICRO_BUTTONS)
else
This worked as long as Blizzard's FrameXML defined a global table named MICRO_BUTTONS. It doesn't anymore — not in this client. The Anniversary realms run on the Classic Era client (WOW_PROJECT_CLASSIC) even while surfacing TBC-phase content, and that FrameXML build no longer exposes MICRO_BUTTONS as a global. So MICRO_BUTTONS evaluates to nil, CopyTable(nil) tries to pairs(nil), and the addon dies before it finishes loading.
03
The fix
Fall back to an explicit list of classic micro button names when Blizzard's global isn't there:
After
MicroMenu.lua:44
elseif WoWClassic then
+ BT_MICRO_BUTTONS = MICRO_BUTTONS and CopyTable(MICRO_BUTTONS) or {
+ "CharacterMicroButton",
+ "SpellbookMicroButton",
+ "TalentMicroButton",
+ "AchievementMicroButton",
+ "QuestLogMicroButton",
+ "SocialsMicroButton",
+ "GuildMicroButton",
+ "PVPMicroButton",
+ "LFGMicroButton",
+ "CollectionsMicroButton",
+ "EJMicroButton",
+ "StoreMicroButton",
+ "MainMenuMicroButton",
+ }
else
Two things make this safe rather than just papering over the crash:
It still prefers Blizzard's data when available. MICRO_BUTTONS and CopyTable(MICRO_BUTTONS) or { ... } only falls back to the hardcoded list when the global is genuinely missing. If a future patch reintroduces MICRO_BUTTONS, the addon goes right on using it.
Names that don't exist on this client are harmless. A few lines later, Bartender4 already resolves each entry through _G[...] and only keeps it if the button actually exists:
Existing code
MicroMenu.lua:102–107
for i=1, #BT_MICRO_BUTTONS do
local button = _G[BT_MICRO_BUTTONS[i]]
if button then
table_insert(buttons, button)
end
end
So the fallback list can safely include names like CollectionsMicroButton or EJMicroButton even on a client where they don't exist yet — they're just filtered out silently, exactly as Blizzard's own MICRO_BUTTONS would have been.
Why not just define MICRO_BUTTONS ourselves earlier?
That would work too, but it would shadow a real Blizzard global if one appears in a later patch, potentially masking button-order or naming changes Blizzard makes upstream. Keeping the fallback local to Bartender4's own table avoids that class of problem entirely.
04
Verifying the fix
✓
/reload
with the fix in place — no Lua error on load.
✓
Micro menu bar renders with Character, Spellbook, Talent, Quest Log, Social, Guild, PvP, and Main Menu buttons.
✓
Buttons for features not present on this client (e.g. Collections, Encounter Journal) are simply absent — not blank or erroring.
✓
Toggling the bar and reloading again keeps the same button set stable across sessions.
05
The general lesson
This class of bug shows up constantly in WoW addons that branch on client flavor (WOW_PROJECT_ID, WoWClassic, WoWClassicEra, and so on). A global that exists on retail — or existed on classic last expansion — is not guaranteed to exist on every classic variant going forward. Anniversary realms in particular blur the line further: same WOW_PROJECT_CLASSIC ID, evolving FrameXML, and content phase entirely decoupled from the client build.
The durable fix is the same pattern used here: check the global exists before trusting it (X and ... or fallback), and let the consumer of a derived list tolerate missing entries rather than assuming every name in it resolves to a real frame.
-
View User Profile
-
Send Message
Posted Jul 8, 2026@jwvanderstam This mostly works, but it includes micro buttons that don't exist in TBC, which forces the addon to leave spaces for them. Referencing a screenshot from before the patch, and confirming via the macros below, we can trim the list back to only:
"CharacterMicroButton",
"SpellbookMicroButton",
"TalentMicroButton",
"QuestLogMicroButton",
"WorldMapMicroButton",
"MainMenuMicroButton",
"HelpMicroButton",
For whatever reason, the Help micro button doesn't load for me despite its inclusion. But with the Support button being available on the Main Menu, it hardly matters.
-
View User Profile
-
Send Message
Posted Jul 9, 2026@gemini1661 I have no idea how to do screenshot posting here. There are indeed some empty spaces in the micro menu, ill fix those later, for me most important was i have a clean buggrabber
-
View User Profile
-
Send Message
Posted Jul 9, 2026Fixed now,
Here's the exact change, referenced against the original file's line numbers (before the edit):
File: MicroMenu.lua
Location: inserted between original line 42 (}, closing the WoWClassicMists table) and original line 43 (elseif
WoWClassic then)
Before (original lines 26-43):
26 if WoWClassicMists then
27 BT_MICRO_BUTTONS = {
28 "CharacterMicroButton",
29 "SpellbookMicroButton",
30 "TalentMicroButton",
31 "AchievementMicroButton",
32 "QuestLogMicroButton",
33 "SocialsMicroButton",
34 "GuildMicroButton",
35 "PVPMicroButton",
36 "LFGMicroButton",
37 "CollectionsMicroButton",
38 "EJMicroButton",
39 --"HelpMicroButton",
40 "StoreMicroButton",
41 "MainMenuMicroButton",
42 }
43 elseif WoWClassic then
After (new lines 26-53):
26 if WoWClassicMists then
27 BT_MICRO_BUTTONS = {
28 "CharacterMicroButton",
29 "SpellbookMicroButton",
30 "TalentMicroButton",
31 "AchievementMicroButton",
32 "QuestLogMicroButton",
33 "SocialsMicroButton",
34 "GuildMicroButton",
35 "PVPMicroButton",
36 "LFGMicroButton",
37 "CollectionsMicroButton",
38 "EJMicroButton",
39 --"HelpMicroButton",
40 "StoreMicroButton",
41 "MainMenuMicroButton",
42 }
43 elseif WoWClassicBCC then
44 BT_MICRO_BUTTONS = {
45 "CharacterMicroButton",
46 "SpellbookMicroButton",
47 "TalentMicroButton",
48 "QuestLogMicroButton",
49 "WorldMapMicroButton",
50 "MainMenuMicroButton",
51 "HelpMicroButton",
52 }
53 elseif WoWClassic then
So: 7 new lines added (lines 43-52 in the current file), nothing removed or modified elsewhere. Everything from the
old line 43 (elseif WoWClassic then) onward is unchanged, just shifted down by 10 lines.
-
View User Profile
-
Send Message
Posted Jul 8, 2026Temporary Fix: You can use an in-game /run macro to make a new container for the micro menu, attach it to the edit mode "Menu" container so it can be moved, and put the micro menu buttons inside this new container. This takes clicking 2 macros after logging in or reloading and is undone when you log out or reload, but should serve as a temporary solution until an update gets pushed.
Macro #1: /run for i,b in ipairs({CharacterMicroButton,SpellbookMicroButton,TalentMicroButton,QuestLogMicroButton})do b:SetParent(UIParent)b:ClearAllPoints()b:SetPoint("BOTTOMLEFT",MicroMenu,"BOTTOMLEFT",(i-1)*26,0)b:Show()end
Macro #2: /run for i,b in ipairs({GuildMicroButton,WorldMapMicroButton,MainMenuMicroButton,HelpMicroButton})do b:SetParent(UIParent)b:ClearAllPoints()b:SetPoint("BOTTOMLEFT",MicroMenu,"BOTTOMLEFT",(i+3)*26,0)b:Show()end
-
View User Profile
-
Send Message
Posted Jul 8, 2026Loading out of date bartender is a good fix for now guys but my Micromenu is completely gone anyone have a work around for that ? :D
-
View User Profile
-
Send Message
Posted Jul 8, 2026@anoxsious jus look up the keyboard short cuts it is the only work around for now
-
View User Profile
-
Send Message
Posted Jul 8, 2026@chasebusta89 I had them assigned I had to remake em but yeah :D Thanks m8
-
View User Profile
-
Send Message
Posted Jul 8, 2026dont worry everybody all ur add ons are still broke but u can go to add ons an reload out dated an that made it so i can still use bartender
-
View User Profile
-
Send Message
Posted Jul 8, 2026Please for the love of god we need a fix ASAP.