firebase-remote-config
Use when implementing feature flags, running A/B tests, setting parameter defaults, fetching/activating config, or enabling real-time config updates.
Works with
---
name: firebase-remote-config
description: Use when implementing feature flags, running A/B tests, setting parameter defaults, fetching/activating config, or enabling real-time config updates.
license: MIT
---
# 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
```
```dart
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:**
```dart
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):
```dart
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:**
```dart
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
```dart
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
```dart
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:
```dart
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
- [Firebase Remote Config Flutter documentation](https://firebase.google.com/docs/remote-config/get-started?platform=flutter)More Deployment & CI/CD skills
azure-enterprise-infra-planner
microsoft/azure-skills
Architect and provision enterprise Azure infrastructure from workload descriptions. For cloud architects and platform engineers planning networking, identity, security, compliance, and multi-resource topologies with WAF alignment. Generates Bicep or Terraform directly (no azd). WHEN: 'plan Azure infrastructure', 'architect Azure landing zone', 'design hub-spoke network', 'plan multi-region DR topology', 'set up VNets firewalls and private endpoints', 'subscription-scope Bicep deployment', 'Azure Backup for VM workloads'. PREFER azure-prepare FOR app-centric workflows.
azure-kubernetes-app-deploy
microsoft/azure-skills
Use when deploying an existing web application or API to an already-running Azure Kubernetes Service cluster. Detects the framework, generates a Dockerfile and Kubernetes manifests, validates against AKS Deployment Safeguards, and deploys with verification. WHEN: deploy app to AKS, deploy to existing AKS cluster, containerize app for Kubernetes, generate K8s manifests for Azure, set up CI/CD for AKS, my AKS deployment is failing safeguard checks, I have a Django/Express/Spring Boot app to run on AKS. DO NOT USE FOR: creating or provisioning an AKS cluster (use azure-kubernetes), assessing migration to AKS Automatic (use azure-kubernetes-automatic-readiness), or deploying to non-AKS targets like Web Apps, Container Apps, or Functions.
finetuning
microsoft/azure-skills
Fine-tune models on Microsoft Foundry using SFT (supervised), DPO (preference), or RFT (reinforcement with graders). Covers dataset preparation, training job submission, deployment, and evaluation. USE FOR: fine-tune, SFT, DPO, RFT, training data, grader, distillation, fine-tuned model, training job, large file upload, calibrate grader, deploy fine-tuned model, evaluate fine-tuned model. DO NOT USE FOR: general model deployment without fine-tuning (use deploy-model), agent creation (use agents), prompt optimization without training (use prompt-optimizer).

