diff --git a/locales/en.yml b/locales/en.yml
index 8b54a6616e..778d54076c 100644
--- a/locales/en.yml
+++ b/locales/en.yml
@@ -47,6 +47,7 @@ common:
   ok: "OK"
   update-available: "A new version of Misskey is now available({newer}, the current version is {current}). Reload the page to apply updates."
   my-token-regenerated: "Your token has been renewed so you will be signed out."
+  i-like-sushi: "I like sushi rather than pudding"
   widgets:
     analog-clock: "Analog clock"
     profile: "Profile"
diff --git a/locales/ja.yml b/locales/ja.yml
index 29decefe68..f2a85eb4e6 100644
--- a/locales/ja.yml
+++ b/locales/ja.yml
@@ -52,6 +52,7 @@ common:
   ok: "わかった"
   update-available: "Misskeyの新しいバージョンがあります({newer}。現在{current}を利用中)。ページを再度読み込みすると更新が適用されます。"
   my-token-regenerated: "あなたのトークンが更新されたのでサインアウトします。"
+  i-like-sushi: "私は(プリンよりむしろ)寿司が好き"
 
   widgets:
     analog-clock: "アナログ時計"
diff --git a/src/client/app/common/views/components/reaction-icon.vue b/src/client/app/common/views/components/reaction-icon.vue
index 7d24f4f9e9..2d5391a21e 100644
--- a/src/client/app/common/views/components/reaction-icon.vue
+++ b/src/client/app/common/views/components/reaction-icon.vue
@@ -8,7 +8,10 @@
 	<img v-if="reaction == 'congrats'" src="/assets/reactions/congrats.png" alt="%i18n:common.reactions.congrats%">
 	<img v-if="reaction == 'angry'" src="/assets/reactions/angry.png" alt="%i18n:common.reactions.angry%">
 	<img v-if="reaction == 'confused'" src="/assets/reactions/confused.png" alt="%i18n:common.reactions.confused%">
-	<img v-if="reaction == 'pudding'" src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%">
+	<template v-if="reaction == 'pudding'">
+		<img v-if="$store.getters.isSignedIn && $store.state.settings.iLikeSushi" src="/assets/reactions/sushi.png" alt="%i18n:common.reactions.pudding%">
+		<img v-else src="/assets/reactions/pudding.png" alt="%i18n:common.reactions.pudding%">
+	</template>
 </span>
 </template>
 
diff --git a/src/client/app/desktop/views/components/settings.vue b/src/client/app/desktop/views/components/settings.vue
index c660c2869a..536d270dce 100644
--- a/src/client/app/desktop/views/components/settings.vue
+++ b/src/client/app/desktop/views/components/settings.vue
@@ -45,6 +45,7 @@
 				<mk-switch v-model="darkmode" text="%i18n:@dark-mode%"/>
 				<mk-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons" text="%i18n:@circle-icons%"/>
 				<mk-switch v-model="$store.state.settings.gradientWindowHeader" @change="onChangeGradientWindowHeader" text="%i18n:@gradient-window-header%"/>
+				<mk-switch v-model="$store.state.settings.iLikeSushi" @change="onChangeILikeSushi" text="%i18n:common.i-like-sushi%"/>
 			</div>
 			<mk-switch v-model="$store.state.settings.showPostFormOnTopOfTl" @change="onChangeShowPostFormOnTopOfTl" text="%i18n:@post-form-on-timeline%"/>
 			<mk-switch v-model="$store.state.settings.showReplyTarget" @change="onChangeShowReplyTarget" text="%i18n:@show-reply-target%"/>
@@ -362,6 +363,12 @@ export default Vue.extend({
 				value: v
 			});
 		},
+		onChangeILikeSushi(v) {
+			this.$store.dispatch('settings/set', {
+				key: 'iLikeSushi',
+				value: v
+			});
+		},
 		onChangeGradientWindowHeader(v) {
 			this.$store.dispatch('settings/set', {
 				key: 'gradientWindowHeader',
diff --git a/src/client/app/desktop/views/pages/welcome.vue b/src/client/app/desktop/views/pages/welcome.vue
index 70fa0123af..029e44e27c 100644
--- a/src/client/app/desktop/views/pages/welcome.vue
+++ b/src/client/app/desktop/views/pages/welcome.vue
@@ -13,7 +13,7 @@
 					<h1 v-else><img :src="$store.state.device.darkmode ? 'assets/title.dark.svg' : 'assets/title.light.svg'" alt="Misskey"></h1>
 					<p class="powerd-by" v-if="name">powerd by <b>Misskey</b></p>
 					<p class="desc" v-html="description || '%i18n:common.about%'"></p>
-					<a ref="signup" @click="signup">%i18n:@signup%</a>
+					<a ref="signup" @click="signup">📦 %i18n:@signup%</a>
 				</div>
 				<div class="login">
 					<mk-signin/>
diff --git a/src/client/app/mobile/views/pages/settings.vue b/src/client/app/mobile/views/pages/settings.vue
index 1c5a43ede4..34482fccba 100644
--- a/src/client/app/mobile/views/pages/settings.vue
+++ b/src/client/app/mobile/views/pages/settings.vue
@@ -12,6 +12,7 @@
 
 				<ui-switch v-model="darkmode">%i18n:@dark-mode%</ui-switch>
 				<ui-switch v-model="$store.state.settings.circleIcons" @change="onChangeCircleIcons">%i18n:@circle-icons%</ui-switch>
+				<ui-switch v-model="$store.state.settings.iLikeSushi" @change="onChangeILikeSushi">%i18n:common.i-like-sushi%</ui-switch>
 
 				<div>
 					<div>%i18n:@timeline%</div>
@@ -174,6 +175,13 @@ export default Vue.extend({
 			});
 		},
 
+		onChangeILikeSushi(v) {
+			this.$store.dispatch('settings/set', {
+				key: 'iLikeSushi',
+				value: v
+			});
+		},
+
 		onChangeShowReplyTarget(v) {
 			this.$store.dispatch('settings/set', {
 				key: 'showReplyTarget',
diff --git a/src/client/app/store.ts b/src/client/app/store.ts
index 267c804fbd..1bc39ae66d 100644
--- a/src/client/app/store.ts
+++ b/src/client/app/store.ts
@@ -18,7 +18,8 @@ const defaultSettings = {
 	showRenotedMyNotes: true,
 	loadRemoteMedia: true,
 	disableViaMobile: false,
-	memo: null
+	memo: null,
+	iLikeSushi: false
 };
 
 const defaultDeviceSettings = {
diff --git a/src/client/assets/reactions/sushi.png b/src/client/assets/reactions/sushi.png
new file mode 100644
index 0000000000..c30d44eb15
Binary files /dev/null and b/src/client/assets/reactions/sushi.png differ