Feature Flags Rust
PostHogOfficialCreated by PostHog
- Skill
- Tool integration
- Data and AI
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides guidance and best practices for implementing PostHog feature flags within Rust-based applications. It emphasizes server-side evaluation for performance and consistency, while providing architectural patterns to keep flag logic clean and maintainable. The skill also covers integration with PostHog MCP tools to manage flag lifecycles directly from your development environment.
What it does
- Provides patterns for integrating PostHog feature flags into Rust codebases.
- Offers best practices for flag naming, targeting, and lifecycle management.
- Supports server-side flag evaluation to minimize UI flicker and latency.
- Facilitates management of feature flags via PostHog MCP tools.
- Encourages clean code by wrapping flag checks in reusable functions.
When to use it
- When you need to perform canary releases or feature rollouts in a Rust application.
- When you want to run A/B tests or experiments on server-side logic.
- When you need to manage feature flags programmatically using MCP tools.
- When you want to ensure consistent user experiences across sessions by identifying users correctly.
Advantages
- Reduces code clutter by promoting centralized flag check functions.
- Improves performance through server-side local evaluation.
- Enhances maintainability with clear naming conventions and structured flag usage.
- Enables direct flag management from the development environment via MCP.
Usage examples
- “How do I implement a boolean feature flag in my Rust service?”
- The agent will provide a code pattern for checking a flag key and executing conditional logic, while advising on the use of environment variables for configuration.
- “Can you help me manage my PostHog feature flags using MCP?”
- The agent will check for a connected PostHog MCP server and guide you through using available tools to list, update, or create flags without leaving your IDE.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/posthog/feature-flags-rust/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip feature-flags-rust.zip -d .agents/skills
Documentation by PostHog
PostHog feature flags for Rust
This skill helps you add PostHog feature flags to Rust applications.
Reference files
references/rust.md- Rust feature flags installation - docsreferences/adding-feature-flag-code.md- Adding feature flag code - docsreferences/best-practices.md- Feature flag best practices - docs
Consult the documentation for API details and framework-specific patterns.
Key principles
Environment variables: Always use environment variables for PostHog keys. Never hardcode them.
Minimal changes: Add feature flag code alongside existing logic. Don't replace or restructure existing code.
Boolean flags first: Default to boolean flag checks unless the user specifically asks for multivariate flags.
Server-side when possible: Prefer server-side flag evaluation to avoid UI flicker.
PostHog MCP tools
Check if a PostHog MCP server is connected. If available, look for tools related to feature flag management (creating, listing, updating, deleting flags). Use these tools to manage flags directly in PostHog rather than requiring the user to do it manually in the dashboard.
Framework guidelines
No specific framework guidelines.
Files
- ATTRIBUTION.mdAdded by AutoGineer954 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md1.3 KiB
- references/adding-feature-flag-code.md108.7 KiB
- references/best-practices.md7.9 KiB
- references/rust.md4.3 KiB
references/rust.md
Rust feature flags installation - Docs
Install the posthog-rs crate by adding it to your Cargo.toml.
Cargo.toml
PostHog AI
[dependencies]
posthog-rs = "0.3.5"Next, set up the client with your PostHog project key.
Rust
PostHog AI
let client = posthog_rs::client(env!("<ph_project_token>"));Blocking client
Our Rust SDK supports both blocking and async clients. The async client is the default and is recommended for most use cases.
If you need to use a synchronous client instead – like we do in our CLI –, you can opt into it by disabling the asynchronous feature on your Cargo.toml file.
toml
PostHog AI
[dependencies]
posthog-rs = { version = "0.3.5", default-features = false }In blocking mode, calls to capture and related methods will block until the PostHog event capture API returns – generally this is on the order of tens of milliseconds, but you may want to thread::spawn a background thread when you send an event.
Using feature flags
Boolean feature flags
Rust
PostHog AI
let is_enabled = client.is_feature_enabled(
"flag-key".to_string(),
"distinct_id_of_your_user".to_string(),
None, // groups
None, // person_properties
None, // group_properties
).await.unwrap();
if is_enabled {
// Do something differently for this user
}Multivariate feature flags
Rust
PostHog AI
use posthog_rs::FlagValue;
match client.get_feature_flag(
"flag-key".to_string(),
"distinct_id_of_your_user".to_string(),
None, None, None
).await.unwrap() {
Some(FlagValue::String(variant)) => {
if variant == "variant-key" {
// Do something for this variant
}
}
Some(FlagValue::Boolean(enabled)) => {
// Handle boolean flag
}
None => {
// Flag not found or disabled
}
}Fetching all flags
Rust
PostHog AI
let (flags, payloads) = client.get_feature_flags(
"distinct_id_of_your_user".to_string(),
None, None, None
).await.unwrap();
for (key, value) in flags {
println!("Flag {}: {:?}", key, value);
}Feature flag payloads
Rust
PostHog AI
let payload = client.get_feature_flag_payload(
"flag-key".to_string(),
"distinct_id_of_your_user".to_string()
).await.unwrap();
if let Some(data) = payload {
println!("Payload: {}", data);
}With person properties
Rust
PostHog AI
use std::collections::HashMap;
use serde_json::json;
let mut person_props = HashMap::new();
person_props.insert("plan".to_string(), json!("enterprise"));
person_props.insert("country".to_string(), json!("US"));
let flag = client.get_feature_flag(
"premium-feature".to_string(),
"distinct_id_of_your_user".to_string(),
None,
Some(person_props),
None
).await.unwrap();With groups
For B2B applications with group-based flags:
Rust
PostHog AI
use std::collections::HashMap;
use serde_json::json;
let mut groups = HashMap::new();
groups.insert("company".to_string(), "company-123".to_string());
let mut group_props = HashMap::new();
let mut company_props = HashMap::new();
company_props.insert("size".to_string(), json!(500));
group_props.insert("company".to_string(), company_props);
let flag = client.get_feature_flag(
"b2b-feature".to_string(),
"distinct_id_of_your_user".to_string(),
Some(groups),
None,
Some(group_props)
).await.unwrap();Now that you're evaluating flags, continue with the resources below to learn what else Feature Flags enables within the PostHog platform.
| Resource | Description |
|---|---|
| Creating a feature flag | How to create a feature flag in PostHog |
| Adding feature flag code | How to check flags in your code for all platforms |
| Framework-specific guides | Setup guides for React Native, Next.js, Flutter, and other frameworks |
| How to do a phased rollout | Gradually roll out features to minimize risk |
| More tutorials | Other real-world examples and use cases |
Community questions
Ask a question
Was this page useful?
HelpfulCould be better
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an MCP server
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- PostHog
- Publisher
- PostHog (Official)
- Source
- PostHog/skills · skills/posthog/feature-flags/skills/rust · commit a5d30e7
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Also distributed in
- PostHog/skills
AutoGineer is not affiliated with or endorsed by PostHog.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download feature-flags-rust.zip