Skip to content

build(deps): bump the frontend-dependencies group across 1 directory with 19 updates - #1623

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/frontend/frontend-dependencies-ea245a6264
Closed

build(deps): bump the frontend-dependencies group across 1 directory with 19 updates#1623
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/frontend/frontend-dependencies-ea245a6264

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 1, 2026

Copy link
Copy Markdown
Contributor

Bumps the frontend-dependencies group with 19 updates in the /frontend directory:

Package From To
@sentry/react 9.47.1 10.68.0
@stellar/stellar-sdk 12.3.0 16.1.0
framer-motion 10.18.0 12.43.0
i18next 23.16.8 26.3.6
lucide-react 0.263.1 1.27.0
react 18.3.1 19.2.8
@types/react 18.3.31 19.2.17
react-dom 18.3.1 19.2.8
@types/react-dom 18.3.7 19.2.3
react-i18next 13.5.0 17.0.11
recharts 2.15.4 3.10.1
@storybook/addon-mcp 0.6.0 0.7.0
@testing-library/jest-dom 6.9.1 7.0.0
@types/node 24.13.3 26.1.2
@vitejs/plugin-react 4.7.0 6.0.4
jsdom 26.1.0 30.0.1
tailwindcss 3.4.19 4.3.3
typescript 5.9.3 7.0.2
vite 4.5.14 8.1.5

Updates @sentry/react from 9.47.1 to 10.68.0

Release notes

Sourced from @​sentry/react's releases.

