Docs contentsYaliyomo ya nyaraka

Config reference

Every key of the drop-in flow's config, with its type, default and allowed values.

The drop-in flow takes one config, the same on Flutter and the Web. Keys are snake_case in JSON; in code they follow the language (requireBack, buttonShape). Every key is optional. Unknown keys are ignored and invalid values fall back to the default, with a warning in debug builds. See Drop-in screens and config for how to use them.

flow

Key Type Default Values
flow.steps list of strings Flutter ["card", "selfie", "fingerprints"], Web ["card", "selfie"] card, selfie, fingerprints. The order is fixed; leave a step out to skip it. A selfie needs the card. The web skips fingerprints with a warning.
flow.documents list of strings ["nida", "driving_licence"] Which cards are accepted. Any other card ends on "Please use your …".
flow.require_back string "off" off; optional (the person may skip the back); required (no skip button). The step timeout still applies.
flow.fingerprints.hand string "ask" ask, right, left. Flutter only.

engine

Applied when the flow creates its engine (DigidFlow.createEngine in Flutter; mountFlow without an engine of your own on the web). An engine you create yourself keeps its own settings, and debug builds warn when they differ.

Key Type Default Values
engine.step_timeout_s number 30 Seconds before a step carries on without its capture. A back not read in time is skipped and flagged.
engine.expiry_policy string "review" What an expired card or licence does to the verdict: review (the expiry check warns, the verdict is review), reject (it fails), ignore (no expiry check). The result screen tags an expired document "Expired" whatever the policy.
engine.lock_frames integer 2 Card reading consistency setting. Leave it at the default unless digid support advises a change.
engine.face_threshold number or null null null uses the engine's built-in setting. Change it only on digid support's advice.

The bare engine (without the drop-in flow) names the expiry policies fail, review and ignore, and defaults to ignore.

language and strings

Key Type Default Values
language string "auto" en, sw, auto (the app's or page's language, then the device's or browser's)
language_switch boolean true Shows the flow's own EN / SW control
strings object {"en": {}, "sw": {}} Text by string id, per language. Ids per SDK: STRING_IDS and DEFAULT_STRINGS (Web), FlowStrings (Flutter).

theme

Key Type Default Values
theme.mode string "light" light, dark, system
theme.colors.primary colour #000000 The main button
theme.colors.on_primary colour #FFFFFF Text on the main button
theme.colors.accent colour #3F48FD Links, tags, toggles
theme.colors.background colour #F6F6F6 The page
theme.colors.surface colour #FFFFFF Cards and panels
theme.colors.text colour #000000 Body text
theme.colors.muted colour #5A5A5A Secondary text
theme.colors.overlay colour #010334 The camera's instruction box
theme.colors.on_overlay colour #FFFFFF Text in the instruction box
theme.colors.frame colour #FFFFFF Camera brackets and the selfie oval
theme.colors.frame_ready colour #22C55E The same, when the capture is ready
theme.colors.success colour #15803D Pass
theme.colors.warning colour #B45309 Needs review
theme.colors.danger colour #B42318 Fail
theme.font_family string or null null A font your app bundles or your page loads. null: Inter in Flutter, the page's font on the web.
theme.radius number 24 Cards and panels, in logical pixels (CSS pixels on the web), 0 to 64
theme.button_shape string "pill" pill, rounded, square

Colours are hex: #RGB, #RRGGBB or #RRGGBBAA (alpha last). The defaults are the digid light palette; dark mode has its own. A colour you set applies in both modes.

branding

Key Type Default Values
branding.logo string or null null Shown on the intro. Flutter: an asset path or an https:// URL. Web: an image URL; same-origin, data: or blob: keep the page offline.
branding.powered_by boolean true The "Verified with digid" line under the result

screens

Key Type Default Values
screens.intro.show boolean true false starts the flow at the camera (on the web, as soon as it is mounted)
screens.intro.title string or null null Replaces the intro's heading. Web: a string or { "en": …, "sw": … }
screens.intro.body string or null null Replaces the intro's text, as title
screens.consent.show boolean false A checkbox the person must tick before the camera opens
screens.consent.text string or null null The consent sentence; null uses the default
screens.consent.link string or null null A link to your privacy notice (http(s) or relative on the web; opened through onOpenLink in Flutter)
screens.result.show boolean true false returns to your app as soon as the last step is done
screens.result.fields list or null null The rows the result screen shows; null uses the defaults. See below.
screens.result.download boolean true Offers the document as a JSON file on the result screen, with no upload. Turn it off in production.
screens.manual_capture_after_s number 6 A shutter button appears on the card steps after this many seconds without a read; 0 never. Never on the selfie.
screens.haptics boolean true A short vibration when a step completes, where the device supports it

Result fields. Web: name, nin, sex, date_of_birth, expiry_date, card_type, licence_number, reference_number, issue_date, categories, issuing_authority, residence, face, back, checks. Flutter: name, nin, date_of_birth, sex, card_type, licence_number, reference_number, issue_date, expiry_date, categories, issuing_authority, residence, selfie, card_back, fingerprints. A field the card does not have is skipped.

Options outside the config

These are arguments of the flow call, not config keys.

Flutter, DigidFlow.start and DigidFlowView: engine (required), config, fingerEngine, licence, onStepChanged, onCompleted, onCancelled, onError, onLanguageChanged, onEvent, onOpenLink, navigatorObservers.

Web, mountFlow(element, options): config, models (default "models/"), preload ("card", "all" or "none"), licence, nida or engine (an engine you created), wasm, workerUrl, debug, headingLevel (default 2), injectStyles (default true), onStep, onComplete, onCancel, onError.