NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1521 most downloaded on npm
A JavaScript parser built from the Hermes engine
Last release 2 months ago
14 Jul 2026
Release timing varies
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 57 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
6 years old
64 releases · first in 2021
One column per quarter.
Print with Prettier's built-in Flow and TypeScript plugins instead of conditionally loading prettier-plugin-hermes-parser
hermes-transformprettier-plugin-hermes-parserflow-api-translator@typescript-eslint and PrettierTSImportType.source for $Exports so Prettier's TypeScript printer can format ithermes-transformFix await not recognized inside async component bodies
hermes-parserawait not recognized inside async component bodiesAdd writeonly, in, and out to variance kind type
hermes-estreewriteonly, in, and out to variance kind typehermes-parserfor (using x of y) and for await (await using x of y) — bindings are now correctly wrapped in VariableDeclaratorwriteonly as a Flow variance modifier on object type properties, indexers, and class propertiesin T and out T as long-form Flow type-parameter variance (contravariance and covariance)readonly variance modifier before reserved-word property names (e.g. {readonly with: T})Parse readonly as a Flow variance annotation on object type properties, indexers, class properties, and tuple labeled elements
hermes-estreereadonly to variance typehermes-parserreadonly as a Flow variance annotation on object type properties, indexers, class properties, and tuple labeled elementsdecorators to ClassProperty and ClassPrivateProperty parser visitor keysflow-api-translatorreadonly variance in Flow to TypeScript translationParse import ... with instead of import ... assert
hermes-parserimport ... with instead of import ... assertasync hook and async component syntax supportflow-api-translatorFunctionDeclaration to DeclareFunction@@dispose/@@asyncDispose and fix @@iterator/@@asyncIterator in object/interface typesDo not parse record expression names starting with lowercase 'a'-'z'
hermes-parserhermes-eslintflow-api-translatornever, undefined, unknown type annotationsAlways set id in ArrowFunctionExpression to null.
hermes-parserid in ArrowFunctionExpression to null.transformOptions: {TransformEnumSyntax: {enable: true}}.Fixed parser regression of a divide after a call with a trailing comma erroneously being intrepreted as a regex literal
hermes-parserParse unknown, never, and undefined types as their own nodes (UnknownTypeAnnotation, NeverTypeAnnotation, UndefinedTypeAnnotation).
hermes-parserunknown, never, and undefined types as their own nodes (UnknownTypeAnnotation, NeverTypeAnnotation, UndefinedTypeAnnotation).TupleTypeAnnotation property from types to elementTypes - matching Flow parser.ClassDeclaration/ClassExpression property superTypeParameters to superTypeArguments.match instance patterns.### hermes-parser - Fix parsing of require calls.
hermes-parserrequire calls.Use prettier-plugin-hermes-parser to print transformed code if it's installed.
hermes-transformprettier-plugin-hermes-parser to print transformed code if it's installed.Parse declare of private class properties, e.g. class C { declare #foo }.
hermes-parserdeclare of private class properties, e.g. class C { declare #foo }.- when parsing JSX with type arguments, e.g. <A<T> foo-bar=1 />.Synced with recent Prettier main branch
hermes-transformprettier-plugin-hermes-parserParse opaque type with both lower and upper bounds with super and extends syntax
hermes-parsersuper and extends syntaxhermes-transformparse function synchronousflow-api-translatorFix issue with match transform when binding pattern has same name as argument
hermes-parsermatch transform when binding pattern has same name as argumentRename ImportExpression field attributes to options to match ESTree
hermes-parserImportExpression field attributes to options to match ESTreeif statement bodies with a block statement that is not in sourceflow-api-translatorFixed end location of arrow function body
hermes-parserTranslate to ComponentRef instead of deprecated ElementRef.
flow-api-translator$ArrayBufferView to ArrayBufferView.ComponentRef instead of deprecated ElementRef.hermes-parserhermes-estree, hermes-eslint, hermes-transform, prettier-plugin-hermes-parser).Fix bug in one-sided "this" type guard
hermes-parserflow-api-translator$ArrayLike to ArrayLikeReact.JSX namespace instead of JSXtypeof with spread operatorSupport for class static blocks.
hermes-parserawait/yield/arguments in class field inits.const type parameters in Flow (also in hermes-estree, prettier-plugin-hermes-parser).hermes-estree, hermes-eslint, hermes-transform, prettier-plugin-hermes-parser).Add parseLangTypes option to enable skipping plugin for non-Flow files
babel-plugin-syntax-hermes-parserparseLangTypes option to enable skipping plugin for non-Flow filesSupport React.RefSetter translation and remove support for incorrect React.Ref translation.
flow-api-translatorReact.RefSetter translation and remove support for incorrect React.Ref translation.Allow trailing comma after rest param in component declaration
hermes-parserFixed an issue that caused an error when trying to print a Program with an empty body array and a docblock comment.
hermes-transformProgram with an empty body array and a docblock comment.flow-api-translatoras expressions in parent classes like class A extends (Foo as Bar).Adopted one-sided type guards in predicate functions (implies x is T)
hermes-estreeimplies x is T)hermes-parserreactRuntimeTarget config option (defaulting to '18') that when set to '19' no longer adds the forwardRef wrapper as React 19 treats refs on function components as regular props.hermes-transformcontext.modifyInPlace API to modify the Program node. Previously, this relied upon context.replaceNode internally which meant modifications to the Program node itself were not possible.flow-api-translatorclass A extends Foo.Bar and type casts such as class A extends (Foo: Bar).StringPrefix and StringSuffix Flow types, turning them into a TS string literal type. For example, StringPrefix<foo> is turned into foo${string} and StringPrefix<foo, T> is turned into foo${T}.Fixed analysis of mapped types' scopes
hermes-eslintprettier-plugin-hermes-parser[...]implies x is TAdded support for translating React.AbstractComponent with 3 type arguments into TS. The third type argument containing render type information will b
flow-api-translatorReact.AbstractComponent with 3 type arguments into TS. The third type argument containing render type information will be ignored.Added support for as const expressions
hermes-parseras const expressions[...]implies x is TScope analysis support for typeof nodes with type arguments
hermes-eslintbabel-plugin-syntax-hermes-parserAdded support for newer unreleased Flow syntax
prettier-plugin-hermes-parserBug fixes in preparation of new feature rollout
hermes-parserScope analysis support for DeclareNamespace nodes
hermes-eslintDeclareNamespace nodes$ReadOnlyMap and $ReadOnlySet have been updated to expect two type arguments instead of one, aligning with the flow API.
flow-api-translator$ReadOnlyMap and $ReadOnlySet have been updated to expect two type arguments instead of one, aligning with the flow API.Retain more type annotations when lowering to babel AST.
hermes-parserUpdate codegen to output type guards instead of %checks
flow-api-translator%checksbabel-plugin-syntax-hermes-parserInclude JSX closing elements in scope/bindings references
hermes-eslintFix type of typeAnnotation property of AsExpression
hermes-estreetypeAnnotation property of AsExpressionhermes-parserhermes-eslintAsExpressions are considered as referencedhermes-transformflow-api-translatorAsExpressions in Flow to Flow defprettier-plugin-hermes-parserAsExpression printingbabel-plugin-syntax-hermes-parserFix ObjectTypeMappedTypeProperty babel lowering to output valid code.
hermes-estreehermes-parserAsExpressions in Flow.ObjectTypeMappedTypeProperty babel lowering to output valid code.hermes-eslinthermes-transformflow-api-translatorprettier-plugin-hermes-parser3.0.3.babel-plugin-syntax-hermes-parserImprove types of DestructuringObjectPropertyWithShorthandStaticName, ExportNamedDeclarationWithSpecifiers, ObjectTypeAnnotation and BigIntLiteral.
hermes-estreeDestructuringObjectPropertyWithShorthandStaticName, ExportNamedDeclarationWithSpecifiers, ObjectTypeAnnotation and BigIntLiteral.hermes-parserFunctionExpression property range.DeclareEnum babel output to correctly wrap the TypeAnnotationType in a TypeAnnotation.emscripten (3.1.44 from 3.1.3).hermes-eslinthermes-transformflow-api-translatortypeof identifier.infer, mapped object types, $ReadOnlyMap and $ReadOnlySet.prettier-plugin-hermes-parser3.0.2.babel-plugin-syntax-hermes-parserEnsure ExportNamespaceSpecifier has location information.
hermes-estreehermes-parserExportNamespaceSpecifier has location information.hermes-eslinthermes-transformprettier-plugin-hermes-parser peer dependency version.flow-api-translatorprettier-plugin-hermes-parserbabel-plugin-syntax-hermes-parserCorrectly convert MethodDefinition to ClassPrivateMethod when babel: true is set and the key is PrivateName.
hermes-estreehermes-parserMethodDefinition to ClassPrivateMethod when babel: true is set and the key is PrivateName.hermes-eslinthermes-transformprint cache key is unique even if there is more than one instance of hermes-transform.prettier-plugin-hermes-parser.flow-api-translator$Shape and $Partial Flow utilities.React.ElementProps from Flow to TS.ExportAllDeclaration in TS translation.prettier-plugin-hermes-parserbabel-plugin-syntax-hermes-parserAdded support for Flow's new type guards
hermes-estreehermes-parserhermes-eslinthermes-transformflow-api-translatorprettier-plugin-hermes-parserbabel-plugin-syntax-hermes-parserThe previous release did not build properly for release. This release fixes the issue.
hermes-estreehermes-parserhermes-eslinthermes-transformflow-api-translatorprettier-plugin-hermes-parserbabel-plugin-syntax-hermes-parserThis release corresponds to RN 0.75.
This release corresponds to RN 0.75.
hermes-estreehermes-parsertsModifiers property from PropertyDefinition nodesConditionalTypeAnnotation not being correctly stripped with babel: true mode.hermes-eslinthermes-transformprettier-plugin-hermes-parser to ensure it can support the latest Flow syntax.flow-api-translatorprettier-plugin-hermes-parser to ensure it can support the latest Flow syntax.prettier-plugin-hermes-parserhermes-transform.
babel-plugin-syntax-hermes-parserhermes-parser instead of the @babel/parser. Since Hermes parser uses C++ compiled to WASM it is significantly faster and provides full syntax support for Flow.Lazy load the plugin so it does not effect performance if its included but not used.
prettier-plugin-hermes-parserThis release comes with many bug fixes, language features (WeakRef & BigInt), and also the removal of the debugger on the command line tools. This mea
This release comes with many bug fixes, language features (WeakRef & BigInt), and also the removal of the debugger on the command line tools. This means much better performance when using Hermes from the CLI. In addition, RN now builds Hermes from source, so we no longer need to publish specific versions of Hermes to target a specific version of RN.
hermes-parserprocess.exitCode being overridden when initializing WASM.extends keyword in Flow.hermes-transformhermes-eslinthermes-parser@0.12.0.hermes-estreehermes-parser@0.12.0.flow-api-translatorhermes-parser@0.12.0.prettier-plugin-hermes-parserprettier-plugin-hermes-parser package. This is a plugin for Prettier to enable the use of Hermes parser. It supports Prettier v3 and v2 but always prints via the latest prettier v3 printing logic, to enable full support for all Hermes parser features.### flow-api-translator - Fix dependency versions.
flow-api-translatorIn preparation for the 0.68.x, this release brings numerous bug fixes and performance improvements to Hermes.
In preparation for the 0.68.x, this release brings numerous bug fixes and performance improvements to Hermes.
hermes-parsertypeof types. TypeofTypeAnnotation now can have QualifiedTypeofIdentifier and Identifiers as arguments directly.TupleTypeSpreadElement and TupleTypeLabeledElement in Flow.DeclareVariable in Flow now has a kind property, which can be var, let, or const.DeclareEnum in Flow.JSXElement in Flow.TSConditionalType nodes. The falseTYpe property has been renamed to falseType.keyof types in Flow.ConditionalTypeAnnotation in Flow.InferTypeAnnotation in Flow.ObjectTypeMappedTypeProperty in Flow.TypePredicate in Flow.hermes-transformhermes-parser@0.11.0.makeCommentOwnLine function which makes added comments print on their own line.MemberExpression representation with optional property from hermes-estree@0.11.0.hermes-eslinthermes-parser@0.11.0.hermes-estreehermes-parser@0.11.0.MemberExpression to properly expose optional property in Flow.flow-api-translatortypeof type representation.DeclareVariable with kind property.DeclareEnum.typeof imports.React imports.React.ElementConfig handling.React.Key handling.React.Ref handling.React.Component handling.React.ElementType handling.React.ChildrenArray handling.React.ComponentType handling.React.AbstractComponent handling.Remove unlisted dependency on the hermes-eslint package as this caused module not found errors if you only installed the hermes-parser package.
hermes-parserhermes-eslint package as this caused module not found errors if you only installed the hermes-parser package.flow-api-translatorReact$Node.export default of global type annotations.hermes-eslint as explict dependency.In preparation for the release of RN0.67, this release brings numerous bug fixes and performance improvements to Hermes.
In preparation for the release of RN0.67, this release brings numerous bug fixes and performance improvements to Hermes.
hermes-parserSimpleTransform API. This API is designed similar to the SimpleTraversal API but allows mutating the AST while traversing enabling the use of recursive transforms. The hermes-transform package by contrast only allows mutations at the end which is much easier to reason about but limits what can be achieved.BigIntTypeAnnotation parsing, e.g. type T = bigint;.hermes-transformstopTraversal and skipTraversal API's. stopTraversal will abort the traversal all together where as skipTraversal will continue traversal but not traverse into the current node's child nodes.MaybeDetachedNode type and asDetachedNode function.ChainExpression and ObjectTypeProperty node printing.parse, print API's in addition to the transform API. The parse API will call the hermes-parser as well as prepare the AST for transform, by running comment attachment and setting docblock properties. The print API creates source text from the AST via prettier, it also does all work necessary to prepare the AST for prettier, for example reattaching the docblock as a simple comment.docblock property on Program. This ensures the docblock comment is not duplicated if the first statement is moved.Program node generator, e.g. t.Program({...}). This allows full AST's to be created.hermes-eslinthermes-estreeisExpression and isStatement predicate functions.flow-api-translatorflow-api-translator package. This allows translating Flow code into either Flow definitions or TS definitions along with generating the non typed runtime code. This is designed to help library authors using Flow to more easily support the use of their code in TS or Flow codebases.This release is primarily made to close the gap between the Hermes cut and the (upcoming) React Native 0.66 cut. Among the ~400 commits, we kept deliv
This release is primarily made to close the gap between the Hermes cut and the (upcoming) React Native 0.66 cut. Among the ~400 commits, we kept delivering memory and size wins, bugfixes, and made other progress behind the scene.
hermes-transformshallowCloneArray (like an array's .elements property).modifyNodeInPlace API for directly modifying a node with an implicit clone.hermes-eslintfbs tags in scope analysis.this param in scope analysis.hermes-estree#priv in this)parent for nodes with small sets of known parent typesThis is a release candidate targeting the upcoming RN 0.65 release.
This is a release candidate targeting the upcoming RN 0.65 release.
Intl) was a long asking features https://github.com/facebook/hermes/issues/23#issuecomment-816126715. It is now built into Hermes on Android and enabled by default, with only 57-62K per API size overhead (compared to JSC's 6MiB). With this change, Hermes users no longer require locale polyfills. A big thank you to @mganandraj and other partners at Microsoft for driving the implementation to make this happen!Function.prototype.toString that fixed performance drop due to improper feature detection: https://github.com/facebook/hermes/issues/471#issuecomment-820123463This is a pre-release targeting the upcoming RN 0.64 branch out. It bring ~150 commits of improvements, security and bug fixes, and supports for other
This is a pre-release targeting the upcoming RN 0.64 branch out. It bring ~150 commits of improvements, security and bug fixes, and supports for other mobile platforms and ARM64 thanks to the community.
From this version, Proxy and Reflect will be enabled by default 🎉 , after being an optional feature in two releases.
This release brings ~350 commits worth of bugfixes and improvements, and is aimed at the upcoming 0.64 branch of React Native.
This release brings ~350 commits worth of bugfixes and improvements, and is aimed at the upcoming 0.64 branch of React Native.
Among them are correctness and performance fixes in regex, parsing improvements and native support for more JS features, a JS memory leak fix, and a new NPM that aims to help build React Native apps that target macOS instead of mobile. It also includes everything from patch release v0.5.1, notably, the unstripped Android libraries to help with native debugging and symbolication.
Among the 200+ commits in this release, the most user visible change is the NPM size reduction from 140MB to 18MB unpacked. This will lead to snappier
Among the 200+ commits in this release, the most user visible change is the NPM size reduction from 140MB to 18MB unpacked. This will lead to snappier npm installs and project creation.
We're also publishing the new NPM hermes-engine-cli containing several host platform CLI tools for testing and development purposes, including a debugger and bytecode disassembler.
Nothing published for this version
Nothing published for this version
Nothing published for this version
This release is to add the latest macOS ARM64 support to 0.4.x branch for RN macOS v0.62.x (@alloy in https://github.com/facebook/hermes/pull/351).
This release is to add the latest macOS ARM64 support to 0.4.x branch for RN macOS v0.62.x (@alloy in https://github.com/facebook/hermes/pull/351).
This release is primarily for building artifacts for React Native for macOS (@alloy in #299). It also Includes the missing vcruntime140_1.dll on Windo
This release is primarily for building artifacts for React Native for macOS (@alloy in #299). It also Includes the missing vcruntime140_1.dll on Windows, negating the need to install VC++ redistributables separately (@willholen in #310).
Two more artifacts, namely hermes-runtime-darwin and hermes-engine-darwin (a wrapper of the former meant to be consumed by npm), will be included in the release assets from now on.
Your coding agent can read these notes before it upgrades. Set up the MCP server →