An intrinsic frame extends the Widget API by adding a new subtype of Frame.

<Frame name="MyFrame" intrinsic="true">
		<OnLoad intrinsicOrder="">

<MyFrame />


Widget scripts

  • Intrinsic frames may have permanent widget script handlers; meaning they are unaffected by ScriptObject:SetScript().
  • This behaviour is controlled using the intrinsicOrder attribute on widget scripts inside a <Scripts> element.
    • precall causes it to irrevokably fire before any script set with SetScript()
    • postcall causes it to irrevokably fire after any script set with SetScript()
    • none (default) omits this special behaviour, leaving the script susceptible to overwriting with SetScript().
  • Notwithstanding, widgets may later hook these special precall/postcall scripts using an added argument to ScriptObject:HookScript().


  • The name attribute becomes the new tag name in XML, or the first argument to CreateFrame() in Lua.
  • GetObjectType() returns the intrinsic's type, not the intrinsic name, e,g. CreateFrame("MyFrame"):GetObjectType() == "Frame", not "MyFrame".
  • It is not possible to declare an intrinsic based on another intrinsic.

Patch changes