Skip to content
TraceItX Docs
Documentation

Branding & theming

Eight colours. The reporter should look like part of your product, not a bolted-on widget.

Updated

TraceItXConfig(
    appId: "txx_live_…",
    theme: ReporterThemeOptions(
        accent: "#3b82f6",
        accentForeground: "#ffffff",
        surface: "#0b0f14"
    )
)

The eight roles

RolePaints
backgroundThe reporter surface behind everything.
surfaceCards, fields and raised areas.
borderHairlines between them.
textPrimary copy.
textMutedSecondary copy, hints, counters.
accentButtons, focus rings, the active tool.
accentForegroundText ON the accent — set it whenever you set accent.
destructiveDelete and discard actions.

Values are #rrggbb strings, not UIColor. A string crosses the config boundary unambiguously and serialises into the server-side theme as the same value — a UIColor would have to be resolved against a trait collection first, and the reporter’s traits are not necessarily your app’s.

Plan gating

Theming applies only once the server confirms a paid plan. On a free plan GET /api/config returns { "watermark": true }, the theme is suppressed, and the reporter renders in default colours with a TraceItX mark.

That is a 200, not an error. An inline theme on a free plan is silently ignored rather than failing your build — so upgrading a plan themes the reporter with no code change and no App Store release.

Precedence

Per field, highest wins:

  1. Server theme — set in the dashboard, applies to every client
  2. Inline theme — this config struct
  3. Default

Per field, not per object: setting only accent in the dashboard and only surface here gives you both. On iOS that split earns its keep — the dashboard can change brand colour without waiting on review.

Dark by default

The reporter does not follow the system appearance: its default palette is dark, and stays dark in a light-mode app. If you set background or surface to a light colour, set text and textMuted too, or you will get your surface with the default light text on it. An invalid value is ignored per field, not per theme.

The reporter is iOS and iPadOS only; on tvOS reports are filed from the companion, so there is nothing to theme on the television.