Skip to main content
Dark mode and Custom CSS need support on two sides: the Formbricks server that delivers the survey, and the SDK that shows it. This page lists the versions and explains what happens while they do not match yet. Upgrade in this order: the Formbricks server first, then your SDKs. A newer server never breaks an older SDK, and a newer SDK never breaks against an older server: surveys keep working, they only lack the new styling until both sides support it.

Minimum Versions

Formbricks Cloud always runs the current server. The JavaScript SDK loads its survey code from the server, so website and app surveys get Custom CSS as soon as the server supports it. Mobile SDKs have to pass Custom CSS to the survey themselves, so they need the release listed above.

Appearance

Every SDK shares one appearance contract:
  • Choose "light", "dark" or "system", either as the appearance setup option or with setAppearance at any time.
  • Without a choice, surveys render light.
  • setAppearance works before setup. The latest explicit choice wins: a later setup value or setAppearance call replaces an earlier one, and a setup without appearance keeps a choice made before it.
  • The choice is kept in memory for the current app or page session. It survives logout and identity reset, and is forgotten when the app restarts or the page reloads. It is not stored as a contact attribute and sends no request to Formbricks.
  • The appearance is applied before the survey first appears. Changing it while a survey is open switches the colors in place and keeps the respondent’s answers, progress and focus.
Setting the appearance with the JavaScript SDK
The mobile SDKs expose the same setAppearance method and setup option, using each platform’s usual enum or type. Their READMEs show the exact syntax.

What “system” Follows

"system" means the appearance your app is currently showing, which is not always the phone’s setting: If your app keeps its theme only in its own code, such as a React context or an in-app toggle, "system" cannot see it. Call setAppearance("light") or setAppearance("dark") from that toggle instead.

Older Versions Without setAppearance

Check that the method exists before calling it, so older SDK versions keep working:
Feature-detecting setAppearance
An SDK that has setAppearance but talks to an older self-hosted server accepts the call without an error. The survey stays light until the server is upgraded.

Custom CSS In Apps

  • Link surveys and website & app surveys get Custom CSS from the server. Nothing to change in your code.
  • Mobile apps need an SDK version with Custom CSS support. It passes both the workspace CSS and the survey CSS to the survey, in light and dark mode, whether or not the survey overrides the workspace theme.
  • Older mobile SDKs show surveys without any Custom CSS. They never apply only part of it, such as the survey CSS without the workspace CSS it builds on.
Saved changes reach respondents within about an hour, as SDKs refresh the survey configuration. A survey that is already open keeps the styling it opened with until the respondent finishes it.

Mixed Versions

Browser And WebView Support

These are the browser versions the survey styles are built for. The SDKs keep their existing minimum OS versions. On a device below the supported range, surveys still open but colors and layout can be off.