New features should be gated behind a feature flag.
-
Register the flag in
src/sentry/features/temporary.py:manager.add("organizations:my-feature", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=True)Use
api_expose=Trueif the frontend needs to check the flag. UseProjectFeatureand aprojects:prefix for project-scoped flags. -
Python check:
if features.has("organizations:my-feature", organization, actor=user): -
Frontend check (requires
api_expose=True):
organization.features.includes('my-feature');
-
Tests:
with self.feature("organizations:my-feature"): ... -
Rollout: FlagPole YAML config lives in the
sentry-options-automatorrepo, not here. -
Removal: once the rollout is finished, the flag comes out in a fixed three-PR order — see the
remove-option-or-flagskill.
See https://develop.sentry.dev/feature-flags/ for full docs.