Skip to main content

Theming

By default the SDK matches your app. At runtime it reads your theme's colors, fonts, corner radius, button style, type scale and dark mode, and the rewards UI uses them. Layout and motion come from the Flyy UI variant; your app supplies the colors, fonts and shapes.

What's captured​

AndroidiOS
ColorsMaterial 3 / Material 2 / AppCompat theme attrs, Compose MaterialTheme.colorSchemeTint and system colors, trait collection
Fontsres/font files and <font-family> XML, Compose Font(R.font.x)Fonts listed in UIAppFonts
ShapesshapeAppearance*, materialButtonStyle, Compose shapes—
Text sizefontScale / Compose densityDynamic Type
Dark modeTheme / uiModeuserInterfaceStyle, SwiftUI colorScheme

Changes apply live. Switch dark mode or font size and open Flyy surfaces update without reloading.

Contrast is checked: any text color below WCAG 4.5:1 (3:1 for button labels) is replaced with black or white.

Overrides​

Flyy.start(this) {
partnerId = "…"
themeColor = "#7C3AED"
hostTheme = mapOf(
"colors.primary" to "#C2138F",
"shape.button" to 24,
)
}

// Compose: read the theme explicitly, inside your app theme
Flyy.hostTheme(MaterialTheme)

Precedence​

Highest first:

  1. Per-placement theme set in GameStudio
  2. Explicit config — themeColors, custom fonts, themeColor
  3. Captured app theme (matchHostTheme)
  4. The UI variant's defaults

To stop matching your app, set matchHostTheme = false. Font scale is always respected for accessibility.

v1 theme setters​

setThemeColor, setThemeColors, setDarkThemeColor and setCustomFontName still work and rank at level 2.