본문으로 건너뛰기
cccskills
무료GitHub에 공개

firebase-remote-config

Use when implementing feature flags, running A/B tests, setting parameter defaults, fetching/activating config, or enabling real-time config updates.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Firebase
설치 방법 보기

포함된 파일(1)

  • SKILL.md4.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Firebase Remote Config Skill

This skill defines how to correctly use Firebase Remote Config in Flutter applications.

When to Use

Use this skill when:

  • Implementing feature flags or remote configuration without deploying app updates.
  • Managing parameter defaults and fetching remote values.
  • Implementing real-time config updates for instant changes.
  • Setting up A/B testing or conditional targeting for user segments.

1. Setup and Configuration

flutter pub add firebase_remote_config
flutter pub add firebase_analytics  # required for conditional targeting of app instances
import 'package:firebase_remote_config/firebase_remote_config.dart';

final remoteConfig = FirebaseRemoteConfig.instance;
  • Enable Google Analytics in the Firebase project for user property and audience targeting.
  • Ensure the Remote Config REST API is not disabled — the SDK depends on it.
  • For macOS, enable Keychain Sharing in Xcode.

Configure settings:

await remoteConfig.setConfigSettings(RemoteConfigSettings(
  fetchTimeout: const Duration(minutes: 1),
  minimumFetchInterval: const Duration(hours: 1),
));

2. Parameter Management

Set in-app defaults (ensures the app behaves as intended before connecting to the backend):

await remoteConfig.setDefaults(const {
  "feature_new_onboarding": false,
  "max_retry_attempts": 3,
  "welcome_message": "Hello, world!",
  "promo_discount_pct": 0.0,
});

Read values with type-specific getters:

final showNewOnboarding = remoteConfig.getBool("feature_new_onboarding");
final maxRetries = remoteConfig.getInt("max_retry_attempts");
final welcomeMsg = remoteConfig.getString("welcome_message");
final discount = remoteConfig.getDouble("promo_discount_pct");
  • Never store confidential data in Remote Config keys or values — they can be accessed by end users.
  • Define parameters with the same names in the Firebase console as those in the app.
  • Group related parameters with common prefixes (e.g., login_timeout, login_attempts_max).

3. Fetching and Activating

await remoteConfig.fetchAndActivate();
  • Use fetchAndActivate() to fetch and apply values in a single call.
  • Alternatively, call fetch() then activate() separately to control when values take effect.
  • Activate fetched values at appropriate times (e.g., app start) for a smooth user experience.
  • Check remoteConfig.lastFetchStatus to determine if the fetch was successful, failed, or throttled.
  • Handle fetch failures gracefully — default values are used automatically when fetch fails.

4. Real-time Updates

remoteConfig.onConfigUpdated.listen((event) async {
  await remoteConfig.activate();
  // event.updatedKeys contains the changed parameter names
  if (event.updatedKeys.contains("feature_new_onboarding")) {
    // Refresh UI based on the new value
  }
});
  • Real-time Remote Config is not available for Web.
  • Update UI state when new configuration values are activated.
  • Ensure real-time updates do not disrupt the user experience mid-flow.

5. Throttling and Performance

  • Fetch calls are throttled if an app fetches too frequently.
  • Default minimum fetch interval in production: 12 hours.
  • For development, use a shorter interval — but only in debug builds:
await remoteConfig.setConfigSettings(RemoteConfigSettings(
  fetchTimeout: const Duration(minutes: 1),
  minimumFetchInterval: const Duration(minutes: 5),
));
  • Be mindful of service-side quota limits with a large user base.

6. Testing and Debugging

  • Use conditional values in the Firebase console to test configurations without new app deployments.
  • Implement A/B testing with different parameter values for different user segments.
  • Test the app with both default and remote values.
  • Verify graceful handling of configuration changes at runtime.
  • Test offline behavior to ensure proper fallback to defaults.

References

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Use when working on accessibility, a11y, WCAG, ARIA, screen readers, keyboard nav, focus order, contrast, alt text, captions, reduced motion, or target sizes; not language/culture/device (see inclusive-design).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

evanca/flutter-ai-rules6532026년 10월 10일 업데이트

Use when creating a feature, designing folder structure, adding repositories/services/view models, wiring dependency injection, or deciding which layer owns logic.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

evanca/flutter-ai-rules6532026년 10월 10일 업데이트

bloc

무료

Use when creating a Cubit or Bloc, modeling state with sealed classes or status enums, wiring BlocBuilder/BlocListener/BlocProvider, writing bloc tests, or choosing between Cubit and Bloc.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

evanca/flutter-ai-rules6532026년 10월 10일 업데이트

Use when asked to review a PR, MR, branch, or diff, audit changed files, or check code quality.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

evanca/flutter-ai-rules6532026년 10월 10일 업데이트

Use when writing switch statements, refactoring if-else chains, creating data classes, choosing records vs classes, destructuring values, or modernizing pre-Dart-3 code.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

evanca/flutter-ai-rules6532026년 10월 10일 업데이트

Use when building AI agents in Dart, implementing Genkit flows or tools, integrating LLMs into Dart or Flutter applications, or using Genkit Dart plugins.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

evanca/flutter-ai-rules6532026년 10월 10일 업데이트

evanca의 스킬 모두 보기

이 스킬의 문제 신고