diff --git a/packages/router-core/src/utils.ts b/packages/router-core/src/utils.ts index d5a6849fc82..4a04372e7da 100644 --- a/packages/router-core/src/utils.ts +++ b/packages/router-core/src/utils.ts @@ -219,11 +219,13 @@ const hasOwn = Object.prototype.hasOwnProperty * This can be used for structural sharing between immutable JSON values for example. * Do not use this with signals */ -export function replaceEqualDeep(prev: any, _next: T): T { +export function replaceEqualDeep(prev: any, _next: T, _depth = 0): T { if (prev === _next) { return prev } + if (_depth > 500) return _next + const next = _next as any const array = isPlainArray(prev) && isPlainArray(next) @@ -261,7 +263,7 @@ export function replaceEqualDeep(prev: any, _next: T): T { continue } - const v = replaceEqualDeep(p, n) + const v = replaceEqualDeep(p, n, _depth + 1) copy[key] = v if (v === p) equalItems++ }