Overview
The eligibility system helps you declaratively check if presentations should be shown based on complex conditions like time ranges, user segments, app versions, feature flags, and more. Instead of writing nested if/else statements, you composeEligibility conditions that are evaluated by EligibilityRules.
Dynamic eligibility from JSON
Most commonly, eligibility conditions come from payload metadata stored as JSON and can be updated in real-time without releasing a new app version. Typical workflow:- Store eligibility conditions in Firebase Remote Config or your backend API
- Fetch JSON payloads with embedded eligibility metadata
- Extractors pull conditions from metadata
- Resolver evaluates conditions against runtime context
- Update eligibility rules remotely without app updates
Basic condition JSON
Simple eligibility condition in payload metadata:Nested condition JSON
Complex eligibility with multiple conditions:When eligibility is in Firebase Remote Config, you can update targeting rules,
time ranges, and conditions in real-time across all users without deploying a
new app version.
Quick example
Built-in conditions
TimeRangeEligibility
Show only during specific time periods:AnySegmentEligibility
User must belong to at least one segment:SetMembershipEligibility
Value must be in allowed set:BooleanFlagEligibility
Boolean flag must match:NumericComparisonEligibility
Numeric comparisons:lessThan- Less thanlessThanOrEqual- Less than or equalequal- EqualgreaterThanOrEqual- Greater than or equalgreaterThan- Greater thannotEqual- Not equal
StringMatchEligibility
Regex pattern matching:Combining conditions
AllOfEligibility (AND)
ALL conditions must pass:AnyOfEligibility (OR)
At least ONE condition must pass:NotEligibility (NOT)
Invert condition:Complex example
Combine conditions for sophisticated targeting:Extractors
Extractors pull eligibility conditions from your payload metadata JSON. This is how you convert JSON from Firebase Remote Config or APIs into typedEligibility objects.
Basic extractor
Extract simple conditions from metadata:Nested extractor
Extract complex nested conditions:Using in guards
Integrate eligibility checks in your guards:Get ineligible condition
Find out WHY something is ineligible:Production example
Hereβs how a production app uses eligibility:Create custom conditions
Define your own eligibility conditions:Next steps
Guards
Use eligibility in guards
Production example
See real-world usage