Skip to main content

Platform Features (Emergency Controls)

Platform features are global kill switches that override tenant-level feature access. Use them when a capability must be turned off across the entire platform during an emergency (high database load, payment provider issues, or processing backlogs).

How It Works

Platform features run as a separate, parallel system to tenant features:

  • The platform check short-circuits the resolution chain. If a feature appears in the platform list, only the platform-level rule decides access; plan, custom-enable, and trial rules are not consulted for that feature.
  • If disabled, the feature is off for every tenant regardless of plan or custom settings.
  • A tenant custom feature cannot re-enable a platform-disabled capability.

Managing Platform Features

Platform features are controlled via Laravel Vapor dashboard environment variables.

Steps to change a platform feature

  1. Open the Laravel Vapor dashboard.
  2. Navigate to the environment (production or staging).
  3. Edit Environment Variables.
  4. Set the variable (pattern below).
  5. Redeploy so the new value takes effect.
Why a redeploy is required

Vapor bakes the environment into the immutable Lambda image at deploy time and Laravel reads env(...) once when the application boots. Updating a variable in the dashboard does not propagate to running containers; only a redeploy publishes a new image that boots with the new value.

Environment variable pattern

FEATURE_CONTROL_[FEATURE_NAME]=false

Example, disabling storefront search:

FEATURE_CONTROL_STOREFRONT_SEARCH=false

Every platform feature defaults to true (enabled), so setting =true is equivalent to omitting the variable entirely. Only =false is operationally meaningful; treat the absence of a variable in Vapor as the implicit "enabled" state and avoid setting it explicitly.

Available Controls

Source of truth: The definitive list lives under platform.feature_control in the Farfalla config.

Env VariablePurpose
FEATURE_CONTROL_STOREFRONT_SEARCHGlobal search functionality
FEATURE_CONTROL_STOREFRONT_SEARCH_TERMSInclude taxonomy terms in search
FEATURE_CONTROL_STOREFRONT_RECOMMENDED_ISSUESRecommendation shelf
FEATURE_CONTROL_UNLIMITED_READABLE_ISSUESRemove 500 readable issue limit
FEATURE_CONTROL_PAYMENT_SYNCPayment provider sync jobs
FEATURE_CONTROL_CHECK_MP_PAYMENTSMercadoPago recurring payment checks
FEATURE_CONTROL_IPN_PROCESSINGPayment webhook (IPN) processing
FEATURE_CONTROL_BULK_PROCESS_DEFERRED_ISSUESPDF/audiobook processing queue
FEATURE_CONTROL_BULK_PROCESS_DEFERRED_EPUBEPUB processing queue
FEATURE_CONTROL_BULK_REPROCESS_ISSUESRetry failed issue processing

When to Use

  • High database load. Disable search or recommendations to reduce query pressure.
  • Payment provider issues. Disable payment sync or IPN processing during outages.
  • Processing queue backlogs. Pause bulk processing jobs to let queues drain.
  • Emergency feature disabling. Quickly turn off problematic functionality platform-wide.
X

Graph View