Skip to content

chore(deps): bump the i18n group with 3 updates#1127

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bun/i18n-5a1bf8a1df
Open

chore(deps): bump the i18n group with 3 updates#1127
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bun/i18n-5a1bf8a1df

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 5, 2026

Copy link
Copy Markdown
Contributor

Bumps the i18n group with 3 updates: i18next, i18next-cli and react-i18next.

Updates i18next from 26.1.0 to 26.3.3

Release notes

Sourced from i18next's releases.

v26.3.3

  • fix(types): selector t($ => $.arr, { returnObjects: true, context }) on a JSON array of heterogeneous objects now preserves each element's full shape (e.g. { transKey1: string; transKey2: string }[]) instead of collapsing to a union of partial element types. Two type-level causes: (1) FilterKeys evaluated the whole array element type at once, so keyof (A | B) only saw the keys common to every element — it now distributes over the object union and filters each element independently; (2) when TypeScript merges mismatched array element types it injects phantom optional undefined keys (e.g. transKey1_withContext?: undefined on elements that don't define it), which the context-detection helpers mistook for real context variants — they now skip keys typed as undefined. Also adds a dedicated context + returnObjects: true selector overload using const Fn + ReturnType<Fn>, so Target is no longer collapsed to unknown via ApplyTarget. Resolves Problem 1 of #2398 (Problem 2 was already fixed on master). Thanks @​sauravgupta-dotcom (#2438). Fixes #2398.

