Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time

About Build Status GNU ELPA MELPA

Improved JavaScript editing mode for GNU Emacs (description here).

For some of the latest changes, see latest user-visible changes.


The stable versions are hosted at GNU ELPA (M-x list-packages).

You can also install the latest development version from MELPA.


Emacs 24.1+ and cl-lib (either built-in or installed from GNU ELPA).

React and JSX

The currently recommended solution is to install Emacs 27 (you can build from source or e.g. install a snapshot from a PPA) and use js-mode as the major mode. To make use of the JS2 AST and the packages that integrate with it, we recommend js2-minor-mode. See the corresponding instructions in the Commentary.

js-mode in Emacs 27 includes full support for syntax highlighting and indenting of JSX syntax.

rjsx-mode is an alternative option which comes with certain tradeoffs.


  • See broken syntax highlighting and timer errors? Recently upgraded Emacs from version 24.2 or earlier? Try reinstalling or byte-recompiling the package.

  • Any indentation problems should be reported with M-x report-emacs-bug (please try reproducing them with js-mode first, for clarity). Starting with Emacs 25, js2-mode delegates indentation to the indentation engine of js-mode.

Please report other problems at


js2-mode is subject to the same copyright assignment policy as Emacs itself, org-mode, CEDET and other packages in GNU ELPA.

Any legally significant contributions can only be accepted after the author has completed their paperwork. Please ask for the request form, and we'll send it to you.

See Also

Some third-party modes that use the generated syntax tree: