# messageformat/messageformat

ICU MessageFormat and Unicode Messageformat for Javascript

Repository: https://github.com/messageformat/messageformat
Canonical: https://ross.abutalabs.com/products/messageformat
Homepage: https://messageformat.github.io
Language: TypeScript
License: MIT
License Family: permissive
Topics: messageformat, language
Last push: 2026-06-29T16:29:33+00:00

## Health v2 (maintenance only)
Score: 77/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 90, release rhythm 46, longevity 100
- inputs: {"age_days": 5334, "days_push": 65, "days_rel": 281, "gap_med": 49, "n_releases_24m": 8}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1767, forks 160 (observed 2026-08-28T04:05:33.632709+00:00)

## What it is
A JavaScript monorepo implementing both Unicode MessageFormat 2 and ICU MessageFormat 1, including parsers, runtimes, compilers, and an Intl.MessageFormat polyfill. It supports pluralization, gender, and other locale-aware message formatting across all CLDR languages, with tooling for CLI, Webpack, Rollup, React, and format conversion (Fluent, XLIFF, MF1).

## Use cases
- format localized messages with pluralization and gender rules in javascript
- polyfill intl.messageformat in browsers
- parse and format unicode messageformat 2 strings
- compile icu messageformat strings into javascript functions
- convert fluent or xliff files to messageformat
- load message translations from json yaml or properties files in webpack
- use localized messages in react components

## When to choose
- you need standards-compliant ICU or Unicode MessageFormat handling in JS/TS
- you need pluralization and gender-aware message formatting across many languages
- you want build-time compilation of message files via webpack or rollup
- you need an Intl.MessageFormat polyfill or MF2 tooling like parsers and validators

## When to avoid
- you need full application i18n frameworks with routing, extraction, and translation management
- your project is not JavaScript/TypeScript based
- you only need simple key-value string lookups without plural/gender logic

## Facets
- artifact type: library
- maturity: active
- function: internationalization, parser, templating, sdk
- domain: web-development, frontend
- platform: browser, cli
- tags: icu-messageformat, unicode-messageformat-2, i18n, l10n, pluralization, intl-messageformat, monorepo, react-bindings, webpack-loader, rollup-plugin, internationalization, localization, nodejs, javascript, typescript

## Member repositories
- messageformat/messageformat (main) score 77

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:33.632709+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:26:24.937587+00:00, confidence not recorded.
  - readme: https://github.com/messageformat/messageformat (fetched 2026-08-28T04:05:33.632709+00:00, sha 9b1cbeba0c64)
  - homepage: https://messageformat.github.io (fetched 2026-08-29T11:05:09.020571+00:00, sha 32c5c60ec4f8)
  - registry_npm: https://registry.npmjs.org/messageformat (fetched 2026-08-29T11:05:09.029745+00:00, sha 4fcefdd15c13)
- Data as of 2026-08-30T08:39:29.467469+00:00.
