Why jQuery $.support Was Deprecated

The jQuery.support object was introduced to promote feature detection over browser sniffing, but it was ultimately deprecated because it was designed for jQuery’s internal framework needs rather than as a stable, general-purpose API for web developers. As web standards matured and dedicated tools emerged, maintaining $.support as a public interface created unnecessary technical debt, leading to its deprecation in jQuery 1.9 and complete removal from the public API in jQuery 3.0.

Internal Purpose vs. Public Expectations

Introduced in jQuery 1.3, $.support was intended to replace the fragile $.browser property, which relied on User-Agent sniffing. The goal was to test whether the current browser supported specific features (such as standard event handling or CSS opacity) before jQuery executed code.

However, the properties attached to $.support were strictly tailored to what jQuery itself required to patch cross-browser inconsistencies. When developers began relying on $.support for their own application logic, conflicts arose. Whenever jQuery updated its internal implementation to drop an old workaround or add a new one, properties inside $.support would appear, change behavior, or vanish entirely between releases. This violated semantic versioning expectations for public APIs and frequently broke third-party code.

The Rise of Modernizr and Dedicated Feature Detection

The jQuery development team consistently stated that $.support was never meant to be a full-fledged feature-detection library for end users. Creating a comprehensive, reliable suite of feature tests requires significant overhead and specialized focus.

Dedicated libraries, most notably Modernizr, filled this gap by offering a standardized, fully documented, and robust suite of feature tests specifically built for public consumption. The jQuery team advised developers to use Modernizr or native JavaScript checks rather than piggybacking on jQuery’s volatile internal flags.

Evolution of Web Standards

During the early days of $.support, browsers varied wildly in how they implemented the DOM and CSS specifications. As major browser vendors shifted toward evergreen release models and adopted unified web standards, many of the quirks that $.support tested for (such as boxModel, checkClone, or opacity) ceased to be relevant.

By the time jQuery 3.0 was released, the browser landscape had stabilized significantly. The jQuery team moved internal feature tests into private modules to allow the library to evolve freely without exposing internal implementation details to the global scope.