Skip to main content

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 compose Eligibility conditions that are evaluated by EligibilityRules.
The eligibility system is optional but recommended for complex targeting logic. You can still use manual checks in guards if you prefer.

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:
  1. Store eligibility conditions in Firebase Remote Config or your backend API
  2. Fetch JSON payloads with embedded eligibility metadata
  3. Extractors pull conditions from metadata
  4. Resolver evaluates conditions against runtime context
  5. 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.
See Firebase Remote Config integration β†’

Quick example

Built-in conditions

TimeRangeEligibility

Show only during specific time periods:

AnySegmentEligibility

User must belong to at least one segment:
Context must provide:

SetMembershipEligibility

Value must be in allowed set:

BooleanFlagEligibility

Boolean flag must match:

NumericComparisonEligibility

Numeric comparisons:
Comparison operators:
  • lessThan - Less than
  • lessThanOrEqual - Less than or equal
  • equal - Equal
  • greaterThanOrEqual - Greater than or equal
  • greaterThan - Greater than
  • notEqual - 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 typed Eligibility objects.

Basic extractor

Extract simple conditions from metadata:
Extracts from JSON:

Nested extractor

Extract complex nested conditions:
Extracts from JSON:
Extractors enable dynamic eligibility updates. Change the JSON in Firebase Remote Config, and all clients automatically get new targeting rules without an app update.

Using in guards

Integrate eligibility checks in your guards:

Get ineligible condition

Find out WHY something is ineligible:
See production usage ->

Production example

Here’s how a production app uses eligibility:
Full scheduling guard ->

Create custom conditions

Define your own eligibility conditions:

Next steps

Guards

Use eligibility in guards

Production example

See real-world usage