10.68.0

  • feat(cloudflare): Add @​sentry/cloudflare/vite orchestrion plugin (#21967)
  • feat(nestjs): Support WebSocket errors in SentryGlobalFilter (#22224)
  • feat(node,server-utils): Set cache.key on dataloader spans and capture redis delete operations as cache.remove (#22389)
  • feat(server-utils): Allow integrations to be part of marker (#22094)
  • feat(server-utils): Migrate FirebaseInstrumentation to orchestrion (#22141)
  • feat(server-utils): Warn when bundler config has instrumented module in external (#22379)
  • feat(v10): Add http.route attribute to http.server spans with parameterized routes (#22564)
  • feat(v10): Add url.full and url.path to http.server spans (#22533)
  • feat(v10/cloudflare): Auto-instrument Durable Object classes (#22541)
  • feat(v10/cloudflare): Auto-instrument the worker entry with withSentry (#22540)
  • feat(v10/cloudflare): Auto-instrument WorkerEntrypoint classes (#22543)
  • feat(v10/cloudflare): Auto-instrument Workflow classes (#22542)
  • feat(v10/cloudflare): Read wrangler config and resolve the Sentry options module (#22538)
  • feat(v10/core): Add instrumentStateGraph API (#22491)
  • feat(v10/core): Add url.full attribute to core fetch instrumentation (#22436)
  • feat(v10/core): Support filtering stackFrameVariables by variable name (#22526)
  • feat(v10/react-router): Make instrumentation API the default (#22525)
  • fix(cloudflare,deno,node): Align types of vercelai (#22343)
  • fix(core): Instrument Anthropic client in place instead of via a deep proxy (#22305)
  • fix(replay): Set text/javascript MIME type on compression worker Blob (#22377)
  • fix(sveltekit): Adapt frame rewriting for kit 3 (#22407)
  • fix(v10): Pin @apm-js-collab/code-transformer-bundler-plugins to 0.7.1 (#22497)
  • fix(v10/cloudflare): Import prismaIntegration from server-utils (#22535)
  • fix(v10/core): Avoid functionToStringIntegration causing infinite recursions (#22527)
  • fix(v10/core): Avoid propagating baggage: "undefined" when DSC is missing (#22440)
  • chore: Add external contributor to CHANGELOG.md (#22342)
  • chore: Add external contributor to CHANGELOG.md (#22405)
  • chore(deps): Bump axios from 1.16.0 to 1.18.0 in /dev-packages/e2e-tests/test-applications/nestjs-basic (#22395)
  • chore(deps): Bump morgan from 1.10.0 to 1.11.0 (#22187)
  • chore(size-limit): weekly auto-bump (#22182)
  • ci(v10): Add v10 to build and license-compliance branch filters (#22499)
  • feat(deps): Bump axios from 1.16.0 to 1.18.0 (#22396)
  • ref(server-utils): Remove unneeded orchestrion config (#22384)
  • ref(server-utils): Small fastify cleanup (#22385)
  • test: Remove unnecessary test waits (#22383)
  • test(sveltekit-3): Fix import defineEnvVars from @sveltejs/kit/env (#22390)
  • test(v10/cloudflare): Add Vite-build support to the integration-test runner (#22539)

Work in this release was contributed by @​psh4607 and @​trinitiwowka. Thank you for your contributions!

Bundle size 📦

| Path | Size |

... (truncated)

Changelog

Sourced from @​sentry/react's changelog.

10.68.0

  • feat(cloudflare): Add @​sentry/cloudflare/vite orchestrion plugin (#21967)
  • feat(nestjs): Support WebSocket errors in SentryGlobalFilter (#22224)
  • feat(node,server-utils): Set cache.key on dataloader spans and capture redis delete operations as cache.remove (#22389)
  • feat(server-utils): Allow integrations to be part of marker (#22094)
  • feat(server-utils): Migrate FirebaseInstrumentation to orchestrion (#22141)
  • feat(server-utils): Warn when bundler config has instrumented module in external (#22379)
  • feat(v10): Add http.route attribute to http.server spans with parameterized routes (#22564)
  • feat(v10): Add url.full and url.path to http.server spans (#22533)
  • feat(v10/cloudflare): Auto-instrument Durable Object classes (#22541)
  • feat(v10/cloudflare): Auto-instrument the worker entry with withSentry (#22540)
  • feat(v10/cloudflare): Auto-instrument WorkerEntrypoint classes (#22543)
  • feat(v10/cloudflare): Auto-instrument Workflow classes (#22542)
  • feat(v10/cloudflare): Read wrangler config and resolve the Sentry options module (#22538)
  • feat(v10/core): Add instrumentStateGraph API (#22491)
  • feat(v10/core): Add url.full attribute to core fetch instrumentation (#22436)
  • feat(v10/core): Support filtering stackFrameVariables by variable name (#22526)
  • feat(v10/react-router): Make instrumentation API the default (#22525)
  • fix(cloudflare,deno,node): Align types of vercelai (#22343)
  • fix(core): Instrument Anthropic client in place instead of via a deep proxy (#22305)
  • fix(replay): Set text/javascript MIME type on compression worker Blob (#22377)
  • fix(sveltekit): Adapt frame rewriting for kit 3 (#22407)
  • fix(v10): Pin @apm-js-collab/code-transformer-bundler-plugins to 0.7.1 (#22497)
  • fix(v10/cloudflare): Import prismaIntegration from server-utils (#22535)
  • fix(v10/core): Avoid functionToStringIntegration causing infinite recursions (#22527)
  • fix(v10/core): Avoid propagating baggage: "undefined" when DSC is missing (#22440)
  • chore: Add external contributor to CHANGELOG.md (#22342)
  • chore: Add external contributor to CHANGELOG.md (#22405)
  • chore(deps): Bump axios from 1.16.0 to 1.18.0 in /dev-packages/e2e-tests/test-applications/nestjs-basic (#22395)
  • chore(deps): Bump morgan from 1.10.0 to 1.11.0 (#22187)
  • chore(size-limit): weekly auto-bump (#22182)
  • ci(v10): Add v10 to build and license-compliance branch filters (#22499)
  • feat(deps): Bump axios from 1.16.0 to 1.18.0 (#22396)
  • ref(server-utils): Remove unneeded orchestrion config (#22384)
  • ref(server-utils): Small fastify cleanup (#22385)
  • test: Remove unnecessary test waits (#22383)
  • test(sveltekit-3): Fix import defineEnvVars from @sveltejs/kit/env (#22390)
  • test(v10/cloudflare): Add Vite-build support to the integration-test runner (#22539)

Work in this release was contributed by @​psh4607 and @​trinitiwowka. Thank you for your contributions!

10.67.0

... (truncated)

Commits
  • b4396c3 release: 10.68.0
  • be21e8c meta(changelog): Update changelog for 10.68.0 (#22566)
  • fb0987f feat(v10): Add http.route attribute to http.server spans with parameteriz...
  • f7bd901 feat(v10/cloudflare): Auto-instrument WorkerEntrypoint classes (#22543)
  • ed3a8c8 feat(v10/cloudflare): Auto-instrument Workflow classes (#22542)
  • 20227f9 feat(v10/cloudflare): Auto-instrument Durable Object classes (#22541)
  • 3e5625e feat(v10/cloudflare): Auto-instrument the worker entry with withSentry (#22540)
  • d924551 test(v10/cloudflare): Add Vite-build support to the integration-test runner (...
  • 11fed03 feat(v10/cloudflare): Read wrangler config and resolve the Sentry options mod...
  • a540764 feat(v10): Add url.full and url.path to http.server spans (#22533)
  • Additional commits viewable in compare view

Updates @stellar/stellar-sdk from 12.3.0 to 16.1.0

Release notes

Sourced from @​stellar/stellar-sdk's releases.

v16.1.0

v16.1.0

Added

  • inspectAuthEntry(entry): decodes a xdr.SorobanAuthorizationEntry into a typed summary — credential type, authorizing address, nonce, signatureExpirationLedger, and a signers list covering top-level credentials and CAP-71 delegates. Adds the AuthEntryInfo, AuthEntrySigner, AuthEntrySignature, and AuthEntryCredentialType types (#1529).
  • checkAuthEntryReadiness(entry, currentLedgerSeq): reports whether an auth entry is ready to submit — { ready, expired, unsignedBy } — as a pure decode with no network call (#1529).
  • Spec.nativeToScVal now supports contract parameters typed as Val (scSpecTypeVal), so raw JS values can be passed to Val-typed arguments without building xdr.ScVal objects by hand (#1485).
  • rpc.Server.queryContract<T>(contractId, method, args?, networkPassphrase?): a one-line read-only contract call that returns { result, isReadCall }, no transaction assembly or signing. Works for Wasm contracts and built-in Stellar Asset Contracts (SACs) (#1502).
  • rpc.Server.getContractMethods(contractId, networkPassphrase?): lists a contract's callable methods and their signatures. Adds the Api.ContractMethod and Api.ContractMethodInput types (#1502).
  • rpc.Server.getContractInstance(contractId): returns a contract's xdr.ScContractInstance (#1501).
  • contract.Client.from, fromWasm, and fromWasmHash are now generic (<T>) and return Client & T, giving typed contract methods without code generation. T defaults to unknown, so untyped calls are unchanged (#1502).
  • ClientOptions.server: pass an existing rpc.Server to contract.Client.from to reuse its transport instead of building a new one (#1502).
  • Keypair.signMessage(message) and Keypair.verifyMessage(message, signature): sign and verify arbitrary messages per SEP-53, matching the Python and Java SDKs and stellar-cli (#1513).
  • TransactionFailedError: raised by Horizon.Server.submitTransaction and submitAsyncTransaction when Horizon rejects a transaction with result codes. Extends BadResponseError and adds getResultCodes() and getTransactionResult() (#1526).

Changed

  • HorizonApi.TransactionFailedResultCodes gained the transaction result codes it was missing: tx_bad_sponsorship, tx_bad_min_seq_age_or_gap, tx_malformed, tx_soroban_invalid, and tx_frozen_key_accessed (#1526).
  • contract.Client.from now supports built-in Stellar Asset Contracts (SACs), building the client from the embedded SAC spec instead of downloading Wasm (#1501).
  • rpc.Server.getContractWasmByContractId now rejects a SAC with a structured { code: 400 } error pointing to contract.Client.from. The not-found rejection is now { code: 404, message: "Could not obtain contract instance from server" } (#1501).
  • The UMD (dist/) build now sets inlineDynamicImports so the single-file bundle stays whole despite the SAC spec's lazy import() (#1501).

Fixed

  • Horizon.Server.submitTransaction and submitAsyncTransaction now reject with SDK error types on HTTP failures, as documented: a TransactionFailedError for Horizon result codes, a BadResponseError otherwise. The wrapping branch used to be unreachable, so failures leaked through as raw HTTP-client errors. err.response.data and err.response.status are unchanged; the original error is now preserved as err.cause (#1526).
  • Federation.Server resolution methods (resolveAddress, resolveAccountId, resolveTransactionId, forDomain) had the same unreachable branch and now reject HTTP failures with BadResponseError (#1526).
  • contract.AssembledTransaction.needsNonInvokerSigningBy now treats an empty scvVec signature as unsigned, matching the existing scvVoid check. Such entries used to count as already signed and were left off the list (#1529).
  • Spec.nativeToScVal no longer misclassifies plain objects that have a constructor key, and handles null-prototype objects (Object.create(null)) (#1485).

Contributors

Full Changelog: stellar/js-stellar-sdk@v16.0.1...v16.1.0

v16.0.1

v16.0.1

Fixed

  • Fixed the ESM library build so the inlined @stellar/js-xdr source resolves correctly under Yarn PnP (and Node's native ESM resolver). Because the build preserves modules, Rollup emits js-xdr's source into a nested package scope, but js-xdr does not declare type: "module", so Node and Yarn PnP parsed those preserved files as CommonJS and failed to resolve them. Rollup now marks the emitted js-xdr package as type: "module" so its source is parsed as ESM #1484.

Full Changelog: stellar/js-stellar-sdk@v16.0.0...v16.0.1

v16.0.0

v16.0.0

... (truncated)

Changelog

Sourced from @​stellar/stellar-sdk's changelog.

v16.1.0

Added

  • inspectAuthEntry(entry): decodes a xdr.SorobanAuthorizationEntry into a typed summary — credential type, authorizing address, nonce, signatureExpirationLedger, and a signers list covering top-level credentials and CAP-71 delegates. Adds the AuthEntryInfo, AuthEntrySigner, AuthEntrySignature, and AuthEntryCredentialType types (#1529).
  • checkAuthEntryReadiness(entry, currentLedgerSeq): reports whether an auth entry is ready to submit — { ready, expired, unsignedBy } — as a pure decode with no network call (#1529).
  • Spec.nativeToScVal now supports contract parameters typed as Val (scSpecTypeVal), so raw JS values can be passed to Val-typed arguments without building xdr.ScVal objects by hand (#1485).
  • rpc.Server.queryContract<T>(contractId, method, args?, networkPassphrase?): a one-line read-only contract call that returns { result, isReadCall }, no transaction assembly or signing. Works for Wasm contracts and built-in Stellar Asset Contracts (SACs) (#1502).
  • rpc.Server.getContractMethods(contractId, networkPassphrase?): lists a contract's callable methods and their signatures. Adds the Api.ContractMethod and Api.ContractMethodInput types (#1502).
  • rpc.Server.getContractInstance(contractId): returns a contract's xdr.ScContractInstance (#1501).
  • contract.Client.from, fromWasm, and fromWasmHash are now generic (<T>) and return Client & T, giving typed contract methods without code generation. T defaults to unknown, so untyped calls are unchanged (#1502).
  • ClientOptions.server: pass an existing rpc.Server to contract.Client.from to reuse its transport instead of building a new one (#1502).
  • Keypair.signMessage(message) and Keypair.verifyMessage(message, signature): sign and verify arbitrary messages per SEP-53, matching the Python and Java SDKs and stellar-cli (#1513).
  • TransactionFailedError: raised by Horizon.Server.submitTransaction and submitAsyncTransaction when Horizon rejects a transaction with result codes. Extends BadResponseError and adds getResultCodes() and getTransactionResult() (#1526).

Changed

  • HorizonApi.TransactionFailedResultCodes gained the transaction result codes it was missing: tx_bad_sponsorship, tx_bad_min_seq_age_or_gap, tx_malformed, tx_soroban_invalid, and tx_frozen_key_accessed (#1526).
  • contract.Client.from now supports built-in Stellar Asset Contracts (SACs), building the client from the embedded SAC spec instead of downloading Wasm (#1501).
  • rpc.Server.getContractWasmByContractId now rejects a SAC with a structured { code: 400 } error pointing to contract.Client.from. The not-found rejection is now { code: 404, message: "Could not obtain contract instance from server" } (#1501).
  • The UMD (dist/) build now sets inlineDynamicImports so the single-file bundle stays whole despite the SAC spec's lazy import() (#1501).

Fixed

  • Horizon.Server.submitTransaction and submitAsyncTransaction now reject with SDK error types on HTTP failures, as documented: a TransactionFailedError for Horizon result codes, a BadResponseError otherwise. The wrapping branch used to be unreachable, so failures leaked through as raw HTTP-client errors. err.response.data and err.response.status are unchanged; the original error is now preserved as err.cause (#1526).
  • Federation.Server resolution methods (resolveAddress, resolveAccountId, resolveTransactionId, forDomain) had the same unreachable branch and now reject HTTP failures with BadResponseError (#1526).
  • contract.AssembledTransaction.needsNonInvokerSigningBy now treats an empty scvVec signature as unsigned, matching the existing scvVoid check. Such entries used to count as already signed and were left off the list (#1529).
  • Spec.nativeToScVal no longer misclassifies plain objects that have a constructor key, and handles null-prototype objects (Object.create(null)) (#1485).

v16.0.1

Fixed

  • Fixed the ESM library build so the inlined @stellar/js-xdr source resolves correctly under Yarn PnP (and Node's native ESM resolver). Because the build preserves modules, Rollup emits js-xdr's source into a nested package scope, but js-xdr does not declare type: "module", so Node and Yarn PnP parsed those preserved files as CommonJS and failed to resolve them. Rollup now marks the emitted js-xdr package as type: "module" so its source is parsed as ESM #1484.

v16.0.0

There are a few major updates in this release:

  • JS Stellar Base (@stellar/stellar-base) was rewritten in TypeScript, which provides proper type definitions and fixes inconsistencies caused by manual type declarations. (#1399)
  • JS Stellar Base is now merged into the JS Stellar SDK. Everything lives in one

... (truncated)

Commits
  • 62830ba Release v16.1.0 (#1560)
  • 74886fa Bump the all-actions group with 3 updates (#1552)
  • 3233637 Add inspectAuthEntry and checkAuthEntryReadiness for decoding Soroban auth en...
  • 0d6b7a9 Tx failed error (#1526)
  • 63671cc Single-source guide code as tested snippets injected at docs build time (#1522)
  • 8c6de2e Handle scSpecTypeVal in Spec.nativeToScVal for raw JS types (#1485)
  • bbb8107 Bump lint-staged from 15.5.2 to 17.0.8 (#1510)
  • 44d5003 Bump the all-actions group across 1 directory with 9 updates (#1508)
  • cb23d75 add socket tier 1 reachability analysis (#1476)
  • becb237 Add SEP-53 message signing/verification to Keypair (#1513)
  • Additional commits viewable in compare view
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for @​stellar/stellar-sdk since your current version.

Install script changes

This version modifies prepare script that runs during installation. Review the package contents before updating.


Updates framer-motion from 10.18.0 to 12.43.0

Changelog

Sourced from framer-motion's changelog.

[12.43.0] 2026-07-27

Added

  • Hardware acceleration for backgroundColor in supported browsers.
  • Hardware acceleration for SVG elements.

Fixed

  • AnimatePresence: Exiting children no longer interleave with entering children, which could reorder and remount children present in both renders.
  • motion: Throw error when passing a custom motion component an incorrect ref type.

[12.42.2] 2026-07-01

Fixed

  • animateView: Cropped group layers now animate border-radius from the old to new radius.

[12.42.1] 2026-06-30

Fixed

  • animateView: Old layer fade out now cancelled when defining .new().

[12.42.0] 2026-06-24

Changed

  • animateView: Layers are automatically grouped to match their DOM-hierarchy. New .group(false) method opts-out.

Fixed

  • animateView: Auto-crop is now aspect-ratio aware, disabling crops for matching aspect-ratios.
  • animateView: Disabled automatic border-radius animation.

[12.41.0] 2026-06-23

Added

  • animateView: Moves from Motion+ Early Access and alpha to main library.
  • animateView: .add() resolves a CSS selector or Element to automatically generate, apply and remove view-transition-name.
  • animateView: .new() and .old() configures values to animate on new and old layers.
  • animateView: .layout() can set a custom transition on the size/position animation of the currently selected elements.
  • animateView: Group layers now automatically crop with children set to cover, with border-radius animating from old radius to new. .crop(false) disables this behaviour.
  • animateView: .class(name) tags currently selected elements with a view-transition-class as a custom CSS hook.

Fixed

  • AnimatePresence: Prevent stuck exit animations when children interrupt.
  • drag: Child e.stopPropagation() no longer break drag end.

... (truncated)

Commits
  • a4ef40a v12.43.0
  • 14f2d28 adding svg acceleration
  • 1f5a27b Fixing merge
  • 79f0353 Updating changelog
  • 57f179b Updating changelog
  • 695cb39 Merge pull request #3755 from motiondivision/fix-issue-2777
  • 33a1820 Drop the production fallback for non-DOM refs
  • ebe35f2 Throw an actionable invariant for non-DOM custom component refs
  • a6ed094 Merge pull request #3754 from motiondivision/fix-3745-popchild-ref-warning
  • 9f251f3 Merge pull request #3763 from motiondivision/advisor/003-color-waapi
  • Additional commits viewable in compare view

Updates i18next from 23.16.8 to 26.3.6

Release notes

Sourced from i18next's releases.

v26.3.6

  • fix: allow TypeScript 7 in the optional typescript peer dependency range (^5 || ^6 || ^7). With typescript@7.0.2 in a project, npm install failed with an ERESOLVE peer conflict. The published types are TS7-compatible as-is: every test/typescript suite produces identical results under 6.0 and 7.0.2. Reported in react-i18next#1927, thanks @​andikapradanaarif.

v26.3.5

  • fix: $t() nesting options blocks that span multiple lines are now parsed. nest() decided where the nested key ends by testing match[1] with /{.*}/, whose dot does not cross line breaks — so a $t(key, { ... }) options object containing a newline was treated as having no options, mis-split as formatters, and the nested lookup ran without its options (placeholders stayed unresolved). The nesting regexp itself already matches newlines inside $t(...); adding the s (dotAll) flag makes multiline options behave like the single-line form. Thanks @​spokodev (#2440).
  • fix: getUsedParamsDetails (the returnDetails: true path) no longer mutates the passed replace object. It wrote count straight onto options.replace so the returned usedParams would include it — a caller reusing one replace object across t() calls then carried a stale count into later interpolations (e.g. a previous call's count: 5 rendered instead of the current call's value). The details are now built from a copy; usedParams still includes count. Thanks @​spokodev (#2441).
  • fix: with the default skipOnVariables: true + escapeValue: true, a {{placeholder}} carried inside an interpolated value now stays literal even when the value contains escapable characters. The skip logic advanced the regex lastIndex by the raw value length, but the escaped text written into the string is longer, so lastIndex landed inside the inserted value and a trailing {{placeholder}} in it got interpolated — leaking another in-scope variable that should have stayed literal (values without escapable characters were already skipped correctly). The advance now uses the escaped length that is actually written, and the regex-safe $-doubling is applied only at the String.replace call so it can't distort the length arithmetic. Thanks @​spokodev (#2442).

v26.3.4

  • fix(security): deepExtend (used by addResourceBundle(..., deep, overwrite)) no longer recurses into inherited properties. It checked key existence with the in operator, which walks the prototype chain, so a source key matching an inherited built-in (e.g. hasOwnProperty, toString) caused recursion into the shared Object.prototype function and, with overwrite: true, could overwrite e.g. Object.prototype.hasOwnProperty.call with a non-callable value — corrupting a shared built-in process-wide (DoS). Existence is now checked with Object.prototype.hasOwnProperty.call, so such keys are copied as plain own data instead. This complements the existing __proto__/constructor guard and is also strictly more correct for an own-property merge. Only affects applications that pass attacker-controlled data with deep: true and overwrite: true; no standard backend/integration does this. Distinct from CVE-2026-48713 / CVE-2026-48714 (different packages, setPath mechanism). Thanks to zx (Jace) for the responsible disclosure.

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)

v26.1.0

  • feat: enableSelector: 'strict' (TypeOptions + runtime option). Opt-in mode that drops the flattened-primary form from NsResource at the type level — every namespace (primary included) is exposed only under its own key on $, uniformly across single- and multi-ns hooks. At runtime, a leading selector path segment matching the scope's namespace list is always rewritten as a namespace prefix, including the primary. Eliminates the silent-miss surface area where t($ => $.primary.foo) typechecks but doesn't resolve under the default mode (see #2429). Backward-compatible: default enableSelector: false | true | 'optimize' behavior is unchanged. Note: strict mode is incompatible with the #2405 pattern (keys whose names match sibling namespaces) — those users should stay on default mode.

v26.0.10

  • feat: getFixedT accepts a fourth optional fixedOpts argument carrying scopeNs — the full namespace list the bound t was created for. The selector API uses scopeNs to detect when a path's first segment is a namespace prefix, without changing resolution scope. Resolution still uses the bound ns (a single primary string in the typical react-i18next setup), so plain t('key') lookups stay isolated to the primary namespace exactly as before — only t($ => $.secondaryNs.foo) selectors now route correctly under useTranslation([nsA, nsB]). Fixes the runtime side of #2429 for the react-i18next default-nsMode case. The 4th argument is opt-in: existing 3-arg getFixedT(lng, ns, keyPrefix) callers see no behavior change.

v26.0.9

  • fix(types): unformatted interpolation values are now typed as string | number (was string). i18next stringifies values at runtime, so requiring callers to wrap numbers in String(...) for plain {{var}} placeholders was unnecessary friction — and could mask the real problem when a non-string value was passed alongside multiple interpolation slots (the t() overload resolution would fall through to the 3-arg form and report a confusing "not assignable to string" error against the options object). Typed format specifiers like {{x, number}}, {{x, currency}}, {{x, datetime}}, etc. keep their precise types; this only relaxes the no-format default. The count variable remains number-only

v26.0.8

  • fix(types): restore the pre-v25.10.4 ExistsFunction shape so plain arrow functions can again be assigned to ExistsFunction-typed variables (TypeScript cannot infer type predicates through multi-overload assignment). Direct i18next.exists(key) calls still narrow key to SelectorKey — the predicate is now declared inline on i18n.exists. Custom wrappers that want the narrowing can type themselves as typeof i18next.exists 2425

v26.0.7

  • fix: when a plural lookup misses, the missingKey debug log now shows the actual plural-resolved key (e.g. foo.bar_many for Polish count: 14) instead of the base key — making it obvious which plural category was expected and missing 2423
  • chore: drop @babel/runtime runtime dependency. The build no longer generates any @babel/runtime imports, so the package is unused by consumers. Rollup now uses babelHelpers: 'bundled' so any helpers that are ever needed in the future will be inlined rather than imported externally 2424
  • chore: stop emitting dist/esm/i18next.bundled.js. It was byte-identical to dist/esm/i18next.js because no helpers were being imported 2424

v26.0.6

Security release — all issues found via an internal audit. GHSA advisory filed after release.

  • security: warn when a translation string combines escapeValue: false with interpolated variables inside a $t(key, { ... "{{var}}" ... }) nesting-options block. In that narrow combination, attacker-controlled string values containing " can break out of the JSON options literal and inject additional nesting options (e.g. redirect lng/ns). The default escapeValue: true configuration is unaffected because HTML-escaping neutralises the quote before JSON.parse. See the security docs for mitigation guidance (GHSA-TBD)
  • security: apply regexEscape to unescapePrefix / unescapeSuffix on par with the other interpolation delimiters. Prevents ReDoS (catastrophic-backtracking) when a misconfigured delimiter contains regex metacharacters, and fixes silent breakage of the {{- var}} syntax when the delimiter contains characters like (, [, .
  • security: strip CR/LF/NUL and other C0/C1 control characters from string log arguments to prevent log forging via user-controlled translation keys, language codes, namespaces, or interpolation variable names (CWE-117)

... (truncated)

Changelog

Sourced from i18next's changelog.

26.3.6

  • fix: allow TypeScript 7 in the optional typescript peer dependency range (^5 || ^6 || ^7). With typescript@7.0.2 in a project, npm install failed with an ERESOLVE peer conflict. The published types are TS7-compatible as-is: every test/typescript suite produces identical results under 6.0 and 7.0.2. Reported in react-i18next#1927, thanks @​andikapradanaarif.

26.3.5

  • fix: $t() nesting options blocks that span multiple lines are now parsed. nest() decided where the nested key ends by testing match[1] with /{.*}/, whose dot does not cross line breaks — so a $t(key, { ... }) options object containing a newline was treated as having no options, mis-split as formatters, and the nested lookup ran without its options (placeholders stayed unresolved). The nesting regexp itself already matches newlines inside $t(...); adding the s (dotAll) flag makes multiline options behave like the single-line form. Thanks @​spokodev (#2440).
  • fix: getUsedParamsDetails (the returnDetails: true path) no longer mutates the passed replace object. It wrote count straight onto options.replace so the returned usedParams would include it — a caller reusing one replace object across t() calls then carried a stale count into later interpolations (e.g. a previous call's count: 5 rendered instead of the current call's value). The details are now built from a copy; usedParams still includes count. Thanks @​spokodev (#2441).
  • fix: with the default skipOnVariables: true + escapeValue: true, a {{placeholder}} carried inside an interpolated value now stays literal even when the value contains escapable characters. The skip logic advanced the regex lastIndex by the raw value length, but the escaped text written into the string is longer, so lastIndex landed inside the inserted value and a trailing {{placeholder}} in it got interpolated — leaking another in-scope variable that should have stayed literal (values without escapable characters were already skipped correctly). The advance now uses the escaped length that is actually written, and the regex-safe $-doubling is applied only at the String.replace call so it can't distort the length arithmetic. Thanks @​spokodev (#2442).

26.3.4

  • fix(security): deepExtend (used by addResourceBundle(..., deep, overwrite)) no longer recurses into inherited properties. It checked key existence with the in operator, which walks the prototype chain, so a source key matching an inherited built-in (e.g. hasOwnProperty, toString) caused recursion into the shared Object.prototype function and, with overwrite: true, could overwrite e.g. Object.prototype.hasOwnProperty.call with a non-callable value — corrupting a shared built-in process-wide (DoS). Existence is now checked with Object.prototype.hasOwnProperty.call, so such keys are copied as plain own data instead. This complements the existing __proto__/constructor guard and is also strictly more correct for an own-property merge. Only affects applications that pass attacker-controlled data with deep: true and overwrite: true; no standard backend/integration does this. Distinct from CVE-2026-48713 / CVE-2026-48714 (different packages, setPath mechanism). See advisory GHSA-6jcc-5g8w-32mx, CVSS 5.9 (CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:H). Thanks to zx (Jace) @​manus-use for the responsible disclosure.

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. { tr...

    Description has been truncated

…with 19 updates

Bumps the frontend-dependencies group with 19 updates in the /frontend directory:

| Package | From | To |
| --- | --- | --- |
| [@sentry/react](https://github.com/getsentry/sentry-javascript) | `9.47.1` | `10.68.0` |
| [@stellar/stellar-sdk](https://github.com/stellar/js-stellar-sdk) | `12.3.0` | `16.1.0` |
| [framer-motion](https://github.com/motiondivision/motion) | `10.18.0` | `12.43.0` |
| [i18next](https://github.com/i18next/i18next) | `23.16.8` | `26.3.6` |
| [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) | `0.263.1` | `1.27.0` |
| [react](https://github.com/react/react/tree/HEAD/packages/react) | `18.3.1` | `19.2.8` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `18.3.31` | `19.2.17` |
| [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom) | `18.3.1` | `19.2.8` |
| [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) | `18.3.7` | `19.2.3` |
| [react-i18next](https://github.com/i18next/react-i18next) | `13.5.0` | `17.0.11` |
| [recharts](https://github.com/recharts/recharts) | `2.15.4` | `3.10.1` |
| [@storybook/addon-mcp](https://github.com/storybookjs/mcp/tree/HEAD/packages/addon-mcp) | `0.6.0` | `0.7.0` |
| [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) | `6.9.1` | `7.0.0` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `24.13.3` | `26.1.2` |
| [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) | `4.7.0` | `6.0.4` |
| [jsdom](https://github.com/jsdom/jsdom) | `26.1.0` | `30.0.1` |
| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `3.4.19` | `4.3.3` |
| [typescript](https://github.com/microsoft/TypeScript) | `5.9.3` | `7.0.2` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `4.5.14` | `8.1.5` |



Updates `@sentry/react` from 9.47.1 to 10.68.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/10.68.0/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@9.47.1...10.68.0)

Updates `@stellar/stellar-sdk` from 12.3.0 to 16.1.0
- [Release notes](https://github.com/stellar/js-stellar-sdk/releases)
- [Changelog](https://github.com/stellar/js-stellar-sdk/blob/main/CHANGELOG.md)
- [Commits](stellar/js-stellar-sdk@v12.3.0...v16.1.0)

Updates `framer-motion` from 10.18.0 to 12.43.0
- [Changelog](https://github.com/motiondivision/motion/blob/main/CHANGELOG.md)
- [Commits](motiondivision/motion@v10.18.0...v12.43.0)

Updates `i18next` from 23.16.8 to 26.3.6
- [Release notes](https://github.com/i18next/i18next/releases)
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md)
- [Commits](i18next/i18next@v23.16.8...v26.3.6)

Updates `lucide-react` from 0.263.1 to 1.27.0
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/1.27.0/packages/lucide-react)

Updates `react` from 18.3.1 to 19.2.8
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.2.8/packages/react)

Updates `@types/react` from 18.3.31 to 19.2.17
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `react-dom` from 18.3.1 to 19.2.8
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.2.8/packages/react-dom)

Updates `@types/react-dom` from 18.3.7 to 19.2.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

Updates `react-i18next` from 13.5.0 to 17.0.11
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md)
- [Commits](i18next/react-i18next@v13.5.0...v17.0.11)

Updates `recharts` from 2.15.4 to 3.10.1
- [Release notes](https://github.com/recharts/recharts/releases)
- [Changelog](https://github.com/recharts/recharts/blob/main/CHANGELOG.md)
- [Commits](recharts/recharts@v2.15.4...v3.10.1)

Updates `@storybook/addon-mcp` from 0.6.0 to 0.7.0
- [Release notes](https://github.com/storybookjs/mcp/releases)
- [Changelog](https://github.com/storybookjs/mcp/blob/main/packages/addon-mcp/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/mcp/commits/@storybook/addon-mcp@0.7.0/packages/addon-mcp)

Updates `@testing-library/jest-dom` from 6.9.1 to 7.0.0
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](testing-library/jest-dom@v6.9.1...v7.0.0)

Updates `@types/node` from 24.13.3 to 26.1.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@types/react` from 18.3.31 to 19.2.17
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Updates `@types/react-dom` from 18.3.7 to 19.2.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

Updates `@vitejs/plugin-react` from 4.7.0 to 6.0.4
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@6.0.4/packages/plugin-react)

Updates `jsdom` from 26.1.0 to 30.0.1
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](jsdom/jsdom@v26.1.0...v30.0.1)

Updates `tailwindcss` from 3.4.19 to 4.3.3
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/tailwindcss)

Updates `typescript` from 5.9.3 to 7.0.2
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Commits](https://github.com/microsoft/TypeScript/commits)

Updates `vite` from 4.5.14 to 8.1.5
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.1.5/packages/vite)

---
updated-dependencies:
- dependency-name: "@sentry/react"
  dependency-version: 10.68.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: "@stellar/stellar-sdk"
  dependency-version: 16.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: framer-motion
  dependency-version: 12.43.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: i18next
  dependency-version: 26.3.6
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: lucide-react
  dependency-version: 1.27.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: react
  dependency-version: 19.2.8
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: "@types/react"
  dependency-version: 19.2.17
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: react-dom
  dependency-version: 19.2.8
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: "@types/react-dom"
  dependency-version: 19.2.3
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: react-i18next
  dependency-version: 17.0.11
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: recharts
  dependency-version: 3.10.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: "@storybook/addon-mcp"
  dependency-version: 0.7.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: frontend-dependencies
- dependency-name: "@testing-library/jest-dom"
  dependency-version: 7.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: "@types/node"
  dependency-version: 26.1.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: "@types/react"
  dependency-version: 19.2.17
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: "@types/react-dom"
  dependency-version: 19.2.3
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 6.0.4
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: jsdom
  dependency-version: 30.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: tailwindcss
  dependency-version: 4.3.3
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: typescript
  dependency-version: 7.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
- dependency-name: vite
  dependency-version: 8.1.5
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: frontend-dependencies
...

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 Aug 1, 2026
@vercel

vercel Bot commented Aug 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
stellar-portfolio-rebalancer Error Error Aug 1, 2026 5:18am

@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

🔒 Security Update: This PR will NOT be auto-merged. Security advisories require manual review and approval.

@dependabot @github

dependabot Bot commented on behalf of github Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't parse your package-lock.json. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

Looks like these dependencies are updatable in another way, so this is no longer needed.

@dependabot dependabot Bot closed this Aug 3, 2026
@dependabot
dependabot Bot deleted the dependabot/npm_and_yarn/frontend/frontend-dependencies-ea245a6264 branch August 3, 2026 15:04
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