A method of extending a user interface "UI" of a target application displayed on a computer system, the method comprising: identifying, based on a UI state of an operating system, one or more target UI objects related to the target application, wherein the UI state is created by the operating system and defines graphical properties of UI objects for applications executing on the operating system; registering for system notifications for the one or more target UI objects related to the target application; receiving system notifications from the operating system indicating UI events associated with a target UI object related to the target application; updating a UI sub-state for the target application, wherein the UI sub-state is generated and maintained by a UI extender separate from the operating system and the target application, and includes target UI objects, identifies graphical properties of the target UI objects, and is separate from the UI state created by the operating system; generating a UI extension for a focused target UI object of the target application based on the graphical properties of the target UI object in the UI sub-state; displaying the UI extension in coordination with the focused target UI object, wherein the UI extension provides additional functionality to the target application; receiving a second system notification indicating a graphics event including a graphics object ID identifying a graphics object rendered by the operating system, the graphics event indicating graphical properties of the graphics obj ect; identifying the target UI object of the graphics event based on the graphics object ID, wherein the graphics object ID is associated with a UI object ID identifying the target UI object; updating the graphical properties of the target UI object based on graphical properties of the graphics object received with the second system notification. identifying, based on a UI state of an operating system, one or more target UI objects related to the target application, wherein the UI state is created by the operating system and defines graphical properties of UI objects for applications executing on the operating system; registering for system notifications for the one or more target UI objects related to the target application; receiving system notifications from the operating system indicating UI events associated with a target UI object related to the target application; updating a UI sub-state for the target application, wherein the UI sub-state is generated and maintained by a UI extender separate from the operating system and the target application, and includes target UI objects, identifies graphical properties of the target UI objects, and is separate from the UI state created by the operating system; generating a UI extension for a focused target UI object of the target application based on the graphical properties of the target UI object in the UI sub-state; displaying the UI extension in coordination with the focused target UI object, wherein the UI extension provides additional functionality to the target application; receiving a second system notification indicating a graphics event including a graphics object ID identifying a graphics object rendered by the operating system, the graphics event indicating graphical properties of the graphics obj ect; identifying the target UI object of the graphics event based on the graphics object ID, wherein the graphics object ID is associated with a UI object ID identifying the target UI object; updating the graphical properties of the target UI object based on graphical properties of the graphics object received with the second system notification.