Forge
1.x
Docs/Forge/Functions
Open

Reading1 min
Updated31 Jul 2026
Sourcev1/extensions/features/functions.mdx

Extension Entry Points01

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 Helpers02

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 Evaluation03

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

UserContext04

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 Interface05

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