diff --git a/packages/svelte/messages/client-errors/errors.md b/packages/svelte/messages/client-errors/errors.md
index 442a9e7684e3..e51242d8f63f 100644
--- a/packages/svelte/messages/client-errors/errors.md
+++ b/packages/svelte/messages/client-errors/errors.md
@@ -60,10 +60,6 @@
> The `%rune%` rune is only available inside `.svelte` and `.svelte.js/ts` files
-## state_frozen_invalid_argument
-
-> The argument to `$state.frozen(...)` cannot be an object created with `$state(...)`. You should create a copy of it first, for example with `$state.snapshot`
-
## state_prototype_fixed
> Cannot set prototype of `$state` object
diff --git a/packages/svelte/src/ambient.d.ts b/packages/svelte/src/ambient.d.ts
index 63a3873d3f19..82242cb4948c 100644
--- a/packages/svelte/src/ambient.d.ts
+++ b/packages/svelte/src/ambient.d.ts
@@ -102,12 +102,13 @@ declare namespace $state {
: never;
/**
- * Declares reactive read-only state that is shallowly immutable.
+ * Declares state that is _not_ made deeply reactive — instead of mutating it,
+ * you must reassign it.
*
* Example:
* ```ts
*
-
+
diff --git a/packages/svelte/tests/runtime-runes/samples/class-frozen-state/main.svelte b/packages/svelte/tests/runtime-runes/samples/class-frozen-state/main.svelte
index a723976ea969..2913d1ececaa 100644
--- a/packages/svelte/tests/runtime-runes/samples/class-frozen-state/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/class-frozen-state/main.svelte
@@ -1,6 +1,6 @@
diff --git a/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state-object/_config.js b/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state-object/_config.js
index 4b043a75e2b1..ad93c66761bc 100644
--- a/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state-object/_config.js
+++ b/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state-object/_config.js
@@ -4,7 +4,7 @@ import { test } from '../../test';
export default test({
html: ``,
- test({ assert, target, logs }) {
+ test({ assert, target }) {
const btn = target.querySelector('button');
btn?.click();
@@ -14,7 +14,5 @@ export default test({
btn?.click();
flushSync();
assert.htmlEqual(target.innerHTML, ``);
-
- assert.deepEqual(logs, ['read only', 'read only']);
}
});
diff --git a/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state-object/main.svelte b/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state-object/main.svelte
index 557dc8699811..f7f1c74c29b9 100644
--- a/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state-object/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state-object/main.svelte
@@ -1,6 +1,6 @@
-
+
diff --git a/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state/main.svelte b/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state/main.svelte
index f509f351bbfa..f4812b1dde28 100644
--- a/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/class-private-frozen-state/main.svelte
@@ -1,6 +1,6 @@
{#each frozen_items as item (item.id)}
{console.log(item.text)}
- {item.text}
+ {item.text}
{/each}
-
+
diff --git a/packages/svelte/tests/runtime-runes/samples/readonly-state-replace/main.svelte b/packages/svelte/tests/runtime-runes/samples/readonly-state-replace/main.svelte
index 4a538070301b..4b5dc5ac59d7 100644
--- a/packages/svelte/tests/runtime-runes/samples/readonly-state-replace/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/readonly-state-replace/main.svelte
@@ -1,5 +1,5 @@