diff --git a/app/src/main/res/xml/remote_config_defaults.xml b/app/src/main/res/xml/remote_config_defaults.xml
index bbe22594..42475696 100644
--- a/app/src/main/res/xml/remote_config_defaults.xml
+++ b/app/src/main/res/xml/remote_config_defaults.xml
@@ -8,4 +8,8 @@
min_required_version_code
1
+
+ offline_cache_enabled
+ false
+
\ No newline at end of file
diff --git a/common/src/main/java/com/project200/common/constants/RemoteConfigKeys.kt b/common/src/main/java/com/project200/common/constants/RemoteConfigKeys.kt
index b1fd3ae5..6f40d7dd 100644
--- a/common/src/main/java/com/project200/common/constants/RemoteConfigKeys.kt
+++ b/common/src/main/java/com/project200/common/constants/RemoteConfigKeys.kt
@@ -3,4 +3,7 @@ package com.project200.common.constants
object RemoteConfigKeys {
const val LATEST_VERSION_CODE = "latest_version_code"
const val MIN_REQUIRED_VERSION_CODE = "min_required_version_code"
+
+ // 오프라인 캐시 경로 on/off. 문제 시 앱 배포 없이 기존 네트워크 경로로 되돌리는 수단
+ const val OFFLINE_CACHE_ENABLED = "offline_cache_enabled"
}
diff --git a/data/src/main/java/com/project200/data/datasource/FeatureFlagDataSource.kt b/data/src/main/java/com/project200/data/datasource/FeatureFlagDataSource.kt
new file mode 100644
index 00000000..d5a9fcd9
--- /dev/null
+++ b/data/src/main/java/com/project200/data/datasource/FeatureFlagDataSource.kt
@@ -0,0 +1,24 @@
+package com.project200.data.datasource
+
+import com.google.firebase.remoteconfig.FirebaseRemoteConfig
+import com.project200.common.constants.RemoteConfigKeys
+import javax.inject.Inject
+import javax.inject.Singleton
+
+/**
+ * Remote Config로 켜고 끄는 기능 플래그를 읽습니다.
+ *
+ * fetch는 앱 진입의 업데이트 확인(`AppUpdateRepositoryImpl.getUpdateInfo`)이 이미 수행합니다.
+ * 여기서는 활성화된 값만 읽습니다
+ *
+ * 진입 전이거나 fetch가 실패한 기기에서는 `remote_config_defaults.xml`의 기본값이 읽힙니다.
+ * 기본값이 곧 최악 상황의 동작이라 꺼짐으로 두었습니다
+ */
+@Singleton
+class FeatureFlagDataSource
+ @Inject
+ constructor(
+ private val firebaseRemoteConfig: FirebaseRemoteConfig,
+ ) {
+ fun isOfflineCacheEnabled(): Boolean = firebaseRemoteConfig.getBoolean(RemoteConfigKeys.OFFLINE_CACHE_ENABLED)
+ }