Hermes Compat Table

Spec
0.72
legacy
hermes-2024-04-29
58.5%
0.83
v1
v250829098.0.4
69.9%
0.87
v1
v250829098.0.13
69.9%
static
hermes-8a30722a
73.6%
es2016plus48.0%63.3%63.3%76.2%
2016 features
▸Array.prototype.includes4/44/44/44/4
▸exponentiation (**) operator3/33/33/33/3
2016 misc
generator functions can't be used with "new"yesyesyesyes
generator throw() caught by inner generatoryesyesyesyes
nested rest destructuring, declarationsyesyesyesyes
nested rest destructuring, parametersyesyesyesyes
Proxy internal calls, Array.prototype.includesyesyesyesyes
Proxy, "enumerate" handler removedyesyesyesyes
strict fn w/ non-strict non-simple params is erroryesyesyesyes
2017 annex b
assignments allowed in for-in head in non-strict modeyesyesyesyes
▸Object.prototype getter/setter methods16/1616/1616/1616/16
▸Proxy internal calls, getter/setter methods4/44/44/44/4
2017 features
▸async functions5/166/166/166/16
▸Object static methods4/44/44/44/4
▸shared memory and atomics0/170/170/170/17
▸String padding2/22/22/22/2
▸trailing commas in function syntax2/22/22/22/2
2017 misc
arguments.caller removednononono
RegExp "u" flag, case foldingnononoyes
2018 features
▸Asynchronous Iterators0/20/20/20/2
▸object rest/spread properties2/22/22/22/2
▸Promise.prototype.finally0/30/30/30/3
RegExp Lookbehind Assertionsyesyesyesyes
RegExp named capture groupsyesyesyesyes
▸RegExp Unicode Property Escapes0/108/108/1010/10
s (dotAll) flag for regular expressionsyesyesyesyes
2018 misc
Proxy "ownKeys" handler, duplicate keys for non-extensible targetsyesyesyesyes
template literal revisionyesyesyesyes
2019 features
▸Array.prototype.{flat, flatMap}2/32/32/32/3
Object.fromEntriesyesyesyesyes
▸string trimming4/44/44/44/4
▸Symbol.prototype.description2/32/32/33/3
2019 misc
▸Function.prototype.toString revision1/71/71/71/7
▸JSON superset2/22/22/22/2
▸optional catch binding2/32/32/32/3
Well-formed JSON.stringifyyesyesyesyes
2020 features
▸BigInt8/88/88/88/8
▸globalThis2/22/22/22/2
nullish coalescing operator (??)yesyesyesyes
▸optional chaining operator (?.)5/55/55/55/5
Promise.allSettlednononono
▸String.prototype.matchAll2/22/22/22/2
2021 features
▸Logical Assignment9/99/99/99/9
numeric separatorsyesyesyesyes
▸Promise.any0/20/20/20/2
String.prototype.replaceAllyesyesyesyes
▸WeakReferences0/21/21/22/2
2022 features
▸.at() method on the built-in indexables3/33/33/33/3
Class static initialization blocksnoyesyesyes
Ergonomic brand checks for private fieldsnoyesyesyes
▸Error.cause property16/1616/1616/1616/16
▸instance class fields0/77/77/77/7
▸Object.hasOwn2/22/22/22/2
▸private class methods0/44/44/44/4
▸RegExp Match Indices (`hasIndices` / `d` flag)0/22/22/22/2
▸static class fields0/44/44/44/4
2023 features
▸Array find from last2/22/22/22/2
▸Change Array by copy0/73/73/73/7
Hashbang Grammaryesyesyesyes
2024 features
▸Array Grouping0/20/20/22/2
▸ArrayBuffer.prototype.transfer0/30/30/30/3
Promise.withResolversnononoyes
▸RegExp `v` flag0/70/70/70/7
2025 features
Duplicate named capturing groupsnononono
▸Iterator Helpers0/160/160/1616/16
Promise.trynononono
RegExp Escapingnononono
▸RegExp Pattern Modifiers0/30/30/33/3
▸Set methods0/77/77/77/7
▸Uint8Array to/from base64 and hex0/60/60/66/6
es587.7%95.9%95.9%95.9%
▸Array methods13/1313/1313/1313/13
▸Date methods3/33/33/33/3
Function.prototype.bindyesyesyesyes
▸Immutable globals3/33/33/33/3
JSONyesyesyesyes
▸Miscellaneous7/87/87/87/8
▸Number methods3/33/33/33/3
▸Object static methods13/1313/1313/1313/13
▸Object/array literal extensions5/55/55/55/5
▸Strict mode11/1917/1917/1917/19
▸String properties and methods4/44/44/44/4
es672.6%85.7%85.7%86.1%
annex b
▸__proto__ in object literals5/55/55/55/5
HTML-style commentsnononono
▸non-strict function semantics0/32/32/32/3
▸Object.prototype.__proto__6/66/66/66/6
▸RegExp syntax extensions7/87/87/87/8
▸RegExp.prototype.compile0/20/20/20/2
▸String.prototype HTML methods0/30/30/30/3
bindings
block-level function declarationnoyesyesyes
▸const6/1812/1812/1812/18
▸let8/1612/1612/1612/16
built-in extensions
▸Array static methods5/115/115/115/11
▸Array.prototype methods10/1110/1110/1110/11
Date.prototype[Symbol.toPrimitive]yesyesyesyes
▸function "name" property10/1716/1716/1717/17
▸Math methods17/1717/1717/1717/17
▸Number properties9/99/99/99/9
▸Object static methods4/44/44/44/4
▸RegExp.prototype properties5/65/65/65/6
▸String static methods2/22/22/22/2
▸String.prototype methods10/1010/1010/1010/10
built-ins
▸Map17/1917/1917/1917/19
▸Promise1/81/81/82/8
▸Proxy34/3434/3434/3434/34
▸Reflect18/2019/2019/2019/20
▸Set17/1917/1917/1917/19
▸Symbol12/1212/1212/1212/12
▸typed arrays43/4643/4643/4643/46
▸WeakMap11/1211/1211/1211/12
▸WeakSet10/1110/1110/1110/11
▸well-known symbols16/2717/2717/2718/27
functions
▸arrow functions11/1313/1313/1313/13
▸class0/2423/2423/2423/24
▸generators20/2723/2723/2723/27
▸super0/88/88/88/8
misc
▸miscellaneous7/98/98/98/9
▸Object static methods accept primitives10/1010/1010/1010/10
▸own property order7/77/77/77/7
▸prototype of bound functions0/55/55/55/5
▸Proxy, internal 'defineProperty' calls0/21/21/21/2
▸Proxy, internal 'deleteProperty' calls6/66/66/66/6
▸Proxy, internal 'get' calls29/3629/3629/3629/36
▸Proxy, internal 'getOwnPropertyDescriptor' calls3/44/44/44/4
▸Proxy, internal 'ownKeys' calls1/31/31/31/3
▸Proxy, internal 'set' calls11/1111/1111/1111/11
▸Updated identifier syntax1/33/33/33/3
optimisation
▸proper tail calls (tail call optimisation)0/20/20/20/2
subclassing
▸Array is subclassable0/116/116/116/11
▸Function is subclassable0/66/66/66/6
▸miscellaneous subclassables0/66/66/66/6
▸Promise is subclassable0/41/41/41/4
▸RegExp is subclassable0/44/44/44/4
syntax
▸default function parameters6/76/76/76/7
▸destructuring, assignment22/2522/2522/2522/25
▸destructuring, declarations18/2319/2319/2319/23
▸destructuring, parameters23/2623/2623/2623/26
▸for..of loops5/95/95/95/9
▸new.target2/22/22/22/2
▸object literal extensions6/66/66/66/6
▸octal and binary literals4/44/44/44/4
▸RegExp "y" and "u" flags6/66/66/66/6
▸rest parameters4/55/55/55/5
▸spread syntax for iterable objects11/1511/1511/1511/15
▸template literals7/87/87/87/8
▸Unicode code point escapes4/44/44/44/4
esintl24.1%24.1%24.1%24.1%
▸Array.prototype.toLocaleString1/11/11/11/1
▸Date.prototype.toLocaleDateString1/11/11/11/1
▸Date.prototype.toLocaleString1/11/11/11/1
▸Date.prototype.toLocaleTimeString1/11/11/11/1
▸DateTimeFormat0/70/70/70/7
▸Intl object0/20/20/20/2
▸Intl.Collator0/50/50/50/5
▸Intl.Collator.prototype.compare0/10/10/10/1
▸Intl.Collator.prototype.resolvedOptions0/10/10/10/1
▸Number.prototype.toLocaleString1/11/11/11/1
▸NumberFormat0/50/50/50/5
▸Object.prototype.toLocaleString1/11/11/11/1
▸String.prototype.localeCompare1/11/11/11/1
esnext5.1%5.1%5.1%5.1%
Stage 2
Array.isTemplateObjectnononono
▸Async Iterator Helpers0/170/170/170/17
Generator function.sent Meta Propertynononono
▸throw expressions0/40/40/40/4
Stage 2.7
ShadowRealmnononono
Stage 3
▸Class and Property Decorators0/10/10/10/1
▸Explicit Resource Management0/80/80/80/8
▸Legacy RegExp features in JavaScript2/22/22/22/2
▸Map.prototype.upsert0/40/40/40/4
non-standard2.0%2.9%2.9%2.9%
__count__nononono
__iterator__nononono
__noSuchMethod__nononono
__parent__nononono
"for each..in" loopsnononono
Array comprehensions (ES draft style)nononono
Array comprehensions (JS 1.8 style)nononono
Array genericsnononono
Callable RegExpnononono
class extends nullnononono
Date.parse produces NaN for invalid datesnononono
Date.prototype.toLocaleFormatnononono
▸decompilation0/40/40/40/4
ECMAScript for XML (E4X)nononono
error "columnNumber"nononono
error "description"nononono
error "fileName"nononono
error "lineNumber"nononono
error "stack"yesyesyesyes
Expression closuresnononono
function "arguments" propertynononono
function "arity" propertynononono
function "caller" propertynoyesyesyes
Function.prototype.isGeneratornononono
Generator comprehensions (ES draft style)nononono
Generator comprehensions (JS 1.8 style)nononono
Generators (JS 1.8)nononono
▸global1/21/21/21/2
Iteratornononono
Object.observenononono
Object.prototype.evalnononono
Object.prototype.unwatchnononono
Object.prototype.watchnononono
optional "scope" argument of "eval"nononono
Proxy "ownKeys" handler, duplicate keys for non-extensible targets (ES 2017 semantics)nononono
RegExp "x" flagnononono
RegExp named groupsnononono
Sharp variablesnononono
▸SIMD (Single Instruction, Multiple Data)0/570/570/570/57
String genericsnononono
String.prototype.quotenononono
String.prototype.replace flagsnononono
reactnative0.0%0.0%0.0%100.0%
syntax
▸async arrow with non-simple parameters0/30/30/33/3
▸class declaration in finally block0/30/30/33/3
▸super in object literal accessor0/20/20/22/2