Jan
banner
amann.work
Jan
@amann.work
Maintainer of 🌐 https://next-intl.dev · Guest lecturer for React Web Applications at FHV · Partner for User Interface Engineering

@jamannnnnn on X
🌐 next-intl 4.5: useExtracted

→ For humans & AI
→ Next.js-first by design
→ Full Turbopack support
→ SWC-based parsing
November 7, 2025 at 3:25 PM
While everyone is arguing about directives, I’ve just used “using” for the first time, and now I feel like a TypeScript god
November 4, 2025 at 12:35 PM
I didn't exactly have "build rust tooling" on my bingo card for next-intl in 2025, but here we are
September 30, 2025 at 2:07 PM
Such an incredibly helpful setting, makes me wonder if this should be the default …

nextjs.org/docs/app/api...
September 26, 2025 at 10:16 AM
🌐 learn.next-intl.dev is officially live!

Learn how to build delightful, multilingual apps with Next.js—from the basics to advanced patterns, all through a real-world project.

🎥 10 chapters · 42 lessons · 5+ hours of 4K video
💻 All code, recaps & resources included
August 12, 2025 at 8:30 AM
A sneak peek at what to expect from 🌐 learn.next-intl.dev:

→ No oversimplified examples
→ Built around a real-world project
→ Holistically transitioned to fully internationalized

Full course reveal coming next week!
August 8, 2025 at 2:32 PM
I thought this course would take 2-3 months.
It took eight.

But now, learn.next-intl.dev is almost ready: Learn how to build delightful, multilingual apps with Next.js — launching next week! 🚀
August 6, 2025 at 3:35 PM
TIL about i18n-check!

This CLI helps you validate against:

1. Missing translations in target locales
2. Inconsistent usage of ICU arguments
3. Unused translations with next-intl (exp.)

Learn more → next-intl.dev/docs/workflo...
April 23, 2025 at 8:14 AM
In case you want to set up a translation program as well, the Ethereum team shares their playbook on how to create one.

ethereum.org/en/contribut...
April 8, 2025 at 1:23 PM
They've also set up a translation program to help the community contribute translations with Crowdin. So far, 6,900+ translators have joined the effort! 🤝

ethereum.org/en/contribut...
April 8, 2025 at 1:23 PM
TIL that the Ethereum website uses next-intl to localize its content to 69 languages—how cool is that! 🤯

ethereum.org
April 8, 2025 at 1:23 PM
☃️
January 11, 2025 at 10:33 AM
React Context as a provider in React 19 is 🔥!
January 10, 2025 at 11:36 AM
Me the other day: "I'd wish `beforeEach` in @vitest.dev worked like `useEffect`, where I can return a cleanup function along with my setup code."

Turns out it actually supports this pattern, how cool is that!

https://vitest.dev/api/#beforeeach
December 2, 2024 at 1:44 PM
Another fun one: select!

Practically, this means you get autocomplete for known values, but arbitrary strings that will match "other" are also supported.
November 21, 2024 at 11:31 AM
The updated docs will have a detailed section on this topic.

You can also check out the linked document for all details: https://ec.europa.eu/justice/article-29/documentation/opinion-recommendation/files/2012/wp194_en.pdf
November 20, 2024 at 5:08 PM
🌐 next-intl@4.0 preview: GDPR compliance

To comply with current regulations, these changes will be made:
1. Decrease locale cookie expiration to 5 hours
2. The locale cookie will now only be set when a user switches to a locale that doesn’t match the accept-language header
November 20, 2024 at 5:08 PM
The best part of the implementation is that the type of the argument is inferred based on how the argument is used in a message.

E.g. a plain param doesn't accept a number, but requires that the `number` formatter is used 😌
November 20, 2024 at 7:58 AM
Similar to other improvements in the area of type augmentation, this feature is optional.

But if you consider yourself a TypeScript nerd, I think you'll like this quite a lot! 😊
November 19, 2024 at 4:09 PM
I've encountered one hurdle though: TypeScript currently has a limitation where it infers values of imported JSON files as loose strings. To bridge this gap for the time being, next-intl can optionally create an accompanying declaration file for your messages during `next dev` and `next build`.
November 19, 2024 at 4:09 PM
Yes, this uses a full-blown ICU parser—written entirely in types.

After Cursor and me fumbled around for a bit, I discovered that https://github.com/schummar had already done this … in a more profound way than I'd thought is possible. He kindly published his work for usage in next-intl.
November 19, 2024 at 4:09 PM
🌐 next-intl@4.0 preview: Strictly-typed ICU args
November 19, 2024 at 4:09 PM
Furthermore, the Locale type can be imported into your app code in case you’re passing a locale to another function and want to ensure type safety.
November 18, 2024 at 4:52 PM
This feature is opt-in, and can be activated by augmenting the new AppConfig type.
November 18, 2024 at 4:52 PM
🌐 next-intl@4.0 preview: Strictly-typed locale

By strictly typing your supported locales, APIs like useLocale() or <Link /> that either return or receive a locale will now require a precise value based on a string union, improving type safety across your app.
November 18, 2024 at 4:52 PM