v26.3.2

  • fix: chained formatters with a parenthesised option that contains the format separator (e.g. join(separator: ', ')) now work at any position in the chain, not just first. Previously the comma-in-parens reassembly only repaired formats[0], so {{v, uppercase, join(separator: ', ')}} split the join(...) option on the inner comma and never rejoined it, producing corrupt output. Replaced the first-position-only repair with a position-independent pass that re-joins fragments until each open paren closes. Thanks @​spokodev (#2437).

v26.3.1

  • fix(types): t() with a keyPrefix no longer pollutes its return type with sibling keys' values. A regression in 26.3.0 — the [Res] extends [never] guards added to KeysBuilderWithReturnObjects / KeysBuilderWithoutReturnObjects turned the builders into deferred conditional types, so KeyPrefix<Ns> stopped resolving to a literal union and keyPrefix inference widened to the whole namespace. Symptom: useTranslation(ns, { keyPrefix: 'a.b' }) then t('title') would resolve to '<a.b>.title' | '<other.path>.title' | ... instead of just the scoped value. Affected every react-i18next user using keyPrefix. Restored to the eager 26.2.0 form. The same-namespace conflict handling from #2434 still works via _DropConflictKeys at the merge layer (in options.d.ts). Thanks @​aaronrosenthal (#2436).

v26.3.0

  • feat(types): introduce ResourceNamespaceMap — a separate mergeable augmentation surface for namespace resource types, designed for monorepos where multiple packages each want to contribute their own namespaces. Previously, every package had to coordinate on a single CustomTypeOptions.resources declaration (or fall back to typing dependency namespaces as any) because resources is a single property of an interface and TypeScript reports TS2717 when two declarations of the same property disagree. The new interface merges naturally across declare module 'i18next' blocks, so each package can ship its own i18next.d.ts independently. Per-property merge handles same-namespace contributions from multiple packages, and same-key/different-literal conflicts are silently dropped to avoid poisoning t() overload resolution. Fully backwards-compatible — existing CustomTypeOptions.resources augmentations continue to work, and both surfaces can coexist. Scalar options (defaultNS, returnNull, enableSelector, etc.) still belong on CustomTypeOptions. Thanks @​sh3xu (#2434). Fixes #2409.

v26.2.0

  • feat(types): new parseInterpolation TypeOption (default true). When set to false in CustomTypeOptions, the type-level extractor stops parsing translation strings for {{variable}} patterns. Required by i18next-icu users — the default extractor mistakes ICU MessageFormat nested-brace plurals like {count, plural, one {{count} row} other {{count} rows}} for an interpolation block and demands a phantom variable name. The flag is type-only; runtime interpolation is governed by InterpolationOptions and is unaffected. Fixes i18next-icu#85.
  • fix(types): expose enableSelector on InitOptions so i18next.init({ enableSelector: 'strict' }) typechecks without a module augmentation. The runtime already reads opts?.enableSelector from init options; this lands the matching type declaration next to the other selector-resolution knobs. Accepts false | true | 'optimize' | 'strict'. Thanks @​Faithfinder (#2431)
Changelog

Sourced from i18next's changelog.

26.3.3

  • fix(types): selector t($ => $.arr, { returnObjects: true, context }) on a JSON array of heterogeneous objects now preserves each element's full shape (e.g. { transKey1: string; transKey2: string }[]) instead of collapsing to a union of partial element types. Two type-level causes: (1) FilterKeys evaluated the whole array element type at once, so keyof (A | B) only saw the keys common to every element — it now distributes over the object union and filters each element independently; (2) when TypeScript merges mismatched array element types it injects phantom optional undefined keys (e.g. transKey1_withContext?: undefined on elements that don't define it), which the context-detection helpers mistook for real context variants — they now skip keys typed as undefined. Also adds a dedicated context + returnObjects: true selector overload using const Fn + ReturnType<Fn>, so Target is no longer collapsed to unknown via ApplyTarget. Resolves Problem 1 of #2398 (Problem 2 was already fixed on master). Thanks @​sauravgupta-dotcom (#2438). Fixes #2398.

26.3.2

  • fix: chained formatters with a parenthesised option that contains the format separator (e.g. join(separator: ', ')) now work at any position in the chain, not just first. Previously the comma-in-parens reassembly only repaired formats[0], so {{v, uppercase, join(separator: ', ')}} split the join(...) option on the inner comma and never rejoined it, producing corrupt output. Replaced the first-position-only repair with a position-independent pass that re-joins fragments until each open paren closes. Thanks @​spokodev (#2437).

26.3.1

  • fix(types): t() with a keyPrefix no longer pollutes its return type with sibling keys' values. A regression in 26.3.0 — the [Res] extends [never] guards added to KeysBuilderWithReturnObjects / KeysBuilderWithoutReturnObjects turned the builders into deferred conditional types, so KeyPrefix<Ns> stopped resolving to a literal union and keyPrefix inference widened to the whole namespace. Symptom: useTranslation(ns, { keyPrefix: 'a.b' }) then t('title') would resolve to '<a.b>.title' | '<other.path>.title' | ... instead of just the scoped value. Affected every react-i18next user using keyPrefix. Restored to the eager 26.2.0 form. The same-namespace conflict handling from #2434 still works via _DropConflictKeys at the merge layer (in options.d.ts). Thanks @​aaronrosenthal (#2436).

26.3.0

  • feat(types): introduce ResourceNamespaceMap — a separate mergeable augmentation surface for namespace resource types, designed for monorepos where multiple packages each want to contribute their own namespaces. Previously, every package had to coordinate on a single CustomTypeOptions.resources declaration (or fall back to typing dependency namespaces as any) because resources is a single property of an interface and TypeScript reports TS2717 when two declarations of the same property disagree. The new interface merges naturally across declare module 'i18next' blocks, so each package can ship its own i18next.d.ts independently. Per-property merge handles same-namespace contributions from multiple packages, and same-key/different-literal conflicts are silently dropped to avoid poisoning t() overload resolution. Fully backwards-compatible — existing CustomTypeOptions.resources augmentations continue to work, and both surfaces can coexist. Scalar options (defaultNS, returnNull, enableSelector, etc.) still belong on CustomTypeOptions. Thanks @​sh3xu (#2434). Fixes #2409.

26.2.0

  • feat(types): new parseInterpolation TypeOption (default true). When set to false in CustomTypeOptions, the type-level extractor stops parsing translation strings for {{variable}} patterns. Required by i18next-icu users — the default extractor mistakes ICU MessageFormat nested-brace plurals like {count, plural, one {{count} row} other {{count} rows}} for an interpolation block and demands a phantom variable name. The flag is type-only; runtime interpolation is governed by InterpolationOptions and is unaffected. Fixes i18next-icu#85.
  • fix(types): expose enableSelector on InitOptions so i18next.init({ enableSelector: 'strict' }) typechecks without a module augmentation. The runtime already reads opts?.enableSelector from init options; this lands the matching type declaration next to the other selector-resolution knobs. Accepts false | true | 'optimize' | 'strict'. Thanks @​Faithfinder (#2431)
Commits

Updates i18next-cli from 1.56.12 to 1.64.2

Changelog

Sourced from i18next-cli's changelog.

1.64.2

  • fix(status): scope the pass/fail result to the requested locale (#271).
    • status <locale> now exits based on that locale only, instead of always evaluating every secondary language. Previously, running e.g. status en-AU on a fully-translated primary could print "🎉 All keys present" and still exit 1 because an unrelated secondary (e.g. an empty de-DE) was incomplete — a summary that contradicted the exit code.
    • When the requested locale is the primary, the check still fails only on absent keys (empty placeholders are tolerated); for a secondary it fails on any untranslated/absent key. The global view (status with no locale) is unchanged.
    • The failure message now names the locale when scoped (Error: Incomplete translations detected for "de-DE".) so the reason is no longer hidden.

1.64.1

  • fix(status): align plural reporting with the i18next runtime (#270).
    • Plural categories that Intl.PluralRules only selects for out-of-range values (e.g. French _many, which fires only for counts ≥ 1,000,000) are now treated as optional: a missing or empty variant is shown as a soft "optional plural form" note instead of a hard "missing key" error, so it no longer fails the check. Categories reachable by typical counts (including decimals, e.g. Polish/Russian other) remain required.
    • With disablePlurals: true, a key used with count is now considered satisfied when either its plural variants (_one/_other) or the bare key exist — mirroring the runtime's key + suffix → key resolution chain — instead of demanding the literal bare key.

1.64.0

  • feat: extract.functions now supports trailing wildcards to match any method on an object, e.g. 'tProps.*' matches tProps.label(...) / tProps.title(...). This complements the existing leading wildcard ('*.t') and is also honored by the linter and rename-key (#269).

1.63.1

  • fix: init --inlang now pins @inlang/plugin-i18next@6.2.1 (was 6.2.0). 6.2.1 restores Sherlock (inlang VS Code extension) inline annotations, hovers, and message extraction for i18next projects, which were silently broken by the plugin's static ide-extension meta shadowing Sherlock's settings-injecting addCustomApi migration (reported and fixed upstream in opral/inlang#4368). Projects already scaffolded with 6.2.0 can simply bump the modules URL in project.inlang/settings.json.

... (truncated)

Commits

Updates react-i18next from 17.0.7 to 17.0.8

Changelog

Sourced from react-i18next's changelog.

17.0.8

  • fix(types): <Trans i18nKey={$ => ...}> now typechecks under enableSelector: 'strict'. The Trans component's conditional type was gated on _EnableSelector extends true | 'optimize', excluding 'strict' and falling back to the legacy string-key signature. Runtime was already correct (it calls keyFromSelector(i18nKey) whenever typeof i18nKey === 'function'); this is a type-only fix that widens the conditional to include 'strict'. Thanks @​Faithfinder (#1921)
Commits
  • a46ad23 17.0.8
  • f715031 update i18next dep
  • a515d5b changelog: 17.0.8 entry for #1921
  • d5ab7c8 fix(types): accept selector i18nKey on <Trans> under enableSelector: 'strict'...
  • b91ba36 Add Locize advice section near the top of README
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps the i18n group with 3 updates: [i18next](https://github.com/i18next/i18next), [i18next-cli](https://github.com/i18next/i18next-cli) and [react-i18next](https://github.com/i18next/react-i18next).


Updates `i18next` from 26.1.0 to 26.3.3
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](i18next/i18next@v26.1.0...v26.3.3)

Updates `i18next-cli` from 1.56.12 to 1.64.2
- [Changelog](https://github.com/i18next/i18next-cli/blob/main/CHANGELOG.md)
- [Commits](i18next/i18next-cli@v1.56.12...v1.64.2)

Updates `react-i18next` from 17.0.7 to 17.0.8
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md)
- [Commits](i18next/react-i18next@v17.0.7...v17.0.8)

---
updated-dependencies:
- dependency-name: i18next
  dependency-version: 26.3.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: i18n
- dependency-name: i18next-cli
  dependency-version: 1.64.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: i18n
- dependency-name: react-i18next
  dependency-version: 17.0.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: i18n
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Jul 5, 2026
@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedreact-i18next@​17.0.7 ⏵ 17.0.899 +110010092100
Addedi18next@​26.3.31001009297100
Updatedi18next-cli@​1.56.12 ⏵ 1.64.297 -210010097100

View full report

@bundlemon

bundlemon Bot commented Jul 5, 2026

Copy link
Copy Markdown

BundleMon

Files updated (1)
Status Path Size Limits
apps/web/dist/assets/index.browser-(hash).js
9.13KB (+8.31KB +1019.64%) -
Unchanged files (74)
Status Path Size Limits
apps/web/dist/assets/index-(hash).js
300.58KB -
apps/extension/.output/chrome-mv3/chunks/clie
nt-(hash).js
275.85KB -
apps/web/dist/assets/combobox-(hash).js
45.75KB -
apps/extension/.output/chrome-mv3/chunks/comb
obox-(hash).js
45.74KB -
apps/web/dist/assets/toggle-(hash).js
27.61KB -
apps/extension/.output/chrome-mv3/chunks/togg
le-(hash).js
27.59KB -
apps/web/dist/assets/settings-(hash).js
26.08KB -
apps/extension/.output/chrome-mv3/chunks/sett
ings-(hash).js
26.08KB -
apps/extension/.output/chrome-mv3/chunks/form
-(hash).js
13.16KB -
apps/web/dist/assets/form-(hash).js
13.16KB -
apps/web/dist/assets/select-(hash).js
8.55KB -
apps/extension/.output/chrome-mv3/chunks/sele
ct-(hash).js
8.54KB -
apps/extension/.output/chrome-mv3/chunks/onbo
arding-(hash).js
5.83KB -
apps/web/dist/assets/onboarding-(hash).js
5.83KB -
apps/extension/.output/chrome-mv3/chunks/inde
x.browser-(hash).js
4.64KB -
apps/extension/.output/chrome-mv3/chunks/crea
te-(hash).js
4.56KB -
apps/web/dist/assets/create-(hash).js
4.55KB -
apps/extension/.output/chrome-mv3/chunks/cons
tants-(hash).js
3.6KB -
apps/web/dist/assets/constants-(hash).js
3.6KB -
apps/web/dist/assets/useQuery-(hash).js
3.12KB -
apps/extension/.output/chrome-mv3/chunks/useQ
uery-(hash).js
3.12KB -
apps/extension/.output/chrome-mv3/chunks/requ
est-(hash).js
2.86KB -
apps/web/dist/assets/request-(hash).js
2.85KB -
apps/extension/.output/chrome-mv3/assets/vani
ty-(hash).js
2.79KB -
apps/web/dist/assets/vanity-(hash).js
2.79KB -
apps/web/dist/assets/portfolio-(hash).js
2.69KB -
apps/extension/.output/chrome-mv3/chunks/port
folio-(hash).js
2.68KB -
apps/extension/.output/chrome-mv3/chunks/send
-(hash).js
2.46KB -
apps/web/dist/assets/send-(hash).js
2.46KB -
apps/web/dist/assets/dropdown-(hash).js
2.16KB -
apps/extension/.output/chrome-mv3/chunks/drop
down-(hash).js
2.16KB -
apps/extension/.output/chrome-mv3/chunks/chec
kbox-(hash).js
1.89KB -
apps/web/dist/assets/checkbox-(hash).js
1.88KB -
apps/extension/.output/chrome-mv3/chunks/tool
s-(hash).js
1.85KB -
apps/web/dist/assets/tools-(hash).js
1.84KB -
apps/web/dist/assets/explorer-(hash).js
1.52KB -
apps/extension/.output/chrome-mv3/chunks/expl
orer-(hash).js
1.52KB -
apps/extension/.output/chrome-mv3/chunks/badg
e-(hash).js
767B -
apps/web/dist/assets/badge-(hash).js
766B -
apps/extension/.output/chrome-mv3/chunks/zod-
(hash).js
765B -
apps/web/dist/assets/zod-(hash).js
763B -
apps/extension/.output/chrome-mv3/chunks/stan
dard-(hash).js
651B -
apps/web/dist/assets/standard-(hash).js
651B -
apps/extension/.output/chrome-mv3/chunks/tabl
e-(hash).js
595B -
apps/web/dist/assets/table-(hash).js
593B -
apps/web/dist/assets/button-(hash).js
576B -
apps/extension/.output/chrome-mv3/chunks/butt
on-(hash).js
575B -
apps/extension/.output/chrome-mv3/chunks/book
mark-(hash).js
553B -
apps/web/dist/assets/bookmark-(hash).js
551B -
apps/extension/.output/chrome-mv3/chunks/ui-(
hash).js
522B -
apps/web/dist/assets/ui-(hash).js
522B -
apps/extension/.output/chrome-mv3/chunks/text
area-(hash).js
497B -
apps/web/dist/assets/textarea-(hash).js
494B -
apps/web/dist/assets/dev-(hash).js
277B -
apps/extension/.output/chrome-mv3/chunks/dev-
(hash).js
273B -
apps/web/dist/assets/use-(hash).js
227B -
apps/extension/.output/chrome-mv3/chunks/use-
(hash).js
225B -
apps/extension/.output/chrome-mv3/chunks/side
panel-(hash).js
201B -
apps/extension/.output/chrome-mv3/chunks/popu
p-(hash).js
196B -
apps/extension/.output/chrome-mv3/chunks/inde
x-(hash).js
172B -
apps/extension/.output/chrome-mv3/chunks/form
at-(hash).js
166B -
apps/web/dist/assets/format-(hash).js
166B -
apps/extension/.output/chrome-mv3/chunks/sol-
(hash).js
151B -
apps/web/dist/assets/sol-(hash).js
151B -
apps/extension/.output/chrome-mv3/chunks/elli
psify-(hash).js
145B -
apps/web/dist/assets/ellipsify-(hash).js
145B -
apps/extension/.output/chrome-mv3/chunks/chev
ron-(hash).js
141B -
apps/web/dist/assets/chevron-(hash).js
139B -
apps/web/dist/assets/stringify-(hash).js
139B -
apps/extension/.output/chrome-mv3/chunks/stri
ngify-(hash).js
138B -
apps/extension/.output/chrome-mv3/chunks/toas
t-(hash).js
137B -
apps/web/dist/assets/toast-(hash).js
137B -
apps/extension/.output/chrome-mv3/chunks/netw
ork-(hash).js
121B -
apps/web/dist/assets/network-(hash).js
121B -

Total files change +8.24KB +0.91%

Groups updated (2)
Status Path Size Limits
apps/extension/.output/chrome-mv3/**/*-
.js
558.98KB (-99B -0.02%) -
apps/web/dist/**/*-.js
584.28KB (-120B -0.02%) -

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 5, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
samui-wallet-api 6993e11 Commit Preview URL

Branch Preview URL
Jul 05 2026, 12:12 AM

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 5, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
samui-wallet-web 6993e11 Commit Preview URL

Branch Preview URL
Jul 05 2026, 12:13 AM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants