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
- Open the Laravel Vapor dashboard.
- Navigate to the environment (production or staging).
- Edit Environment Variables.
- Set the variable (pattern below).
- Redeploy so the new value takes effect.
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_controlin the Farfalla config.
| Env Variable | Purpose |
|---|---|
FEATURE_CONTROL_STOREFRONT_SEARCH | Global search functionality |
FEATURE_CONTROL_STOREFRONT_SEARCH_TERMS | Include taxonomy terms in search |
FEATURE_CONTROL_STOREFRONT_RECOMMENDED_ISSUES | Recommendation shelf |
FEATURE_CONTROL_UNLIMITED_READABLE_ISSUES | Remove 500 readable issue limit |
FEATURE_CONTROL_PAYMENT_SYNC | Payment provider sync jobs |
FEATURE_CONTROL_CHECK_MP_PAYMENTS | MercadoPago recurring payment checks |
FEATURE_CONTROL_IPN_PROCESSING | Payment webhook (IPN) processing |
FEATURE_CONTROL_BULK_PROCESS_DEFERRED_ISSUES | PDF/audiobook processing queue |
FEATURE_CONTROL_BULK_PROCESS_DEFERRED_EPUB | EPUB processing queue |
FEATURE_CONTROL_BULK_REPROCESS_ISSUES | Retry 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.