Shadowed Unit Frames

Another example

SUF focuses on a simple configuration while maintaining the flexibility that most users will care about, preventing unnecessary bloating of the addon that sacrifices performance. While you aren't going to be able to set the health bar to be exactly 3.14 pixels outside of the unit frames, you can change options you actually care about such as bar height, ordering, frame height and so on. To speed up configuration, you can configure multiple units at the same time through the global configuration. For example, if you want to set the height of the Player, Target, Focus and Party frames to 50 then the height of Target's Target, Target's Target of Target, Focus Target to 30 you can easily do this by changing two options instead of having to do it seven times.

However, should you need a little bit of extra configuration do not despair! An advanced option is included that will unlock additional configuration giving finer control over the configuration.

Shadowed Unit Frames in Legion
As of version v4.1.0, WoW 7.0 and Legion is fully supported!

Slash commands: /shadoweduf (/suf)

Donations are not required, but are appreciated!

Are you driven crazy by your party frames not aligning up exactly with your player frames, even if it's only half a pixel off? The anchoring system will let you solve all alignment issues, by allowing you to anchor a frame to another and set a simple offset from the frame it is anchored to, or by manually setting the X/Y position of the frame.

Using the screen shot as an example, if you drag the player frame the other frames will move with the player frame preserving the alignment and spacing. Each frame can still be manually positioned wherever you want, but this gives you a way of easily anchoring and moving frames around without having to use a ruler.

Zone configuration (Disabling options/units by zone type)
Units and modules can be enabled or disabled based on the type of zone you are in. For example, if you want to see party targets and party pets while you are in an arena but nowhere else then you can use the visibility options to enable it only while inside an arena. Modules can also be disabled by zone type, if you want to see party auras while in a raid instance but nowhere else you can disable the module in raid instances only.

Profiles do not have to be swapped and it is all automatic.

Supports unit frames are as follows:

Player: Player, Pet, Pet Target
General: Target, Target of Target, Target of Target of Target, Focus, Focus Target
Party: Party, Party Pets, Party Targets, Party ToT
Raid: Raid, Raid Pet, Main Tank, Main Tank Target, Main Assist, Main Assist Target, Boss, Boss Target, Boss ToT, Main Assist ToT, Main Tank ToT
Arena: Arena, Arena Target, Arena Pets, Arena ToT
Battleground: Battleground, Battleground Target, Battleground Target


  • Tags: Includes a simple tagging system that can be customized in virtually any way using Lua, even if something isn't included by default odds are you can make the tags
  • Incoming Heals: Supports the Blizzard Events for incoming heal data, no external libraries needed
  • Auras: Can be set to only show auras you casted, or can cast on others. Can enlarge auras that you casted, and hide the cooldown ring on the timers of auras you didn't cast as well to make it more obvious which ones you casted and which ones you didn't
  • Aura Timers: You will need a mod such as OmniCC to show timers on buffs and debuffs
  • Aura Indicators: Display colored squares or icons for certain auras on any unit
  • Fader: Fades frames when out of combat and inactive (100% mana/no target)
  • Class Power (Eclipse, Holy Power, etc): Supports all of the class power features from Eclipse to Burning Embers.
  • Highlighting: Border highlighting of frames based on mousing over them, curable debuffs, aggro or you are targeting/focusing them
  • Range Checking: Fades frames out that are out of range of you
  • Exportable Layouts: If you have a layout, or your friend has a layout you want to try out you can export/import SUF layouts by going to /suf -> Layout Manager
  • Profiles: You can change from any profile to another one without reloading your UI, should you want to use a completely different layout based on zone you can easily switch profiles without hassle

Pretty much all the general unit frame settings are in, health bars, cast bars, power bars, portraits, indicators and so on.

Basic module support is included, should you be interested in building a module see the documentation on github for more information.

Currently released:


Please focus all discussions, questions or general feedback to the forum thread:

