diff --git a/package.json b/package.json
index 89e0d03017..a7ea09c351 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "misskey",
   "author": "syuilo <i@syuilo.com>",
-  "version": "0.0.1410",
+  "version": "0.0.1413",
   "license": "MIT",
   "description": "A miniblog-based SNS",
   "bugs": "https://github.com/syuilo/misskey/issues",
diff --git a/src/web/app/desktop/tags/timeline-post.tag b/src/web/app/desktop/tags/timeline-post.tag
index 3961d5a5c7..4c07be6c81 100644
--- a/src/web/app/desktop/tags/timeline-post.tag
+++ b/src/web/app/desktop/tags/timeline-post.tag
@@ -364,24 +364,29 @@
 			}
 		};
 
-		this.capture = () => {
+		this.onStreamConnected = () => {
+			this.capture();
+		};
+
+		this.capture = withHandler => {
 			this.stream.send({
 				type: 'capture',
 				id: this.post.id
 			});
-			this.stream.on('post-updated', this.onStreamPostUpdated);
+			if (withHandler) this.stream.on('post-updated', this.onStreamPostUpdated);
 		};
 
-		this.decapture = () => {
+		this.decapture = withHandler => {
 			this.stream.send({
 				type: 'decapture',
 				id: this.post.id
 			});
-			this.stream.off('post-updated', this.onStreamPostUpdated);
+			if (withHandler) this.stream.off('post-updated', this.onStreamPostUpdated);
 		};
 
 		this.on('mount', () => {
-			this.capture();
+			this.capture(true);
+			this.stream.on('_connected_', this.onStreamConnected);
 
 			if (this.p.text) {
 				const tokens = this.p.ast;
@@ -404,7 +409,8 @@
 		});
 
 		this.on('unmount', () => {
-			this.decapture();
+			this.decapture(true);
+			this.stream.off('_connected_', this.onStreamConnected);
 		});
 
 		this.reply = () => {
diff --git a/src/web/app/mobile/tags/timeline-post.tag b/src/web/app/mobile/tags/timeline-post.tag
index 855d7ff911..6af909ba96 100644
--- a/src/web/app/mobile/tags/timeline-post.tag
+++ b/src/web/app/mobile/tags/timeline-post.tag
@@ -340,24 +340,29 @@
 			}
 		};
 
-		this.capture = () => {
+		this.onStreamConnected = () => {
+			this.capture();
+		};
+
+		this.capture = withHandler => {
 			this.stream.send({
 				type: 'capture',
 				id: this.post.id
 			});
-			this.stream.on('post-updated', this.onStreamPostUpdated);
+			if (withHandler) this.stream.on('post-updated', this.onStreamPostUpdated);
 		};
 
-		this.decapture = () => {
+		this.decapture = withHandler => {
 			this.stream.send({
 				type: 'decapture',
 				id: this.post.id
 			});
-			this.stream.off('post-updated', this.onStreamPostUpdated);
+			if (withHandler) this.stream.off('post-updated', this.onStreamPostUpdated);
 		};
 
 		this.on('mount', () => {
-			this.capture();
+			this.capture(true);
+			this.stream.on('_connected_', this.onStreamConnected);
 
 			if (this.p.text) {
 				const tokens = this.p.ast;
@@ -380,7 +385,8 @@
 		});
 
 		this.on('unmount', () => {
-			this.decapture();
+			this.decapture(true);
+			this.stream.off('_connected_', this.onStreamConnected);
 		});
 
 		this.reply = () => {