# add-feature-flag > Add PostHog feature flags for gradual rollouts, A/B tests, or beta features. Use when implementing feature toggles, experiments, or canary releases. - Author: Seth Davis - Repository: tech-with-seth/iridium - Version: 20260119233733 - Stars: 1 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/tech-with-seth/iridium - Web: https://mule.run/skillshub/@@tech-with-seth/iridium~add-feature-flag:20260119233733 --- --- name: add-feature-flag description: Add PostHog feature flags for gradual rollouts, A/B tests, or beta features. Use when implementing feature toggles, experiments, or canary releases. --- # Add Feature Flag ## When to Use - Gradual feature rollouts (canary releases) - A/B testing and experiments - Beta feature gating - Quick feature kill switches ## Server vs Client | Use Server-Side When | Use Client-Side When | |---------------------|---------------------| | SEO-critical content | UI-only changes | | No flicker required | Flicker acceptable | | Performance critical | Simpler implementation | ## Server-Side (Flicker-Free) ```typescript import type { Route } from './+types/product-page'; import { isFeatureEnabled } from '~/lib/posthog.server'; export async function loader({ request }: Route.LoaderArgs) { const showNewLayout = await isFeatureEnabled('new-product-layout', request); return { featureFlags: { showNewLayout }, }; } ``` ```tsx export default function ProductPage({ loaderData }: Route.ComponentProps) { const { featureFlags } = loaderData; return featureFlags.showNewLayout ? : ; } ``` ## Client-Side (Simpler) ```tsx import { usePostHog } from 'posthog-js/react'; import { useEffect, useState } from 'react'; export default function FeatureComponent() { const posthog = usePostHog(); const [showFeature, setShowFeature] = useState(false); useEffect(() => { if (posthog) { setShowFeature(posthog.isFeatureEnabled('new-feature') ?? false); } }, [posthog]); return showFeature ? : ; } ``` ## Naming ```tsx // Good 'new-checkout-flow' 'ai-assistant-beta' // Bad 'flag-123' 'test' ``` ## Checklist 1. [ ] Choose server or client-side based on requirements 2. [ ] Use descriptive flag name 3. [ ] Add TODO comment for cleanup date 4. [ ] Track conversion events if A/B testing ## Full Reference See `.github/instructions/feature-flags.instructions.md` for: - A/B testing with variants - Gradual rollout strategy - Debug locally - Tracking conversion events