For feature requests and bug reports, please continue to use the Ticket tracker. Feel free to ask on the thread first, if you're unsure what to do!

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of ronaldoz7 ronaldoz7 May 27, 2014 at 04:16 UTC - 0 likes - Old Aura style. = Old version Shadowed Unit Frames - v3.10.7 - New Aura Style.. New Version Shadowed Unit Frames - v3.10.7-10-g6aac138

    So is it possible to use the old Aura layout not the new?

  • Avatar of ronaldoz7 ronaldoz7 May 27, 2014 at 04:10 UTC - 0 likes

    Shadowed Unit Frames - v3.10.7-10-g6aac138 = The Auras have changed.

    So can you revert back to

    Shadowed Unit Frames - v3.10.7 - As that as the old Auras style which is better tbh.

  • Avatar of Shadowed Shadowed May 27, 2014 at 03:55 UTC - 0 likes

    No positioning code was touched in the change.

  • Avatar of ronaldoz7 ronaldoz7 May 27, 2014 at 03:45 UTC - 0 likes

    Can u pls put the u old format back up was easily to arrange debuffs etc on boss frames... Like now my Shadow priest dots - Shadow word:Pain & Vampriic touch are at the bottom and for the life of me cant get them to the left of the boss frame been trying for hours... the old format was much better and user friendly thanks.

  • Avatar of Shadowed Shadowed May 26, 2014 at 20:25 UTC - 0 likes

    Try latest alpha BNSSNB, should be fixed.

  • Avatar of BNSSNB BNSSNB May 26, 2014 at 10:20 UTC - 0 likes

    Report an error(version: v3.10.7-8-g53a99cc) First /suf can not open the options, and then the following error(sorry my engilsh no good):

    1x ShadowedUF_Options\config.lua:7241: attempt to index field 'linked' (a nil value)
    ShadowedUF_Options\config.lua:7241: in function <ShadowedUF_Options\config.lua:6197>
    ShadowedUF_Options\config.lua:7321: in function <ShadowedUF_Options\config.lua:7308>
    ShadowedUF_Options\config.lua:7345: in function `Open'
    ...aceShadowedUnitFrames\ShadowedUnitFrames-v3.10.7-8-g53a99cc.lua:1061: in function `?'
    FrameXML\ChatFrame.lua:4315: in function `ChatEdit_ParseText'
    FrameXML\ChatFrame.lua:3969: in function `ChatEdit_SendText'
    FrameXML\ChatFrame.lua:4008: in function `ChatEdit_OnEnterPressed'
    [string "*:OnEnterPressed"]:1: in function <[string "*:OnEnterPressed"]:1>
    options = <table> {
     type = "group"
     name = "Shadowed UF"
     args = <table> {
    loadGeneralOptions = <function> defined @ShadowedUF_Options\config.lua:356
    loadUnitOptions = <function> defined @ShadowedUF_Options\config.lua:1566
    loadHideOptions = <function> defined @ShadowedUF_Options\config.lua:1503
    loadTagOptions = <function> defined @ShadowedUF_Options\config.lua:5486
    loadFilterOptions = <function> defined @ShadowedUF_Options\config.lua:4891
    loadVisibilityOptions = <function> defined @ShadowedUF_Options\config.lua:5994
    loadAuraIndicatorsOptions = <function> defined @ShadowedUF_Options\config.lua:6197
    Config = <table> {
     getUnitOrder = <function> defined @ShadowedUF_Options\config.lua:162
     isModifiersSet = <function> defined @ShadowedUF_Options\config.lua:166
     barTable = <table> {
     hideAdvancedOption = <function> defined @ShadowedUF_Options\config.lua:118
     visibilityTable = <table> {
     Open = <function> defined @ShadowedUF_Options\config.lua:7340
     selectDialogGroup = <function> defined @ShadowedUF_Options\config.lua:107
     tagTextTable = <table> {
     setUnit = <function> defined @ShadowedUF_Options\config.lua:251
     advanceTextTable = <table> {
     setVariable = <function> defined @ShadowedUF_Options\config.lua:211
     hideRestrictedOption = <function> defined @ShadowedUF_Options\config.lua:306
     getAnchorParents = <function> defined @ShadowedUF_Options\config.lua:85
     auraTable = <table> {
     hideTable = <table> {
     unitTable = <table> {
     set = <function> defined @ShadowedUF_Options\config.lua:173
     parentTable = <table> {
     isUnitDisabled = <function> defined @ShadowedUF_Options\config.lua:126
     getName = <function> defined @ShadowedUF_Options\config.lua:153
     indicatorTable = <table> {
     tagWizard = <table> {
     getVariable = <function> defined @ShadowedUF_Options\config.lua:266
     classTable = <table> {
     tagTable = <table> {
     getUnit = <function> defined @ShadowedUF_Options\config.lua:277
     selectTabGroup = <function> defined @ShadowedUF_Options\config.lua:112
     hideBasicOption = <function> defined @ShadowedUF_Options\config.lua:122
     get = <function> defined @ShadowedUF_Options\config.lua:189
  • Avatar of flatluigi flatluigi May 09, 2014 at 00:33 UTC - 0 likes

    Is there a way to add a graphic on the portrait of rare/elite mobs? The "rare/elite" text is hard to notice, especially when compared to the silver/gold dragon on default.

    It's the only thing I miss from the default unit frames but it bugs me enough that I don't want to switch over (yeah I'm being silly).

  • Avatar of taemobulok taemobulok Mar 20, 2014 at 03:46 UTC - 0 likes

    So I added an empty bar with 0 height. I added a text on it. The text shows up regardless of the height. Then I log out.

    I log back in. The text is gone on the empty bar. I changed the height to 10. The text shows up again. I changed the height back to 0. The text stayed up. I log out.

    I log back in for the second time. The text is gone again. Any fix?

  • Avatar of BNSSNB BNSSNB Mar 12, 2014 at 08:21 UTC - 0 likes

    Report an error:

    13x ShadowedUnitFrames\modules\auras-光環.lua:570: <unnamed>:SetText(): Font not set
    [C]: in function `SetText'
    ShadowedUnitFrames\modules\auras-光環.lua:570: in function <ShadowedUnitFrames\modules\auras.lua:510>
    ShadowedUnitFrames\modules\auras-光環.lua:626: in function `?'
    ShadowedUnitFrames\modules\units.lua:113: in function `?'
    ShadowedUnitFrames\modules\units.lua:286: in function <ShadowedUnitFrames\modules\units.lua:281>
    parent = <table> {
     debuffs = <unnamed> {
     secondary = "debuffs"
     primary = "buffs"
     anchor = <unnamed> {
     buffs = <unnamed> {
     whitelist = <table> {
     blacklist = <table> {
    frame = <unnamed> {
     temporaryEnchants = 0
     type = "buffs"
     anchorTo = SUFHeaderpartyUnitButton1 {
     parent = SUFHeaderpartyUnitButton1 {
     totalAuras = 1
     maxAuras = 10
     filter = "HELPFUL"
     0 = <userdata>
     buttons = <table> {
    type = "buffs"
    config = <table> {
     enabled = true
     selfScale = 1.3
     anchorPoint = "BL"
     maxRows = 1
     perRow = 10
     x = 0
     prioritize = true
     enlargeSelf = false
     y = 0
     size = 16
    displayConfig = <table> {
     enabled = true
     selfScale = 1.3
     anchorPoint = "BL"
     maxRows = 1
     perRow = 10
     x = 0
     prioritize = true
     enlargeSelf = false
     y = 0
     size = 16
    filter = "HELPFUL"
    isFriendly = true
    curable = false
    index = 1
    name = "颶風激勵"
    rank = ""
    texture = "Icons\Spell_Nature_Cyclone"
    count = 0
    auraType = nil
    duration = 0
    endTime = 0
    caster = "party1"
    isRemovable = nil
    shouldConsolidate = nil
    spellID = 128943
    button = <unnamed> {
     0 = <userdata>
     point = "TOPLEFT"
     anchorTo = SUFHeaderpartyUnitButton1 {
     parent = SUFHeaderpartyUnitButton1 {
     border = <unnamed> {
     yOffset = -3
     anchorOffset = 0
     relativePoint = "BOTTOMLEFT"
     icon = <unnamed> {
     isAuraAnchor = true
     auraID = 1
     unit = "party1"
     filter = "HELPFUL"
     stack = <unnamed> {
     cooldown = SUFHeaderpartyUnitButton1Aurabuffs1Cooldown {
     xOffset = 3
    playerUnits = <table> {
     player = true
     pet = true
     vehicle = true
    canCure = <table> {
     Curse = true
    updateButton = <function> defined @ShadowedUnitFrames\modules\auras.lua:217
    positionAllButtons = <function> defined @ShadowedUnitFrames\modules\auras.lua:112
  • Avatar of Thels Thels Feb 26, 2014 at 12:49 UTC - 0 likes

    Since the addon was giving me bunch of errors, I decided to start with a clean slate, closed WoW, deleted the entire settings for SUF, and rebooted WoW. No more errors. I start enabling unit frames one by one, and the moment I enable one of the following unit frames, I get a LUA error:

    Arena Target of Target Battleground Target of Target

    Being a completionist myself, I had all the unit frames enabled, in case I would run into that content at some time. Not being much of a PvPer myself, I simply disabled them for now, but you might want to look into them. __________________________

    The next thing I did was invite a guildmate to a group, convert the group to a raid, and assign myself as main tank. I then started targeting random people, and whoever I had targeted showed up as both the MT Target and the MT ToT. For my own Target, the ToT was often blank, and sometimes pointing towards a completely different character.

    Hence, the MT ToT and MA ToT functionality are broken. They show the MT Target and MA Target instead of the MT ToT and MA ToT.

    Last edited Feb 26, 2014 by Thels


Date created
May 17, 2009
Last update
Sep 13, 2016
Development stage
  • deDE
  • enUS
  • frFR
  • koKR
  • ruRU
  • zhCN
  • zhTW
All Rights Reserved
Curse link
Shadowed Unit Frames
Reverse relationships
Recent files