diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js
index ed1c1ade08..e9a1fec0c6 100644
--- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js
+++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js
@@ -131,7 +131,7 @@ export function ClassBody(node, context) {
? b.call('$.assignable_proxy', init, options)
: b.call('$.state', init, options)
: field.kind === 'raw_state'
- ? b.call('$.state', init)
+ ? b.call('$.state', init, options)
: field.kind === 'derived_by'
? b.call('$.derived', init)
: b.call('$.derived', b.thunk(init));
diff --git a/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/_config.js b/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/_config.js
new file mode 100644
index 0000000000..49b367f787
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/_config.js
@@ -0,0 +1,58 @@
+import { flushSync } from 'svelte';
+import { test } from '../../test';
+
+export default test({
+ async test({ assert, target, logs }) {
+ const [btn, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10] =
+ target.querySelectorAll('button');
+ flushSync(() => {
+ btn.click();
+ });
+ assert.deepEqual(logs, ['count']);
+
+ flushSync(() => {
+ btn2.click();
+ });
+ assert.deepEqual(logs, ['count']);
+
+ flushSync(() => {
+ btn3.click();
+ });
+ assert.deepEqual(logs, ['count', 'proxy']);
+
+ flushSync(() => {
+ btn4.click();
+ });
+ assert.deepEqual(logs, ['count', 'proxy', 'class count']);
+
+ flushSync(() => {
+ btn5.click();
+ });
+ assert.deepEqual(logs, ['count', 'proxy', 'class count']);
+
+ flushSync(() => {
+ btn6.click();
+ });
+ assert.deepEqual(logs, ['count', 'proxy', 'class count', 'class proxy']);
+
+ flushSync(() => {
+ btn7.click();
+ });
+ assert.deepEqual(logs, ['count', 'proxy', 'class count', 'class proxy']);
+
+ flushSync(() => {
+ btn8.click();
+ });
+ assert.deepEqual(logs, ['count', 'proxy', 'class count', 'class proxy']);
+
+ flushSync(() => {
+ btn9.click();
+ });
+ assert.deepEqual(logs, ['count', 'proxy', 'class count', 'class proxy']);
+
+ flushSync(() => {
+ btn10.click();
+ });
+ assert.deepEqual(logs, ['count', 'proxy', 'class count', 'class proxy', 'arr']);
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/main.svelte
new file mode 100644
index 0000000000..5f05dd7d0a
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/state-raw-onchange/main.svelte
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file