The $timeout in ui-sref-active directive causes a lot extra digest cycles. In our case 12! function addClass(el, className) { $timeout(function () { el.addClass(className); }); } Do we really need $timeout? At least removeClass does not use $timeout.