diff --git a/packages/svelte/src/internal/client/proxy.js b/packages/svelte/src/internal/client/proxy.js
index 3df5db751b..e1f62609a6 100644
--- a/packages/svelte/src/internal/client/proxy.js
+++ b/packages/svelte/src/internal/client/proxy.js
@@ -201,7 +201,17 @@ export function create_proxy(value, onchanges) {
v = Reflect.get(target, prop, receiver);
if (is_proxied_array && array_methods.includes(/** @type {string} */ (prop))) {
- return batch_onchange(v);
+ // @ts-expect-error
+ return function (...args) {
+ try {
+ batching = true;
+
+ // @ts-expect-error
+ return v.apply(this, args);
+ } finally {
+ batching = false;
+ }
+ };
}
return v;
diff --git a/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/main.svelte
index 41f8c7a948..53046a1502 100644
--- a/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/state-onchange-arrays/main.svelte
@@ -8,4 +8,4 @@
-
\ No newline at end of file
+