Theme Switching in Userpilot allows you to dynamically adapt in-app experiences, such as modals, tooltips, banners, and checklists, to match your application’s active theme (for example, light mode or dark mode).This is especially useful for products that support multiple visual themes and want Userpilot content to feel native, consistent, and seamless within the host application. By using the userpilot.theme() function, you can control which theme Userpilot uses at runtime, ensuring that content shown in live mode always aligns with your product’s UI state.
Light/Dark mode support: When your application allows users to toggle between light and dark modes, Userpilot content should adapt automatically to avoid visual clashes or accessibility issues.
Brand or tenant-based theming: For multi-tenant or white-labeled products, different customers may use different brand themes. Theme Switching ensures the right Userpilot theme is applied per tenant or account.
Improved accessibility and readability: Ensuring correct contrast, background, and typography based on the theme improves usability and WCAG compliance.
Userpilot supports theme control via a JavaScript API method, userpilot.theme(). This method tells Userpilot which theme should be active so that all live content (flows, tooltips, banners, etc.) renders using the correct theme styles.
Important: Theme switching affects content shown in live mode. It does not change your app’s theme, only how Userpilot content is displayed.
First, make sure you have created the relevant themes (e.g. light, dark) in your Userpilot theme settings.
Your application should already know which theme is active (for example, from user preferences, system settings, or a global state).
When the theme changes (or on initial page load), call the Userpilot API with the appropriate theme name:
userpilot.theme('dark');
or
userpilot.theme('light');
Once set, any Userpilot content that appears in live mode will automatically render using the selected theme, without needing to reload the page or re-trigger flows.
You can dynamically change the primary color of a theme using userpilot.theme({ primary: "PRIMARY_COLOR" }). This allows you to customize the primary color per user or account without the need to create and maintain 20+ separate themes. It’s especially useful for applications that support color customization or white-labeling.
You can disable the applied theme at any time by calling userpilot.theme(0). This stops the selected theme from rendering on live Userpilot content without needing a page reload or flow re-trigger.
Resource Center and NPS surveys don’t have their own dedicated Userpilot themes, so they don’t automatically adapt when you call userpilot.theme().Currently, you can adapt Resource Center content to your active theme by passing a second argument with a resource_center_schema matching your theme name:
This adds a [data-app-theme="dark"] attribute you can use to scope your custom CSS, prefixing it before your existing Resource Center element selectors. For example:
[data-app-theme="dark"] #navigation-bar,[data-app-theme="dark"] #userpilot-resource-centre,[data-app-theme="dark"] #widget-headers { /* your dark-mode styles */}
Call userpilot.theme() early in your app lifecycle (e.g. after user login or app initialization)
Re-call the method when the theme changes, especially if users can toggle themes at runtime
Keep theme naming consistent between your app and Userpilot (e.g. light, dark, high-contrast)
Test in live mode, not just previews, to ensure the behavior matches real user experiences
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Userpilot Knowledge Base","colors":{"primary":"#6765e8","light":"#9a98f0","dark":"#343374"},"logo":{"light":"https://mintcdn.com/userpilot/KtUQBkEo7Hf3bjCu/up-logo-dark.svg?fit=max\u0026auto=format\u0026n=KtUQBkEo7Hf3bjCu\u0026q=85\u0026s=ed5988b05e17770537d7327506be349c","dark":"https://mintcdn.com/userpilot/KtUQBkEo7Hf3bjCu/up-logo-light.svg?fit=max\u0026auto=format\u0026n=KtUQBkEo7Hf3bjCu\u0026q=85\u0026s=2558daac7455ff6275b45a01cecb8ca9"},"favicon":"https://mintcdn.com/userpilot/KtUQBkEo7Hf3bjCu/up-favicon.svg?fit=max\u0026auto=format\u0026n=KtUQBkEo7Hf3bjCu\u0026q=85\u0026s=bd3fb42ae91a32d13d543fed45a8b88e","footer":{"socials":{"twitter":"https://linkedin.com/company/teamuserpilot","facebook":"https://facebook.com/userpilot","linkedin":"https://linkedin.com/company/teamuserpilot"},"links":[{"header":"Support","items":[{"label":"support@userpilot.com","href":"mailto:support@userpilot.com"}]}]},"seo":{"metatags":{"canonical":"https://docs.userpilot.com","og:site_name":"Userpilot Knowledge Base","og:type":"website","og:image":"https://docs.userpilot.com/up-logo-dark.svg","twitter:card":"summary_large_image","twitter:site":"@usaborpilot"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"userpilot","hasAudioNarration":false,"actualSubdomain":"userpilot","customDomains":["docs.userpilot.com"],"gitSource":{"type":"github","owner":"userpilot","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae0b2192ea1296893eaac7f","collectionId":"fc844142-bc45-4b7f-9358-b6510c66635c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0b2192ea1296893eaac7f"},"feedback":{"edits":true,"issues":true,"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae7105b88760f93b1002721","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Platform","count":137},{"language":"default","tag":"Developer","count":88},{"language":"default","tag":"Installation","count":76},{"language":"default","tag":"Mobile","count":68},{"language":"default","tag":"In App Engagement","count":56},{"language":"default","tag":"APIs","count":42},{"language":"default","tag":"Configure","count":23},{"language":"default","tag":"Endpoints","count":20},{"language":"default","tag":"Bulk Export","count":17},{"language":"default","tag":"Integrations","count":14}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--primary:103 101 232;--primary-light:225 224 250;--primary-dark:103 101 232;--background-light:255 255 255;--background-dark:9 13 13;--gray-50:243 247 246;--gray-100:238 242 241;--gray-200:222 226 226;--gray-300:206 210 209;--gray-400:158 163 162;--gray-500:112 116 115;--gray-600:80 84 83;--gray-700:62 67 66;--gray-800:37 41 40;--gray-900:23 27 26;--gray-950:10 14 13;--header:128 127 236;--hover-btn:52 51 116;--accent:103 101 232}header#header>div>div{color:rgb(var(--header))}body :is(.dark\\:bg-primary-light:is(.dark *)){background:rgb(var(--accent))}body :is(.dark\\:bg-primary-light\\/10:is(.dark *)){background:rgb(var(--hover-btn))}"}],"page":{"pagePath":"configure/themes-and-design-library/switching-themes","slug":"/configure/themes-and-design-library/switching-themes","pageMetadata":{"title":"Theme Switching","description":"Learn how to switch themes like light and dark mode in Userpilot using userpilot.theme() to match your app UI in real time.","keywords":["Userpilot","Theme Switching","Dark Mode","Light Mode","Dynamic Themes","userpilot.theme","SDK"],"href":"/configure/themes-and-design-library/switching-themes"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn how to switch themes like light and dark mode in Userpilot using userpilot.theme() to match your app UI in real time.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`3`,id:`overview`,children:`Overview`}),`\n`,_jsx(_components.p,{children:`Theme Switching in Userpilot allows you to dynamically adapt in-app experiences, such as modals, tooltips, banners, and checklists, to match your application’s active theme (for example, light mode or dark mode).`}),`\n`,_jsxs(_components.p,{children:[`This is especially useful for products that support multiple visual themes and want Userpilot content to feel native, consistent, and seamless within the host application. By using the `,_jsx(_components.code,{children:`userpilot.theme()`}),` function, you can control which theme Userpilot uses at runtime, ensuring that content shown in live mode always aligns with your product’s UI state.`]}),`\n`,_jsx(Heading,{level:`3`,id:`use-cases`,children:`Use cases`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Light/Dark mode support:`}),` When your application allows users to toggle between light and dark modes, Userpilot content should adapt automatically to avoid visual clashes or accessibility issues.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Brand or tenant-based theming:`}),` For multi-tenant or white-labeled products, different customers may use different brand themes. Theme Switching ensures the right Userpilot theme is applied per tenant or account.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Improved accessibility and readability:`}),` Ensuring correct contrast, background, and typography based on the theme improves usability and WCAG compliance.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`how-theme-switching-works-in-userpilot`,children:`How theme switching works in Userpilot`}),`\n`,_jsxs(_components.p,{children:[`Userpilot supports theme control via a JavaScript API method, `,_jsx(_components.code,{children:`userpilot.theme()`}),`. This method tells Userpilot which theme should be active so that all live content (flows, tooltips, banners, etc.) renders using the correct theme styles.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Important: Theme switching affects `,_jsx(_components.strong,{children:`content shown in live mode`}),`. It does not change your app’s theme, only how Userpilot content is displayed.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`how-to-switch-between-themes-for-live-content`,children:`How to switch between themes for live content`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`First, make sure you have created the relevant themes (e.g. `,_jsx(_components.code,{children:`light`}),`, `,_jsx(_components.code,{children:`dark`}),`) in your Userpilot theme settings.`]}),`\n`,_jsx(_components.li,{children:`Your application should already know which theme is active (for example, from user preferences, system settings, or a global state).`}),`\n`,_jsx(_components.li,{children:`When the theme changes (or on initial page load), call the Userpilot API with the appropriate theme name:`}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`userpilot`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`theme`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'dark'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`or`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`userpilot`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`theme`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'light'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),`\n`,_jsxs(_components.ol,{start:`4`,children:[`\n`,_jsx(_components.li,{children:`Once set, any Userpilot content that appears in live mode will automatically render using the selected theme, without needing to reload the page or re-trigger flows.`}),`\n`]}),`\n`,_jsx(Info,{children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`You can dynamically change the primary color of a theme using `,_jsx(_components.code,{children:`userpilot.theme({ primary: \"PRIMARY_COLOR\" })`}),`. This allows you to customize the primary color per user or account without the need to create and maintain 20+ separate themes. It’s especially useful for applications that support color customization or white-labeling.`]}),`\n`,_jsxs(_components.li,{children:[`You can disable the applied theme at any time by calling `,_jsx(_components.code,{children:`userpilot.theme(0)`}),`. This stops the selected theme from rendering on live Userpilot content without needing a page reload or flow re-trigger.`]}),`\n`]})}),`\n`,_jsx(Heading,{level:`3`,id:`applying-themes-to-the-resource-center`,children:`Applying themes to the Resource Center`}),`\n`,_jsxs(_components.p,{children:[`Resource Center and NPS surveys don’t have their own dedicated Userpilot themes, so they don’t automatically adapt when you call `,_jsx(_components.code,{children:`userpilot.theme()`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Currently, you can adapt Resource Center content to your active theme by passing a second argument with a `,_jsx(_components.code,{children:`resource_center_schema`}),` matching your theme name:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`userpilot`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`theme`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'dark'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`resource_center_schema:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'dark'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`This adds a `,_jsx(_components.code,{children:`[data-app-theme=\"dark\"]`}),` attribute you can use to scope your custom CSS, prefixing it before your existing Resource Center element selectors. For example:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`css`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`css`,children:_jsxs(_components.code,{language:`css`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`data-app-theme`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"dark\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D7BA7D`},children:`#navigation-bar`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`data-app-theme`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"dark\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D7BA7D`},children:`#userpilot-resource-centre`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`data-app-theme`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"dark\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D7BA7D`},children:`#widget-headers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` /* your dark-mode styles */`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`best-practices`,children:`Best practices`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Call `,_jsx(_components.code,{children:`userpilot.theme()`}),` early in your app lifecycle (e.g. after user login or app initialization)`]}),`\n`,_jsx(_components.li,{children:`Re-call the method when the theme changes, especially if users can toggle themes at runtime`}),`\n`,_jsxs(_components.li,{children:[`Keep theme naming consistent between your app and Userpilot (e.g. `,_jsx(_components.code,{children:`light`}),`, `,_jsx(_components.code,{children:`dark`}),`, `,_jsx(_components.code,{children:`high-contrast`}),`)`]}),`\n`,_jsx(_components.li,{children:`Test in live mode, not just previews, to ensure the behavior matches real user experiences`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Theme Switching","description":"Learn how to switch themes like light and dark mode in Userpilot using userpilot.theme() to match your app UI in real time.","keywords":["Userpilot","Theme Switching","Dark Mode","Light Mode","Dynamic Themes","userpilot.theme","SDK"],"href":"/configure/themes-and-design-library/switching-themes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":3,"children":[]},{"title":"Use cases","slug":"use-cases","depth":3,"children":[]},{"title":"How theme switching works in Userpilot","slug":"how-theme-switching-works-in-userpilot","depth":3,"children":[]},{"title":"How to switch between themes for live content","slug":"how-to-switch-between-themes-for-live-content","depth":3,"children":[]},{"title":"Applying themes to the Resource Center","slug":"applying-themes-to-the-resource-center","depth":3,"children":[]},{"title":"Best practices","slug":"best-practices","depth":3,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/userpilot/3ace2e9458eac66f/.prettierrc.js","/_mintlify/custom/userpilot/27d7e6557bc674e7/plausible.js","/_mintlify/custom/userpilot/222114e09e9d43ba/scripts/generate-kb-manifest.js","/_mintlify/custom/userpilot/7588c52f105b4ce6/scripts/check-nav.js","/_mintlify/custom/userpilot/77c4aabf1776912c/scripts/check-redirects.js","/_mintlify/custom/userpilot/c4efe6226e95d900/scripts/lib/docs-lib.js","/_mintlify/custom/userpilot/8278790c2c1428e5/scripts/precommit.js","/_mintlify/custom/userpilot/826df8c2727af7c1/scripts/seo-audit.js"],"subdomain":"userpilot","siteName":"Userpilot Knowledge Base","title":"Theme Switching - Userpilot Knowledge Base","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-28T20:58:48.574Z","originalFileLocation":"configure/themes-and-design-library/switching-themes.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn how to switch themes like light and dark mode in Userpilot using userpilot.theme() to match your app UI in real time.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Userpilot Knowledge Base\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/userpilot/aR1cLyV1TsYivBqB/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/userpilot/aR1cLyV1TsYivBqB/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/userpilot/aR1cLyV1TsYivBqB/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/userpilot/aR1cLyV1TsYivBqB/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/userpilot/aR1cLyV1TsYivBqB/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/userpilot/aR1cLyV1TsYivBqB/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/userpilot/aR1cLyV1TsYivBqB/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/userpilot/aR1cLyV1TsYivBqB/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/userpilot/aR1cLyV1TsYivBqB/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Theme Switching - Userpilot Knowledge Base\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how to switch themes like light and dark mode in Userpilot using userpilot.theme() to match your app UI in real time.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Userpilot Knowledge Base\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.userpilot.com/configure/themes-and-design-library/switching-themes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.userpilot.com/up-logo-dark.svg\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Theme Switching - Userpilot Knowledge Base\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how to switch themes like light and dark mode in Userpilot using userpilot.theme() to match your app UI in real time.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.userpilot.com/up-logo-dark.svg\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/userpilot/aR1cLyV1TsYivBqB/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Userpilot Knowledge Base\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6765e8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.userpilot.com/configure/themes-and-design-library/switching-themes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/configure/themes-and-design-library/switching-themes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.userpilot.com/#organization\",\"name\":\"Userpilot Knowledge Base\",\"url\":\"https://docs.userpilot.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/userpilot/KtUQBkEo7Hf3bjCu/up-logo-dark.svg?fit=max\u0026auto=format\u0026n=KtUQBkEo7Hf3bjCu\u0026q=85\u0026s=ed5988b05e17770537d7327506be349c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.userpilot.com#website\",\"name\":\"Userpilot Knowledge Base\",\"url\":\"https://docs.userpilot.com\",\"publisher\":{\"@id\":\"https://docs.userpilot.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.userpilot.com/configure/themes-and-design-library/switching-themes#webpage\",\"url\":\"https://docs.userpilot.com/configure/themes-and-design-library/switching-themes\",\"name\":\"Theme Switching\",\"description\":\"Learn how to switch themes like light and dark mode in Userpilot using userpilot.theme() to match your app UI in real time.\",\"dateModified\":\"2026-09-28T20:58:48.574Z\",\"isPartOf\":{\"@id\":\"https://docs.userpilot.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.userpilot.com/configure/themes-and-design-library/switching-themes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.userpilot.com/configure/themes-and-design-library/switching-themes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Configure\",\"item\":\"https://docs.userpilot.com/configure/themes-and-design-library/get-started\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Themes and Design Library\",\"item\":\"https://docs.userpilot.com/configure/themes-and-design-library/get-started\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Theme Switching\",\"item\":\"https://docs.userpilot.com/configure/themes-and-design-library/switching-themes\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.userpilot.com/configure/themes-and-design-library/switching-themes#article\",\"headline\":\"Theme Switching\",\"name\":\"Theme Switching\",\"description\":\"Learn how to switch themes like light and dark mode in Userpilot using userpilot.theme() to match your app UI in real time.\",\"url\":\"https://docs.userpilot.com/configure/themes-and-design-library/switching-themes\",\"mainEntityOfPage\":{\"@id\":\"https://docs.userpilot.com/configure/themes-and-design-library/switching-themes#webpage\"},\"image\":\"https://docs.userpilot.com/up-logo-dark.svg\",\"dateModified\":\"2026-09-28T20:58:48.574Z\",\"keywords\":\"Userpilot, Theme Switching, Dark Mode, Light Mode, Dynamic Themes, userpilot.theme, SDK\",\"publisher\":{\"@id\":\"https://docs.userpilot.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.userpilot.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Userpilot Knowledge Base\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Userpilot Knowledge Base","nav":{"global":null,"tabs":[{"tab":"Platform","groups":[{"group":"Userpilot Overview","pages":[{"title":"What is Userpilot?","href":"/getting-started/what-is-userpilot"},{"title":"What does Userpilot offer?","href":"/getting-started/what-does-userpilot-offer"}]},{"group":"Welcome to Userpilot","pages":[{"title":"Get started with Userpilot","href":"/welcome-to-userpilot/get-started-with-userpilot"},{"title":"Userpilot Installation Quickstart","sidebarTitle":"Installation Quickstart","href":"/getting-started/quickstart"}]},{"group":"Users and Companies","pages":[{"title":"Users \u0026 Companies Dashboard","sidebarTitle":"Dashboard","icon":"users","href":"/users-companies/dashboard"},{"title":"Segments","icon":"chart-pie-simple","href":"/users-companies/segments"},{"title":"Profiles","icon":"address-card","href":"/users-companies/profile"}]},{"group":"Data and Events","pages":[{"group":"Events","icon":"code","pages":[{"title":"Events Dashboard","href":"/data-events/events-dashboard"},{"title":"Select The Right Element","sidebarTitle":"Element Detection","href":"/data-events/select-eleme-events"}]},{"group":"Event Types","icon":"tag","pages":[{"title":"Labeled Events (Visually/CSS)","href":"/data-events/autocapture/visual-labeler"},{"title":"Tracked Events","href":"/data-events/tracked-events/tracked-events"},{"title":"Custom Events","icon":"cube","href":"/data-events/tracked-events/custom-events"}]},{"group":"Auto-capture","icon":"bullseye-pointer","pages":[{"title":"Raw Events","href":"/data-events/autocapture/raw-events"},{"title":"Labeled Events (Visually/CSS)","href":"/data-events/autocapture/visual-labeler"},{"title":"Mobile Event Auto-Capture","href":"/data-events/autocapture/mobile-events-autocapture"}]},{"group":"Page Tracking","icon":"window","pages":[{"title":"Page Tracking","href":"/data-events/page-tracking/pages-dashboard"}]},{"group":"Mobile Screen Tracking","icon":"mobile-screen-button","pages":[{"title":"Track Mobile Screens Manually","href":"/data-events/mobile-screen-tracking/track-mobile-screens-manually"},{"title":"Mobile Screen Auto Capture","href":"/data-events/mobile-screen-tracking/mobile-screen-auto-capture"}]}]},{"group":"Chrome Extension Basics","pages":[{"title":"Button Actions","icon":"rectangle-history","href":"/ce-basics/button-actions"},{"title":"Embeds","icon":"square-plus","href":"/ce-basics/embeds"},{"title":"UI Templates","icon":"bookmark","href":"/ce-basics/ui-templates"},{"title":"AI Assistant","icon":"microchip-ai","href":"/ce-basics/ai-assistant"},{"title":"Personalize Content","icon":"user","href":"/ce-basics/personalize-content"},{"title":"Switching Themes","icon":"palette","href":"/ce-basics/switching-themes"},{"title":"Select The Right Element","sidebarTitle":"Element Detection","icon":"highlighter-line","href":"/ce-basics/select-element"},{"title":"Create \u0026 Preview Content","icon":"eye","href":"/ce-basics/preview-content"}]},{"group":"In App Engagement","pages":[{"group":"Flows","icon":"arrow-progress","pages":[{"group":"Getting Started","pages":[{"title":"Setup a Theme","href":"/in-app-engagement/flows/getting-started/themes"},{"title":"Create a Flow","href":"/in-app-engagement/flows/getting-started/create-flow"},{"title":"Set up Flow Settings","sidebarTitle":"Flow Settings","href":"/in-app-engagement/flows/getting-started/flow-settings"},{"title":"Best Practices","href":"/in-app-engagement/flows/getting-started/best-practices"},{"title":"Testing Flows","href":"/in-app-engagement/flows/getting-started/testing-flows"},{"title":"Flow performance analytics","href":"/in-app-engagement/flows/getting-started/Flow-performance-analytics"}]},{"group":"Chrome Extension","pages":[{"title":"Flow Logic","href":"/in-app-engagement/flows/CE/logic"},{"title":"Progressive Groups","sidebarTitle":"Groups","href":"/in-app-engagement/flows/CE/groups"},{"title":"Page Changes","href":"/in-app-engagement/flows/CE/page-changes"},{"title":"Localize Flows","href":"/in-app-engagement/flows/CE/localize"}]},{"group":"Use Cases","pages":[{"title":"Experiments","href":"/in-app-engagement/flows/use-cases/AB-testing"},{"title":"Ordering \u0026 Throttling","href":"/in-app-engagement/flows/use-cases/order-throttle"},{"title":"Form Responses","icon":"file-circle-question","href":"/in-app-engagement/flows/use-cases/forms"}]}]},{"group":"Spotlights","icon":"lightbulb-message","pages":[{"title":"Overview","href":"/in-app-engagement/spotlights/overview"},{"title":"Native Tooltips","href":"/in-app-engagement/spotlights/native-tooltips"},{"title":"Buttons","href":"/in-app-engagement/spotlights/buttons"},{"title":"Hotspots","href":"/in-app-engagement/spotlights/hotspots"},{"title":"Spotlight Settings ","href":"/in-app-engagement/spotlights/targeting-settings"}]},{"group":"Embeds","icon":"flag-pennant","pages":[{"title":"Create Banner","href":"/in-app-engagement/embeds/create-banner"},{"title":"Create Card","href":"/in-app-engagement/embeds/create-card"},{"title":"Targeting an Embed","href":"/in-app-engagement/embeds/targeting"}]},{"group":"Resource Center","icon":"book","pages":[{"title":"Resource Center Overview","sidebarTitle":"Overview","href":"/in-app-engagement/resource-center/overview"},{"group":"Create and Manage","pages":[{"title":"Resource Center Setup","sidebarTitle":"Content","href":"/in-app-engagement/resource-center/create"},{"title":"Resource Center Targeting Settings","sidebarTitle":"Targeting","href":"/in-app-engagement/resource-center/targeting"},{"title":"Resource Center Style and Triggering","sidebarTitle":"Style and Triggering","href":"/in-app-engagement/resource-center/style"},{"title":"Localize Resource Center Content","sidebarTitle":"Localization","href":"/in-app-engagement/resource-center/localization"},{"title":"Testing and Publishing Resource Center","sidebarTitle":"Testing and Publishing","href":"/in-app-engagement/resource-center/testing-publishing"},{"title":"Adding a Video to the Resource Center","sidebarTitle":"Video Content","href":"/in-app-engagement/resource-center/video-content"}]},{"group":"Knowledge Base","pages":[{"title":"Knowledge Base Integrations","sidebarTitle":"Knowledge Base Integrations","href":"/in-app-engagement/resource-center/knowledge-base-integrations"},{"title":"Zendesk Integration","href":"/in-app-engagement/resource-center/zendesk-integration"}]}]},{"group":"Checklists","icon":"list-check","pages":[{"title":"Getting Started with Checklists","sidebarTitle":"Overview","href":"/in-app-engagement/checklists/overview"},{"group":"Create and Manage","pages":[{"title":"Create a Checklist","href":"/in-app-engagement/checklists/create-checklist"},{"title":"Style Checklist Widget","sidebarTitle":"Style Widget","href":"/in-app-engagement/checklists/style"},{"title":"Localization","href":"/in-app-engagement/checklists/localization"},{"title":"Targeting a Checklist","href":"/in-app-engagement/checklists/targeting-checklist"},{"title":"Trigger and Beacon Settings","sidebarTitle":"Trigger and Beacon Settings","href":"/in-app-engagement/checklists/trigger-and-beacon-settings"},{"title":"Testing and Publishing Checklists","sidebarTitle":"Test and Publish","href":"/in-app-engagement/checklists/test-and-publish"}]},{"title":"Checklist Overview and Analytics","sidebarTitle":"Analytics","href":"/in-app-engagement/checklists/ChecklistOverviewandAnalytics"}]},{"group":"Mobile Content","icon":"mobile-notch","pages":[{"title":"Get started with mobile content","href":"/in-app-engagement/mobile-content/get-started-with-mobile-content"},{"title":"Build a Mobile Carousel","href":"/in-app-engagement/mobile-content/build-mobile-carousel"},{"title":"Build a Mobile Slideout","href":"/in-app-engagement/mobile-content/build-a-mobile-slideout"},{"title":"Mobile Push Notifications","href":"/in-app-engagement/mobile-content/mobile-push-notifications"},{"title":"Mobile content ordering \u0026 throttling","href":"/in-app-engagement/mobile-content/mobile-content-ordering"},{"title":"Mobile content overview","href":"/in-app-engagement/mobile-content/mobile-content-overview"},{"title":"Mobile content performance analytics","href":"/in-app-engagement/mobile-content/mobile-content-performance-analytics"},{"title":"Preparing to Send Push Notifications","href":"/in-app-engagement/mobile-content/preparing-to-send-push-notifications"}]},{"group":"Emails","icon":"envelope","pages":[{"title":"Userpilot's Email Sending Guidelines","href":"/in-app-engagement/emails/userpilots-email-sending-guidelines"},{"title":"Get started with emails","href":"/in-app-engagement/emails/get-started-with-emails"},{"title":"Setup and authenticate your email domain","href":"/in-app-engagement/emails/setup-and-authenticate-email-domain"},{"title":"Email performance analytics","href":"/in-app-engagement/emails/email-performance-analytics"},{"title":"Email deliverability performance metrics","href":"/in-app-engagement/emails/view-and-analyze-domain-level-performance"},{"title":"Add email addresses","href":"/in-app-engagement/emails/add-email-addresses"},{"title":"Customize email signature","href":"/in-app-engagement/emails/customize-email-signature"},{"title":"Manage email subscriptions","href":"/in-app-engagement/emails/manage-email-subscriptions"},{"title":"Manage unsubscribes","href":"/in-app-engagement/emails/manage-unsubscribes"},{"title":"Suppression list","href":"/in-app-engagement/emails/suppression-list"},{"title":"Design email theme","href":"/in-app-engagement/emails/design-email-theme"}]}]},{"group":"Workflows","pages":[{"title":"Building your Workflow","icon":"diagram-next","href":"/building-your-workflow"},{"title":"Workflow performance analytics","icon":"chart-line","href":"/workflow-performance-analytics"}]},{"group":"Product Analytics","pages":[{"group":"Reports","icon":"chart-mixed","pages":[{"title":"Trends","href":"/product-analytics/reports/trends"},{"title":"Funnels","href":"/product-analytics/reports/funnels"},{"title":"Paths","href":"/product-analytics/reports/paths"},{"title":"Retention","href":"/product-analytics/reports/retention"}]},{"group":"Dashboards","icon":"objects-column","pages":[{"title":"Product Usage Dashboard","href":"/product-analytics/dashboards/product-usage"},{"title":"Feature Engagement","href":"/product-analytics/dashboards/feature-engagement"},{"title":"User Activation Dashboard","href":"/product-analytics/dashboards/user-activation"},{"title":"User Retention Dashboard","href":"/product-analytics/dashboards/user-retention"},{"title":"Free to Paid Conversion","href":"/product-analytics/dashboards/free-to-paid-conversion"},{"title":"Expansion Revenue","href":"/product-analytics/dashboards/expansion-revenue"},{"title":"Custom Dashboards","href":"/product-analytics/dashboards/custom-dashboards"}]}]},{"group":"User Feedback","pages":[{"group":"NPS","icon":"face-smile","pages":[{"title":"Create an NPS","href":"/user-feedback/nps/create-nps"},{"title":"NPS Responses and Analytics","sidebarTitle":"NPS Responses","href":"/user-feedback/nps/nps-responses"},{"title":"NPS Settings","href":"/user-feedback/nps/nps-settings"}]},{"group":"Surveys","icon":"square-poll-horizontal","pages":[{"title":"Get started with survey","href":"/user-feedback/surveys/create-survey"},{"title":"Survey details and analytics","sidebarTitle":"Survey Responses","href":"/user-feedback/surveys/survey-details-and-analytics"},{"title":"User responses","href":"/user-feedback/surveys/user-responses"}]},{"title":"Form Responses","icon":"file-circle-question","href":"/in-app-engagement/flows/use-cases/forms"}]},{"group":"Session Replay","pages":[{"title":"Session Replay","icon":"play","href":"/sessions/session-replay"}]},{"group":"AI","pages":[{"title":"Welcome to Lia","icon":"sparkles","href":"/ai/welcome-to-lia"},{"title":"Userpilot MCP Server","icon":"sparkles","href":"/ai/userpilot-mcp-server"},{"group":"Agent Analytics","icon":"sparkles","pages":[{"title":"Overview","href":"/agent-a-overview"},{"title":"Topics","href":"/topics"},{"title":"Failure Signals","href":"/failure-signals"},{"title":"Agent Conversation Transcripts","href":"/agent-conversation-transcripts"}]}]},{"group":"Admin Console","pages":[{"title":"Admin Console","icon":"briefcase","sidebarTitle":"Overview","href":"/admin-console/overview"},{"title":"Cloning Content Across Applications","href":"/admin-console/duplicating-and-cloning-content-across-applications"}]},{"group":"Configure","pages":[{"group":"Themes and Design Library","icon":"palette","pages":[{"title":"Get started","href":"/configure/themes-and-design-library/get-started"},{"title":"Set up a web app theme","href":"/configure/themes-and-design-library/set-up-a-web-app-theme"},{"title":"Set up a mobile app theme","href":"/configure/themes-and-design-library/set-up-a-mobile-app-theme"},{"title":"Set up a design library","description":"Set up a Design Library in Userpilot to centralize brand styles, reuse approved design tokens, and maintain consistent, on-brand in-app experiences at scale.","href":"/configure/themes-and-design-library/set-up-a-design-library"},{"title":"Theme Switching","href":"/configure/themes-and-design-library/switching-themes"}]},{"group":"Notifications","icon":"bell","pages":[{"title":"Get started with notifications","description":"Get started with Userpilot notifications to stay aligned on product updates, performance insights, and system alerts via in-app, email, or Slack.","href":"/configure/notifications/get-started-with-notifications"},{"title":"System notifications","href":"/configure/notifications/system-notifications"},{"title":"Signal notifications","href":"/configure/notifications/signals"},{"title":"Digest notification","href":"/configure/notifications/digest"}]},{"group":"Teams","icon":"users","pages":[{"title":"Managing your team in Userpilot","href":"/configure/team-and-roles/managing-your-team-in-userpilot"},{"title":"Access and activity logs","href":"/configure/team-and-roles/access-and-activity-logs"},{"title":"Two-Factor Authentication (2FA)","href":"/configure/team-and-roles/2fa"},{"title":"SSO","href":"/configure/team-and-roles/sso"},{"title":"Just-in-Time (JIT) Provisioning","href":"/configure/team-and-roles/jit"},{"title":"SCIM Integration","href":"/configure/team-and-roles/scim"},{"title":"Bulk Teammate Import (CSV)","href":"/configure/team-and-roles/csv-import"}]},{"group":"Navigation and Interface","icon":"location-arrow","pages":[{"title":"Inbox","href":"/navigation-and-interface/inbox"},{"title":"Global search","href":"/navigation-and-interface/global-search"}]},{"group":"Accessibility","icon":"universal-access","pages":[{"title":"Accessibility in Userpilot in-app messages","href":"/accessibility/accessibility-in-userpilot-in-app-messages"}]},{"group":"Exclude Lists","icon":"list","pages":[{"title":"Exclude CSS Selectors","href":"/configure/exclude-lists/dynamic-attributes"},{"title":"Exclude Users and Companies","href":"/configure/exclude-lists/exclude-user"}]},{"group":"Data \u0026 Privacy","icon":"shield-halved","pages":[{"title":"Data Retention","icon":"clock-rotate-left","href":"/configure/data-retention/data-retention"},{"title":"Data Capture \u0026 Privacy","icon":"database","href":"/configure/data-capture-and-privacy/data-capture-and-privacy"}]}]},{"group":"Reference","icon":"book","pages":[{"title":"When to Use What in Userpilot","href":"/reference/when-to-use"},{"title":"Userpilot Data Model","href":"/reference/data-model"},{"title":"Userpilot Glossary","href":"/reference/glossary"},{"title":"Userpilot Error Reference","href":"/reference/errors"}]}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/overview"}]},{"tab":"Developer","pages":[{"title":"Developer","href":"/developer/installation/web"}]},{"tab":"APIs","pages":[{"title":"APIs","href":"/api-references/overview"}]}]},"basePath":"","title":"Theme Switching - Userpilot Knowledge Base","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}