Proper configuration is crucial for the Wallet SDK to function correctly in your application. This guide will walk you through the configuration options and how to set them up.
* Some metadata about your implementation of the Frak SDK
*/
metadata: {
name?: string;
merchantId?: string;
lang?: Language;
currency?: Currency;
logoUrl?: string;
homepageLink?: string;
}
Some metadata about your implementation of the Frak SDK
metadata: {
/**
* Your application name (will be displayed in a few modals and in SSO)
*/
name?: string |undefined
Your application name (will be displayed in a few modals and in SSO)
name?:string;
/**
* Your merchant ID from the Frak dashboard (UUID format)
* Used for referral tracking and analytics
* If not provided, will be auto-fetched from the backend using your domain
*/
merchantId?: string |undefined
Your merchant ID from the Frak dashboard (UUID format)
Used for referral tracking and analytics
If not provided, will be auto-fetched from the backend using your domain
merchantId?:string;
/**
* Language to display in the modal
* If undefined, will default to the browser language
*/
lang?: Language |undefined
Language to display in the modal
If undefined, will default to the browser language
lang?:
type Language ="fr"|"en"
Language;
/**
* The currency to display in the modal
* @defaultValue `"eur"`
*/
currency?: Currency |undefined
The currency to display in the modal
@defaultValue ― "eur"
currency?:
type Currency ="eur"|"usd"|"gbp"
Currency;
/**
* The logo URL that will be displayed in a few components
*/
logoUrl?: string |undefined
The logo URL that will be displayed in a few components
logoUrl?:string;
/**
* The homepage link that could be displayed in a few components
*/
homepageLink?: string |undefined
The homepage link that could be displayed in a few components
homepageLink?:string;
};
/**
* Some customization for the modal
*/
customizations?: {
css?: `${string}.css`;
i18n?: Record<Language, {
[key: string]: string;
}> | {
[key: string]: string;
};
} |undefined
Some customization for the modal
customizations?: {
/**
* Custom CSS styles to apply to the modals and components
*/
css?:`${string}.css`|undefined
Custom CSS styles to apply to the modals and components
css?:`${string}.css`;
/**
* Custom i18n configuration for the modal
* See [i18next json format](https://www.i18next.com/misc/json-format#i18next-json-v4)
*
* Available context variables
* - `{{ productName }}` : The name of your website (`metadata.name`)
* - `{{ productOrigin }}` : The origin url of your website
* - `{{ estimatedReward }}` : The estimated reward for the user
*
* Can be a single language config or a multi-language config
*
* @example
* // Multi-language config
* {
* fr: {
* "sdk.modal.title": "Titre de modal",
* "sdk.modal.description": "Description avec {{ estimatedReward }} de gains",
* },
* en: {
* "sdk.modal.title": "Modal title",
* }
* }
*
* @example
* // Single-language config
* {
* "sdk.modal.title": "Modal title",
* "sdk.modal.description": "Description with {{ estimatedReward }} of earnings",
{{ productName }} : The name of your website (metadata.name)
{{ productOrigin }} : The origin url of your website
{{ estimatedReward }} : The estimated reward for the user
Can be a single language config or a multi-language config
@example// Multi-language config
{
fr: {
"sdk.modal.title": "Titre de modal",
"sdk.modal.description": "Description avec {{ estimatedReward }} de gains",
},
en: {
"sdk.modal.title": "Modal title",
}
}
@example// Single-language config
{
"sdk.modal.title": "Modal title",
"sdk.modal.description": "Description with {{ estimatedReward }} of earnings",
}
i18n?:
|
type Record<Kextendskeyofany, T> = { [PinK]:T; }
Construct a type with a set of properties K of type T
Record<
type Language ="fr"|"en"
Language, { [
key: string
key:string]:string }>
| { [
key: string
key:string]:string };
};
/**
* The domain name of your application
* @defaultValue window.location.host
*/
domain?: string |undefined
The domain name of your application
@defaultValue ― window.location.host
domain?:string;
/**
* Wait for backend config before rendering components.
* When true (default), components show a spinner until backend config is resolved.
* When false, components render immediately with SDK static config / HTML attributes.
* @defaultValue true
*/
waitForBackendConfig?: boolean |undefined
Wait for backend config before rendering components.
When true (default), components show a spinner until backend config is resolved.
When false, components render immediately with SDK static config / HTML attributes.
@defaultValue ― true
waitForBackendConfig?:boolean;
/**
* Default attribution params (UTM / via / ref) appended to outbound sharing URLs.
* Per-call `displaySharingPage` overrides win, then backend config, then this default.
* `utmContent` is intentionally excluded (it is per-content, never a merchant-wide default).
*/
attribution?: {
utmSource?: string;
utmMedium?: string;
utmCampaign?: string;
utmTerm?: string;
via?: string;
ref?: string;
} |undefined
Default attribution params (UTM / via / ref) appended to outbound sharing URLs.
Per-call displaySharingPage overrides win, then backend config, then this default.
utmContent is intentionally excluded (it is per-content, never a merchant-wide default).
attribution?: {
utmSource?: string |undefined
utmSource?:string;
utmMedium?: string |undefined
utmMedium?:string;
utmCampaign?: string |undefined
utmCampaign?:string;
utmTerm?: string |undefined
utmTerm?:string;
via?: string |undefined
via?:string;
ref?: string |undefined
ref?:string;
};
/**
* Preload specific UI views inside the listener iframe for better UX.
* @defaultValue ["sharing"]
*/
preload?: ("modal"|"sharing")[] |undefined
Preload specific UI views inside the listener iframe for better UX.
@defaultValue ― ["sharing"]
preload?: ("modal"|"sharing")[];
}>;
/**
* @typedef{Object}FrakWalletSdkConfig
* @property{string}[walletUrl] - The URL of the Frak Wallet service
* @property{Object}metadata - Metadata about your application
* @property{string}[metadata.name] - The name of your application
* @property{string}[metadata.merchantId] - Your merchant ID (UUID) from the Frak dashboard
* @property{string}[metadata.lang] - The default language ("en" | "fr")
This object contains metadata about your application:
name (optional): The name of your application. Displayed in modals and SSO pages.
merchantId (optional): Your merchant ID from the Frak dashboard (UUID format). Used for referral tracking and analytics. If not provided, it will be auto-fetched from the backend using your domain.
lang (optional): The display language ("en" or "fr"). Defaults to the browser language.
currency (optional): The display currency ("eur", "usd", or "gbp"). Defaults to "eur".
logoUrl (optional): Logo URL displayed in modals and a few components.
homepageLink (optional): Link to your homepage, used in SSO pages and some components.
This object contains customization options for the displayed Frak elements:
css (optional): A URL to a CSS file (must end with .css) that styles the Frak Wallet interface when displayed in your application.
i18n (optional): An object containing text overrides for SDK components. Can be a single-language config or a multi-language config keyed by language code.
Default attribution parameters (utmSource, utmMedium, utmCampaign, utmTerm, via, ref) appended to outbound sharing URLs. Per-call displaySharingPage overrides take precedence, then backend config, then this SDK-level default. utmContent is intentionally excluded, as it is per-content rather than a merchant-wide default.
Environment-based Configuration: Consider using different configurations for development and production environments. This allows you to use the development Frak Wallet during testing.
Secure CSS: If you’re providing a custom CSS file, ensure it’s served over HTTPS to prevent security issues.
Domain Consistency: If you provide a domain, make sure it matches the actual domain where your application is hosted. Mismatches can lead to authentication issues.
Iframe Creation: Always use the createIframe helper function provided by the SDK to create the iframe. This ensures proper setup and compatibility.
By properly configuring the Wallet SDK, you ensure that it can communicate effectively with the Frak Wallet and provide a seamless experience for your users.