Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Openfeature Bundle Laravel Package

aubes/openfeature-bundle

View on GitHub
Deep Wiki
Context7

OpenFeature Bundle

CI Latest Version PHP Version Symfony Version

Feature flags, the Symfony way.

Symfony bundle for the OpenFeature PHP SDK, the CNCF standard for feature flags.

class CheckoutController
{
    #[FeatureGate('new_checkout')]
    public function checkout(
        #[FeatureFlag('dark_mode')] bool $darkMode,
        #[FeatureFlag('max_items')] int $maxItems,
    ): Response {
        // values resolved from your feature flag provider
    }
}
  • #[FeatureGate] blocks access when a flag is off
  • #[FeatureFlag] injects resolved values, fully typed
  • Twig helpers: feature('flag'), feature_value('flag', default)
  • Hooks autoconfigured: implement Hook for logging, tracing, validation
  • Evaluation context autoconfigured: implement EvaluationContextProviderInterface to feed targeting attributes
  • Symfony Profiler panel with evaluated flags, provider info, and context
  • Any provider: basic built-ins (InMemory, EnvVar, Redis) for quick starts, or plug any real OpenFeature provider (Flagd, ConfigCat, Unleash, LaunchDarkly...)
  • FrankenPHP worker mode safe out of the box

Requirements

Quick start

composer require aubes/openfeature-bundle

Register the bundle manually in config/bundles.php:

Aubes\OpenFeatureBundle\OpenFeatureBundle::class => ['all' => true],
# config/packages/open_feature.yaml
open_feature:
    flags:
        new_checkout: true
        dark_mode: false
        max_items: 10

Use flags in controllers with attributes, in templates with Twig, or inject the Client directly:

use OpenFeature\interfaces\flags\Client;

class MyService
{
    public function __construct(private readonly Client $client) {}

    public function checkout(): void
    {
        if ($this->client->getBooleanValue('new_checkout', false)) {
            // new flow
        }
    }
}
{% if feature('new_checkout') %}
    {# new checkout #}
{% endif %}

{{ feature_value('max_items', 10) }}

Providers

The bundle works with any OpenFeature provider.

Use a real provider in production

For anything beyond a quick demo (user targeting, percentage rollouts, A/B testing, remote flag management, audit log), use a dedicated provider:

Built-in providers (bootstrap only)

Warning: The three built-in providers are simple key/value stores. They ignore the EvaluationContext (no targeting, no rollouts, no A/B testing) and are only meant to get you running without setting up infrastructure. Swap them out as soon as you need real feature flag semantics.

Provider Best for Config key
InMemoryProvider (default) Local development, tests flags
EnvVarProvider Kill switches via env vars provider
RedisProvider Shared on/off toggles via Redis provider + redis

Multiple providers

Combine several providers through the SDK MultiProvider with the providers key (evaluated in declaration order):

open_feature:
    providers:
        remote: App\OpenFeature\MyProvider
        local: Aubes\OpenFeatureBundle\Provider\InMemoryProvider
    strategy: first_match   # first_match | first_successful | comparison

See Configuration reference for strategy details.

Documentation

Full documentation lives in the docs/ folder:

License

MIT. See LICENSE.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
aimeos/prisma
besmartand-pro/php-quality-config
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor
spatie/laravel-javascript-views