Features

Functions

Public API reference for the Feature Flags extension

Extension Entry Points

FunctionDescription
NewExtension(opts ...ConfigOption) forge.ExtensionCreate the features extension with functional options
NewExtensionWithConfig(config Config) forge.ExtensionCreate with a complete config
DefaultConfig() ConfigReturns the default configuration

DI Helpers

FunctionDescription
Get(c forge.Container) (*Service, error)Resolve the features service from the container
MustGet(c forge.Container) *ServiceSame but panics on error
GetFromApp(app forge.App) (*Service, error)Resolve from an app instance
MustGetFromApp(app forge.App) *ServiceSame but panics on error

Service -- Flag Evaluation

MethodDescription
IsEnabled(ctx, flag) boolCheck if a boolean flag is enabled
IsEnabledWithDefault(ctx, flag, default) boolCheck with a fallback default
GetString(ctx, flag, default) stringGet a string flag value
GetInt(ctx, flag, default) intGet an integer flag value
GetFloat(ctx, flag, default) float64Get a float flag value
GetJSON(ctx, flag, target) errorDeserialize a JSON flag value into target
GetAllFlags(ctx) (map[string]any, error)Get all flag values
Refresh(ctx) errorForce a flag refresh from the provider

UserContext

Build a user context for targeted flag evaluation:

FunctionDescription
NewUserContext(userID) *UserContextCreate a user context
uc.WithEmail(email) *UserContextSet user email
uc.WithName(name) *UserContextSet user name
uc.WithGroups(groups...) *UserContextSet user groups
uc.WithAttribute(key, value) *UserContextSet a custom attribute
uc.WithIP(ip) *UserContextSet user IP address
uc.WithCountry(country) *UserContextSet user country
uc.HasGroup(group) boolCheck group membership
uc.GetAttribute(key) (any, error)Get an attribute value
uc.GetAttributeString(key) (string, error)Get an attribute as string

Provider Interface

MethodDescription
Name() stringProvider identifier
Initialize(ctx, config) errorInitialize the provider
IsEnabled(ctx, flag, userCtx) boolEvaluate a boolean flag
GetString(ctx, flag, default, userCtx) stringGet string value
GetInt(ctx, flag, default, userCtx) intGet integer value
GetFloat(ctx, flag, default, userCtx) float64Get float value
GetJSON(ctx, flag, target, userCtx) errorGet JSON value
GetAllFlags(ctx) (map[string]any, error)Get all flags
Refresh(ctx) errorRefresh from upstream
Close() errorClose the provider
Health(ctx) errorHealth check

How is this guide?

On this page