Everything is on GitHub

All of the packages that make up FormatJS are open-source and available on GitHub. Instead of having one large repository, there are several smaller repositories; one per package.

Integration Libraries

These are the main packages that web apps will depend on since they contain all of the Core Libraries plus an integration layer with a template or component system.

React Intl

ReactJS mixin for internationalization.

Ember Intl

Ember toolbox for internationalization.

Handlebars Intl

Handlebars helpers for internationalization.

Dust Intl

Dust helpers for internationalization.

Polymer Intl

Polymer helpers for internationalization.

Core Libraries

This set of libraries makes up the core of the FormatJS system. These packages provide features beyond what's built into the modern JavaScript runtimes. While the features these packages provide aren't specified in ECMA-402, they were developed on top of ECMAScript, ICU, and CLDR standards in a future-focused way.

Intl MessageFormat

Format a string with placeholders, including plural and select support to create localized messages.

Intl MessageFormat Parser

Parses ICU message strings to an AST that can be used to format the messages for a person's locale.

Intl RelativeFormat

Formats JavaScript dates to relative time strings.

Intl Format Cache

Produces instances of JavaScript Intl formats, and caches them for reuse.


These libraries provide polyfills to "patch" the runtime in older JavaScript environments which don't have implementations of the latest ECMAScript standards.


Compatibility implementation of the ECMAScript Internationalization API (ECMA-402) for JavaScript. Developed by Andy Earnshaw

Intl Locales Supported

Utility to help you polyfill the Node.js runtime when the Intl APIs are missing, or if the built-in Intl is missing locale data that you need.


This website itself is open source and uses all parts of the FormatJS system that it documents! We are always looking for help in making the documentation better, adding new examples, and translating examples.


Documentation for client/server internationalization in JavaScript.

Filing Issues

If you wish to file an issue, you can do so on the specific package's GitHub repository. Try to be descriptive when filing issues, as it makes it easier for us to debug.

Submitting Pull Requests

Pull requests are very welcome, but should be within the scope of the project, and follow the repository's code conventions. Before submitting a pull request, it's always good to file an issue, so we can discuss the details of the PR.

The Yahoo CLA

At Yahoo, we have a single Yahoo Open Source Contributor License Agreement that we ask contributors to electronically sign before merging in their Pull Requests. Here's the CLA's human-readable summary:

You are saying that you have the right to give us this code, which is either your own code, or code that your company allows you to publish. You want to give us this code. We may decide to use this code. You are not going to sue people who use this code, because, after all, you are giving it to an open source project! And if you include code that you didn't write, you'll tell us about it by including the open source license to such code in your contribution so we'll know about it. You are not promising that this code works well, or that you will support it, and we're OK with that.