WeakMapBaseline · Widely available
A WeakMap object holds key-value pairs that do not create strong references to its keys, such that value data can be associated with a key without preventing garbage collection of the key.
Supported in all major browsers for at least 30 months — safe to use without fallbacks. Baseline since Jul 29, 2015. Widely available since Jan 29, 2018.
Browser support
DesktopChrome
1–35Not supported
36+Supportedsince Jul 16, 2014
Current: 155Edge
12+Supportedsince Jul 29, 2015
Current: 154Firefox
1–5Not supported
6+Supportedsince Aug 16, 2011
Current: 157Safari
1–7Not supported
8+Supportedsince Oct 16, 2014
Current: 27MobileChrome Android
18–35Not supported
36+Supportedsince Jul 16, 2014
Current: 155Firefox Android
4–5Not supported
6+Supportedsince Aug 16, 2011
Current: 157Safari iOS
1–7Not supported
8+Supportedsince Sep 17, 2014
Current: 27How to use
This feature is Baseline widely available — use it freely, no fallback needed.
Example
Full syntax and examples are on MDN: WeakMap.
Feature detection
JS · check before using
if (typeof WeakMap !== "undefined") {
// WeakMap is available
}Sub-features
Support for each part of the feature (9). The overall table above shows when the whole feature works.
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| WeakMap | 36 | 12 | 6 | 8 | 36 | 6 | 8 |
| WeakMap.WeakMap | 36 | 12 | 6 | 8 | 36 | 6 | 8 |
| WeakMap.WeakMap.iterable_allowed | 38 | 12 | 36 | 9 | 38 | 36 | 9 |
| WeakMap.WeakMap.null_allowed | 36 | 12 | 37 | 8 | 36 | 37 | 8 |
| WeakMap.delete | 36 | 12 | 6 | 8 | 36 | 6 | 8 |
| WeakMap.get | 36 | 12 | 6 | 8 | 36 | 6 | 8 |
| WeakMap.has | 36 | 12 | 6 | 8 | 36 | 6 | 8 |
| WeakMap.set | 36 | 12 | 6 | 8 | 36 | 6 | 8 |
| WeakMap.symbol_as_keys | 109 | 109 | 146 | 16.4 | 109 | 146 | 16.4 |