diff --git a/src/client/app/desktop/views/components/follow-button.vue b/src/client/app/desktop/views/components/follow-button.vue
index 4d3d61dfe..11291a2f1 100644
--- a/src/client/app/desktop/views/components/follow-button.vue
+++ b/src/client/app/desktop/views/components/follow-button.vue
@@ -40,8 +40,8 @@ export default Vue.extend({
 
 	mounted() {
 		this.connection = (this as any).os.stream.useSharedConnection('main');
-		this.connection.on('follow', this.onFollow);
-		this.connection.on('unfollow', this.onUnfollow);
+		this.connection.on('follow', this.onFollowChange);
+		this.connection.on('unfollow', this.onFollowChange);
 	},
 
 	beforeDestroy() {
@@ -49,17 +49,11 @@ export default Vue.extend({
 	},
 
 	methods: {
-		onFollow(user) {
-			if (user.id == this.u.id) {
-				this.u.isFollowing = user.isFollowing;
-				this.u.hasPendingFollowRequestFromYou = user.hasPendingFollowRequestFromYou;
-			}
-		},
-
-		onUnfollow(user) {
+		onFollowChange(user) {
 			if (user.id == this.u.id) {
 				this.u.isFollowing = user.isFollowing;
 				this.u.hasPendingFollowRequestFromYou = user.hasPendingFollowRequestFromYou;
+				this.$forceUpdate();
 			}
 		},
 
diff --git a/src/client/app/mobile/views/components/follow-button.vue b/src/client/app/mobile/views/components/follow-button.vue
index 3c8b2f98e..1bf08802b 100644
--- a/src/client/app/mobile/views/components/follow-button.vue
+++ b/src/client/app/mobile/views/components/follow-button.vue
@@ -17,6 +17,7 @@
 
 <script lang="ts">
 import Vue from 'vue';
+
 export default Vue.extend({
 	props: {
 		user: {
@@ -24,6 +25,7 @@ export default Vue.extend({
 			required: true
 		}
 	},
+
 	data() {
 		return {
 			u: this.user,
@@ -31,28 +33,24 @@ export default Vue.extend({
 			connection: null
 		};
 	},
+
 	mounted() {
 		this.connection = (this as any).os.stream.useSharedConnection('main');
 
-		this.connection.on('follow', this.onFollow);
-		this.connection.on('unfollow', this.onUnfollow);
+		this.connection.on('follow', this.onFollowChange);
+		this.connection.on('unfollow', this.onFollowChange);
 	},
+
 	beforeDestroy() {
 		this.connection.dispose();
 	},
+
 	methods: {
-
-		onFollow(user) {
-			if (user.id == this.u.id) {
-				this.u.isFollowing = user.isFollowing;
-				this.u.hasPendingFollowRequestFromYou = user.hasPendingFollowRequestFromYou;
-			}
-		},
-
-		onUnfollow(user) {
+		onFollowChange(user) {
 			if (user.id == this.u.id) {
 				this.u.isFollowing = user.isFollowing;
 				this.u.hasPendingFollowRequestFromYou = user.hasPendingFollowRequestFromYou;
+				this.$forceUpdate();
 			}
 		},
 
@@ -90,8 +88,6 @@ export default Vue.extend({
 </script>
 
 <style lang="stylus" scoped>
-
-
 .mk-follow-button
 	display block
 	user-select none
diff --git a/src/services/blocking/create.ts b/src/services/blocking/create.ts
index 11b2954af..2998cdd78 100644
--- a/src/services/blocking/create.ts
+++ b/src/services/blocking/create.ts
@@ -60,7 +60,9 @@ async function cancelRequest(follower: IUser, followee: IUser) {
 	}
 
 	if (isLocalUser(follower)) {
-		packUser(followee, follower).then(packed => publishMainStream(follower._id, 'unfollow', packed));
+		packUser(followee, follower, {
+			detail: true
+		}).then(packed => publishMainStream(follower._id, 'unfollow', packed));
 	}
 
 	// リモートにフォローリクエストをしていたらUndoFollow送信
@@ -110,7 +112,9 @@ async function unFollow(follower: IUser, followee: IUser) {
 
 	// Publish unfollow event
 	if (isLocalUser(follower)) {
-		packUser(followee, follower).then(packed => publishMainStream(follower._id, 'unfollow', packed));
+		packUser(followee, follower, {
+			detail: true
+		}).then(packed => publishMainStream(follower._id, 'unfollow', packed));
 	}
 
 	// リモートにフォローをしていたらUndoFollow送信
diff --git a/src/services/following/create.ts b/src/services/following/create.ts
index f35033a1c..46b818f8b 100644
--- a/src/services/following/create.ts
+++ b/src/services/following/create.ts
@@ -87,7 +87,9 @@ export default async function(follower: IUser, followee: IUser, requestId?: stri
 
 	// Publish follow event
 	if (isLocalUser(follower)) {
-		packUser(followee, follower).then(packed => publishMainStream(follower._id, 'follow', packed));
+		packUser(followee, follower, {
+			detail: true
+		}).then(packed => publishMainStream(follower._id, 'follow', packed));
 	}
 
 	// Publish followed event
diff --git a/src/services/following/delete.ts b/src/services/following/delete.ts
index 9f82af2bf..dce178a92 100644
--- a/src/services/following/delete.ts
+++ b/src/services/following/delete.ts
@@ -42,7 +42,9 @@ export default async function(follower: IUser, followee: IUser) {
 
 	// Publish unfollow event
 	if (isLocalUser(follower)) {
-		packUser(followee, follower).then(packed => publishMainStream(follower._id, 'unfollow', packed));
+		packUser(followee, follower, {
+			detail: true
+		}).then(packed => publishMainStream(follower._id, 'unfollow', packed));
 	}
 
 	if (isLocalUser(follower) && isRemoteUser(followee)) {
diff --git a/src/services/following/requests/accept.ts b/src/services/following/requests/accept.ts
index 32453c74d..97cd733b2 100644
--- a/src/services/following/requests/accept.ts
+++ b/src/services/following/requests/accept.ts
@@ -70,5 +70,7 @@ export default async function(followee: IUser, follower: IUser) {
 		detail: true
 	}).then(packed => publishMainStream(followee._id, 'meUpdated', packed));
 
-	packUser(followee, follower).then(packed => publishMainStream(follower._id, 'follow', packed));
+	packUser(followee, follower, {
+		detail: true
+	}).then(packed => publishMainStream(follower._id, 'follow', packed));
 }
diff --git a/src/services/following/requests/reject.ts b/src/services/following/requests/reject.ts
index 73dbbb92e..694663f23 100644
--- a/src/services/following/requests/reject.ts
+++ b/src/services/following/requests/reject.ts
@@ -28,5 +28,7 @@ export default async function(followee: IUser, follower: IUser) {
 		}
 	});
 
-	packUser(followee, follower).then(packed => publishMainStream(follower._id, 'unfollow', packed));
+	packUser(followee, follower, {
+		detail: true
+	}).then(packed => publishMainStream(follower._id, 'unfollow', packed));
 }