diff --git a/packages/frontend/src/components/MkHorizontalSwipe.vue b/packages/frontend/src/components/MkHorizontalSwipe.vue
index 55bb4b13b0..67d32c505a 100644
--- a/packages/frontend/src/components/MkHorizontalSwipe.vue
+++ b/packages/frontend/src/components/MkHorizontalSwipe.vue
@@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
 <template>
 <div
 	ref="rootEl"
-	:class="[$style.transitionRoot]"
+	:class="[$style.transitionRoot, { [$style.enableAnimation]: shouldAnimate }]"
 	@touchstart.passive="touchStart"
 	@touchmove.passive="touchMove"
 	@touchend.passive="touchEnd"
@@ -44,6 +44,8 @@ const emit = defineEmits<{
 	(ev: 'swiped', newKey: string, direction: 'left' | 'right'): void;
 }>();
 
+const shouldAnimate = computed(() => defaultStore.reactiveState.enableHorizontalSwipe.value || defaultStore.reactiveState.animation.value);
+
 // ▼ しきい値 ▼ //
 
 // スワイプと判定される最小の距離
@@ -188,7 +190,9 @@ watch(tabModel, (newTab, oldTab) => {
 .transitionChildren {
 	grid-area: 1 / 1 / 2 / 2;
 	transform: translateX(var(--swipe));
+}
 
+.enableAnimation .transitionChildren {
 	&.swipeAnimation_enterActive,
 	&.swipeAnimation_leaveActive {
 		transition: transform .3s cubic-bezier(0.65, 0.05, 0.36, 1);