Facebook Introduces Rome Experimental JavaScript Toolchain

Rome is an experimental JavaScript toolchain created by Babel and yarn creator Sebastian McKenzie and the React Native team at Facebook. Rome includes a compiler, linter, formatter, bundler, and testing framework, aiming to be "a comprehensive tool for anything related to the processing of JavaScript source code."

Unlike similar projects which combine various tools into a workflow, Rome is a rethink of the JavaScript ecosystem with a bold approach to the entire toolchain with no pre-existing third-party dependencies.

Rome is authored in TypeScript and is a monorepo with internal packages to delineate code boundaries. Rome is self-hosted and compiles itself with an old version of Rome. Rome provides support for processing JSX, Flow, and TypeScript code.

The Rome Getting Started documentation is currently intentionally very sparse, with information about initializing Rome, defining settings in a JSON file, and actions including running, linting, compiling and parsing source code.

Preact and Jason Miller created an overview of Rome and detail usage of the available CLI commands, compare its bundling output to Rollup, provide a few examples, and other early insights.

The Rome project has a clear set of development guidelines, from clear and easy to understand error messages, as small of an API footprint as possible, and strongly typed code. The Rome Team is currently focused on linting and maintain a list of actively considered issues. As explained by McKenzie:

The current area of focus for Rome is linting. This is the path of least resistance for finishing a part of Rome that can be used most easily.

Rome offers a promising rethink to perhaps remove cruft from the current state of JavaScript development and tooling, though it is far too early to determine if this approach will change the status quo or simply lead to another option for the JavaScript toolchain. Community interest is strong and includes discussion on whether Rome might include future support for WebAssembly.

Rome is available under the MIT license though it is not ready for production use and currently can only get used by building from source. Rome is open for contributors interested in experimental tools following the contribution guidelines and code of conduct.