Profiles & Recipes
What is a profile?
A profile is a client-specific configuration key that controls how form components render for your integration. When a profile is set, the SDK loads a recipe — a configuration object that defines which fields appear in a form, their order, which are required, and their default values.
Profile names are not SDK constants. They are defined as part of your Alviere program setup. The valid profiles for your integration are provided during onboarding.
What a recipe controls
When a form component resolves a profile, the recipe it loads can configure:
- Field visibility — which fields are shown or hidden
- Field order — the sequence fields appear in the form
- Required vs optional — whether a field must be filled before submission
- Default values — pre-populated field content
- Field grouping — how fields are visually grouped and labelled
This means two integrations using the same CreateAccount component can present entirely different forms depending on the profile in use — different field sets, different layouts, different validation requirements.
Setting a profile
The profile prop is available on all form components and on MultiStepFlow. It can be set at three levels, resolved in this order from highest to lowest priority:
step.config.formData.profile— embedded in a specific step's form datastep.config.profile— applies to a specific step in a flowconfig.profile(top-level onMultiStepFlow) — applies to the whole flow
<!-- On a standalone form -->
<CreateAccount
{jwt}
{businessUuid}
config={{ formData: { profile: 'YOUR_PROFILE' } }}
/>
// Inside a MultiStepFlow config
{
"profile": "YOUR_PROFILE",
"steps": [
{
"type": "CREATE_ACCOUNT",
"label": "Create Account"
},
{
"type": "CREATE_ACCOUNT",
"label": "Create Account (different layout)",
"config": {
"profile": "YOUR_OTHER_PROFILE"
}
}
]
}
If no profile is set, the form falls back to a default field set.
Current implementation
Today, recipes are loaded from a recipes.json file that is configured per-integration. This file is provided as part of your SDK setup and is specific to your program — it is not a file you write or manage directly.
The recipe system is designed to move toward an API-driven model, where the SDK will fetch the recipe for your client programmatically using a program or client identifier. The profile prop interface will remain the same when this transition happens — only the delivery mechanism changes.

