coderef

Proxy and ReflectBaseline · Widely available

The Proxy and Reflect JavaScript built-ins intercept and define custom behavior for fundamental language operations (such as property lookup, assignment, enumeration, or function invocation).

Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Sep 20, 2016. Widely available since Mar 20, 2019.

Browser support

DesktopChrome
1–48Not supported
49+Supportedsince Mar 2, 2016
Current: 155
Edge
12+Supportedsince Jul 29, 2015
Current: 154
Firefox
1–17Not supported
18+Supportedsince Jan 8, 2013
Current: 157
Safari
1–9.1Not supported
10+Supportedsince Sep 20, 2016
Current: 27
MobileChrome Android
18–48Not supported
49+Supportedsince Mar 9, 2016
Current: 155
Firefox Android
4–17Not supported
18+Supportedsince Jan 8, 2013
Current: 157
Safari iOS
1–9.3Not supported
10+Supportedsince Sep 13, 2016
Current: 27

How to use

This feature is Baseline widely available — use it freely, no fallback needed.

Example

Full syntax and examples are on MDN: Proxy.

Feature detection

JS · check before using
if (typeof Proxy !== "undefined") {
  // Proxy is available
}

Sub-features

Support for each part of the feature (30). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
Proxy49121810491810
Proxy.Proxy49121810491810
Proxy.handler.apply49121810491810
Proxy.handler.construct49121810491810
Proxy.handler.defineProperty49121810491810
Proxy.handler.deleteProperty49121810491810
Proxy.handler.get49121810491810
Proxy.handler.getOwnPropertyDescriptor49121810491810
Proxy.handler.getPrototypeOf49794910494910
Proxy.handler.has49121810491810
Proxy.handler.isExtensible49123110493110
Proxy.handler.ownKeys49121810491810
Proxy.handler.preventExtensions49122210492210
Proxy.handler.set49121810491810
Proxy.handler.setPrototypeOf49124910494910
Proxy.revocable63123410633410
Reflect49124210494210
Reflect.apply49124210494210
Reflect.construct49124210494210
Reflect.defineProperty49124210494210
Show 10 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
Reflect.deleteProperty49124210494210
Reflect.get49124210494210
Reflect.getOwnPropertyDescriptor49124210494210
Reflect.getPrototypeOf49124210494210
Reflect.has49124210494210
Reflect.isExtensible49124210494210
Reflect.ownKeys49124210494210
Reflect.preventExtensions49124210494210
Reflect.set49124210494210
Reflect.setPrototypeOf49124210494210