diff --git a/frontend/src/lib/components/ResourceEditorDrawer.svelte b/frontend/src/lib/components/ResourceEditorDrawer.svelte
index 16d67fd7ca..4675d02455 100644
--- a/frontend/src/lib/components/ResourceEditorDrawer.svelte
+++ b/frontend/src/lib/components/ResourceEditorDrawer.svelte
@@ -145,11 +145,10 @@
{#snippet editorBody()}
-
+
{#key `${path ?? ''}#${editorGeneration}`}
{#await import('./ResourceEditor.svelte')}
diff --git a/frontend/src/lib/components/sessions/PreviewTabHost.svelte b/frontend/src/lib/components/sessions/PreviewTabHost.svelte
index 09f11a5d2b..2005e49e82 100644
--- a/frontend/src/lib/components/sessions/PreviewTabHost.svelte
+++ b/frontend/src/lib/components/sessions/PreviewTabHost.svelte
@@ -207,9 +207,9 @@
: undefined
)
- // Follow a rename: the editor stays mounted and keeps editing the item, but the
- // tab, its label, the chat's ACTIVE PREVIEW and the draft key all address it by
- // path — so they have to move with it, or they name an item that no longer exists.
+ // Follow a rename: the tab, its label, the chat's ACTIVE PREVIEW and the draft
+ // key all address the item by path, so they have to move with it or they name an
+ // item that no longer exists.
const retargetTo = $derived(
slot.kind === 'entity' && runtime
? (kind: EntityEditorKind, newPath: string, fromPath: string, fromWs: string) => {
diff --git a/frontend/src/lib/components/sessions/ScheduleEditorView.svelte b/frontend/src/lib/components/sessions/ScheduleEditorView.svelte
index 41ee6de9de..43450dd9d0 100644
--- a/frontend/src/lib/components/sessions/ScheduleEditorView.svelte
+++ b/frontend/src/lib/components/sessions/ScheduleEditorView.svelte
@@ -61,11 +61,10 @@
live editor would leave the previous schedule's load to finish into the new
one's form and deployed baseline. -->
{#key `${path}#${generation}`}
-
+