Skip to main content

FAQ

Does it support pluralization?​

Not natively. Use Intl.PluralRules (a few lines) and key your strings by the form it returns. See the Intl formatters recipe.

Does it support ICU MessageFormat?​

No. Plain string templates with {{double-mustache}} tokens. For ICU, plug in @formatjs/intl-messageformat separately — pre-format and pass the resolved string as defaultMessage.

Does it support RTL or bidi-isolation wrappers?​

Not in the library. Set dir="rtl" on a wrapping element when the locale calls for it; if you need bidi isolation, render <bdi> yourself.

Does it auto-detect the user's locale?​

No. You pass the locale via the provider prop. We don't ship locale negotiation; if you need richer matching, Intl.Locale and @formatjs/intl-locale-matcher plug in cleanly.

Can I use it with React Native?​

In principle yes — there's no DOM dependency in the runtime. We don't currently test against RN in CI, so file an issue if you hit something odd.

Can I use it without a provider?​

Yes. useLocalize() returns a passthrough translate (returns the descriptor / defaultMessage). That makes the library safe to use in shared library components — they degrade gracefully when no provider is mounted.

Is the translate cache shared between providers?​

No. As of v2.2 each <LocalizationProvider> owns an independent, closure-scoped memo cache, so two providers — or two createLocalization() factories — never see each other's entries. The cache is rebuilt (and the old one discarded) whenever locale or translations change. Earlier versions used a single module-scoped cache; see DECISIONS.md ADR-009 in the repo for the change rationale.

Does it interact with React Server Components?​

LocalizationProvider is a client component (it uses useMemo). Mount it once in a 'use client' boundary; everything below sees the context. Server components can compute strings out-of-band — see the Next.js recipe.

Why mustache {{name}} and not {name}?​

Disambiguates from JSX-like syntax. Easier to grep for. Matches Handlebars and dozens of other libraries' conventions.

Will you add ICU plurals/dates if I PR it?​

Probably not — it'd at least double the bundle and goes against the library's "smallest thing that works" goal. We'd happily review a separate sibling package (@localize-react/icu or similar) that composes on top.

Are types-only changes considered breaking?​

Yes — semver applies to the public type surface too. A stricter parameter type or a removed export is treated as major.

How do I report a security issue?​

Email the maintainer via the address on the yankouskia GitHub profile, or open a private security advisory on the repo. Please don't file public issues for vulnerabilities.

Where do releases land?​

npm (with provenance). Changelog on GitHub Releases — autogenerated via Changesets.