diff --git a/src/compile/render-dom/wrappers/EachBlock.ts b/src/compile/render-dom/wrappers/EachBlock.ts
index c26d2a07b092..22515206c15d 100644
--- a/src/compile/render-dom/wrappers/EachBlock.ts
+++ b/src/compile/render-dom/wrappers/EachBlock.ts
@@ -462,7 +462,7 @@ export default class EachBlockWrapper extends Wrapper {
 				`;
 			} else {
 				destroy = deindent`
-					for (; #i < ${iterations}.length; #i += 1) {
+					for (${this.block.hasUpdateMethod ? `` : `#i = ${this.vars.each_block_value}.${length}`}; #i < ${iterations}.length; #i += 1) {
 						${iterations}[#i].d(1);
 					}
 					${iterations}.length = ${this.vars.each_block_value}.${length};
diff --git a/test/runtime/samples/each-block-index-only/_config.js b/test/runtime/samples/each-block-index-only/_config.js
new file mode 100644
index 000000000000..8250f94cf7b2
--- /dev/null
+++ b/test/runtime/samples/each-block-index-only/_config.js
@@ -0,0 +1,25 @@
+export default {
+	data: {
+		things: [0, 0, 0, 0, 0]
+	},
+
+	html: `
+		<p>0</p>
+		<p>1</p>
+		<p>2</p>
+		<p>3</p>
+		<p>4</p>
+	`,
+
+	test(assert, component, target) {
+		component.set({
+			things: [0, 0, 0]
+		});
+
+		assert.htmlEqual(target.innerHTML, `
+			<p>0</p>
+			<p>1</p>
+			<p>2</p>
+		`);
+	}
+};
diff --git a/test/runtime/samples/each-block-index-only/main.html b/test/runtime/samples/each-block-index-only/main.html
new file mode 100644
index 000000000000..83fb0e6b8ec6
--- /dev/null
+++ b/test/runtime/samples/each-block-index-only/main.html
@@ -0,0 +1,3 @@
+{#each things as _, i}
+	<p>{i}</p>
+{/each}