Monday, April 13, 2026

ICU4X 2.2 released!

 The ICU4X Technical Committee is happy to announce ICU4X 2.2, an update to our modular, portable, and secure i18n library.

ICU4X is Unicode's modern, lightweight, portable, and secure i18n library. Built from the ground up, its binary size and memory usage footprint is 50-90% smaller than ICU4C. It is memory-safe, written in Rust with interfaces into C++, JavaScript, Dart, TypeScript, Kotlin — with other languages in the timeline. Mozilla Firefox, Google Chrome, Google Pixel Watch, core Android, numerous Flutter apps, and more clients are already using ICU4X.

Important changes in ICU4X 2.2 include:

1. Latest i18n data: This release includes an update to CLDR 48.2 and support for TZDB 2026a.
2. New and improved icu_calendar: This release contains new APIs in icu_calendar, as well as some behavior changes in icu_calendar; see the migration notes on GitHub.
a. Datetime arithmetic: It is now possible to add and subtract dates. 
b. More flexible date construction: Build dates from all kinds of constituent data: extended years, era years, ordinal months, month codes, etc., with support for different kinds of overflow handling.
c. Typed months: The new Month type replaces month codes in a type safe way.
d. Experimental third-party crate integration: We now support converting and formatting types from the jiff, chrono, and time crates. See icu_datetime::input::third_party. We’re not yet sure if these integrations should live in ICU4X, in the third party crates, or some adapter crate. We welcome your feedback!
e. Changes to Japanese and Hijri calendars: We no longer support pre-Meiji eras because CLDR removed them, and we now always use Umm al-Qura data for simulated Hijri. See the migration notes on GitHub for more details.
3. Experimental Kotlin Bindings: We now have Kotlin bindings for ICU4X (found under ffi/mvn), with the same set of supported APIs as our other cross-language bindings.
4. Experimental features:
a. Display names: Adds new internal data layout exposed via RegionDisplayName and ScriptDisplayName APIs. The old data layout, optimized for loading multiple names at once, is moved into the multi module. Please share feedback on our tracking issue.
b. Compact decimal formatter: Please share feedback in preparation for stabilization in a future release.
c. ML segmentation: Initial code for RAdaBoost word segmenter for Chinese and CNN word segmenter for Thai.
5. Better hour cycles: Adds support for Clock12 and Clock24 in datetime formatting.


Check out our quickstart tutorial, interactive demo, or C++, TypeScript, and Dart documentation.

As before, the Rust crate is available at crates.io, with documentation at docs.rs

Please post any questions via GitHub Discussions.

----------------------------------------------

Adopt a Character and Support Unicode’s Mission

Looking to give that special someone a special something?
Or maybe something to treat yourself?
🕉️💗🏎️🐨🔥🚀爱₿♜🍀

Adopt a character or emoji to give it the attention it deserves, while also supporting Unicode’s mission to ensure everyone can communicate in their own languages across all devices.

Each adoption includes a digital badge and certificate that you can proudly display!

Have fun and support a good cause

You can also donate funds or gift stock