Ask or search…


Customize the SDK-provided screens to match your application's style
All Composables taken in the standard Jetpack Compose Modifier parameter, which can be used to further customize the screen as needed.

Localization and Copy

You may override specific strings by defining new values for the XML string resources defined in the SDK. The full list of string resources is available here:
For example, to update the Smart Selfie instructions, you can override the si_smart_selfie_instructions XML resource in your own strings.xml file
<string name="si_smart_selfie_instructions">Your custom instruction</string>
To provide translations, create a new values folder specific to the language (i.e. values-fr) and create a strings.xml overriding all values. For further information, refer to


There are 2 options for customizing the colours of the screens presented by the SDK: via Jetpack Compose or XML Resources.
Note: If you're using Jetpack Compose, you may choose to use XML Resources or the native Compose approach, as per your preference. However, the Compose approach is the best practice in case of a dynamic theme (i.e. Material You Dynamic Color Scheme, Dark/Light mode, etc). The default SmileIdentityColorScheme picks its colours from resources.
Jetpack Compose
XML Resources
Colour Scheme
When invoking a Composable function, the colour scheme and typography can be customized by the values passed to the colorScheme and typography parameters, respectively.
The default theme is publicly exposed as SmileID.colorScheme and can be copied and modified.
import androidx.compose.runtime.Composable
import com.smileidentity.SmileID
import com.smileidentity.compose.theme.colorScheme
import com.smileidentity.compose.SmartSelfieRegistration
fun ColorSchemeThemingExample() {
val colorScheme = SmileID.colorScheme.copy(primary = Color.Green)
// Alternatively, if you already have your own MaterialTheme.colorScheme, you can use that:
// val colorScheme = MaterialTheme.colorScheme
SmileID.SmartSelfieRegistration(colorScheme = colorScheme)
Additionally, you may also customize the typography in a similar fashion via the typography parameter to all Composables.
The default typography is exposed as SmileID.typography and can be copied and modified.
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.sp
import com.smileidentity.SmileID
import com.smileidentity.compose.theme.typography
import com.smileidentity.compose.SmartSelfieRegistration
fun TypographyThemingExample() {
val typography = SmileID.typography.copy(displayLarge = TextStyle(fontSize = 24.sp))
// Alternatively, if you already have your own MaterialTheme.typography, you can use that:
// val typography = MaterialTheme.typography
SmileID.SmartSelfieRegistration(typography = typography)
Colours in XML Resources are defined at 2 levels, the overarching theme colours and the Material Theme colours. The overarching theme colours are a more limited set of colour definitions which are automatically assigned to the corresponding Material Theme colours as appropriate. For more granular control, the Material Theme values can be overridden directly.
Overarching Theme Colors
Any or all of these can be overridden by your own values
<?xml version="1.0" encoding="utf-8"?>
<!-- Overarching Theme Colors -->
<!-- Replace the "..." with your own color -->
<color name="si_color_on_dark">...</color>
<color name="si_color_on_light">...</color>
<color name="si_color_accent">...</color>
<color name="si_color_success">...</color>
<color name="si_color_error">...</color>
<color name="si_color_background_dark">...</color>
<color name="si_color_background_main">...</color>
<color name="si_color_background_light">...</color>
<color name="si_color_background_lightest">...</color>
Granular Material Theme Colors
For even finer control, any or all of these can be overridden with your own values
<?xml version="1.0" encoding="utf-8"?>
<!-- Material Theme Colors -->
<!-- Replace the "..." with your own color -->
<color name="si_color_material_primary">...</color>
<color name="si_color_material_on_primary">...</color>
<color name="si_color_material_primary_container">...</color>
<color name="si_color_material_on_primary_container">...</color>
<color name="si_color_material_inverse_primary">...</color>
<color name="si_color_material_secondary">...</color>
<color name="si_color_material_on_secondary">...</color>
<color name="si_color_material_secondary_container">...</color>
<color name="si_color_material_on_secondary_container">...</color>
<color name="si_color_material_tertiary">...</color>
<color name="si_color_material_on_tertiary">...</color>
<color name="si_color_material_tertiary_container">...</color>
<color name="si_color_material_on_tertiary_container">...</color>
<color name="si_color_material_background">...</color>
<color name="si_color_material_on_background">...</color>
<color name="si_color_material_surface">...</color>
<color name="si_color_material_on_surface">...</color>
<color name="si_color_material_surface_variant">...</color>
<color name="si_color_material_on_surface_variant">...</color>
<color name="si_color_material_surface_tint">...</color>
<color name="si_color_material_inverse_surface">...</color>
<color name="si_color_material_inverse_on_surface">...</color>
<color name="si_color_material_error">...</color>
<color name="si_color_material_on_error">...</color>
<color name="si_color_material_error_container">...</color>
<color name="si_color_material_on_error_container">...</color>
<color name="si_color_material_outline">...</color>
<color name="si_color_material_outline_variant">...</color>
<color name="si_color_material_scrim">...</color>