跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

firebase-remote-config

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

测试650skills/firebase-remote-config/SKILL.md

安装

把这段话发给 Claude Code、Codex 或 Cursor。智能体会先检查安全性,你确认后才安装。

读取 https://funcoding.ai/skills/evanca/flutter-ai-rules/firebase-remote-config/install.md ,按里面的步骤帮我安装这个 Skill。

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

相似的 Skill

skill-creator
anthropics/skills180k

skill-creator

Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.

测试

ponytail-audit
DietrichGebert/ponytail158k

ponytail-audit

Quality audit of a whole repo: bugs, security holes, what breaks under real load, risky code without tests, slow paths, and what to delete, merge or split. Ranked, each finding explained in plain English. One-shot report, changes nothing. Use for "audit this codebase", "review the whole repo", "find bloat", "what can I delete", /ponytail-audit.

测试

ponytail-audit
DietrichGebert/ponytail158k

ponytail-audit

Quality audit of the whole repo: bugs, security, real load, missing tests, speed, and what to delete. Most important first.

测试

ponytail-review
DietrichGebert/ponytail158k

ponytail-review

Quality review of a diff: bugs, security, real load, missing tests, speed, and what to delete. Each finding says what goes wrong and how to fix it.

测试

ci-cd-and-automation
addyosmani/agent-skills103k

ci-cd-and-automation

Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate quality gates, configure test runners in CI, or establish deployment strategies.

测试

idea-refine
addyosmani/agent-skills103k

idea-refine

Refines raw ideas into sharp, actionable concepts through structured divergent and convergent thinking. Use when an idea is still vague, when you need to stress-test assumptions before committing to a plan, or when you want to expand options before converging on one. Triggers on "ideate", "refine this idea", or "stress-test my plan".

测试