<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Topics tagged with theme]]></title><description><![CDATA[A list of topics that have been tagged with theme]]></description><link>https://fusionauth.io/community/forum/tags/theme</link><generator>RSS for Node</generator><lastBuildDate>Mon, 15 Jun 2026 14:24:29 GMT</lastBuildDate><atom:link href="https://fusionauth.io/community/forum/tags/theme.rss" rel="self" type="application/rss+xml"/><pubDate>Invalid Date</pubDate><ttl>60</ttl><item><title><![CDATA[How to Change Fonts in the FusionAuth Hosted Login Page]]></title><description><![CDATA[<p dir="auto">If you want to change the font on  the hosted login page and the login experience users are offered through FusionAuth, then this can be changed via our Themes. Very likely you will want to update the CSS associated with the theme you are using for the FusionAuth Application/Tenant.  Changes to the theme can be completed through this API: <a href="https://fusionauth.io/docs/apis/themes/advanced-themes" rel="nofollow ugc">https://fusionauth.io/docs/apis/themes/advanced-themes</a>.</p>
<p dir="auto">Alternatively, you can use the Admin UI to make changes to your CSS as well.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/3037/how-to-change-fonts-in-the-fusionauth-hosted-login-page</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/3037/how-to-change-fonts-in-the-fusionauth-hosted-login-page</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Localizing Social Login Button Text in FusionAuth Themes]]></title><description><![CDATA[<p dir="auto">Yes, you can localize social login buttons, but it requires customizing your theme.</p>
<p dir="auto">In the Theme <strong>Helpers</strong> file, locate the macro for each IdP button—for example, the Google button macro (starting around line 409). Change the text like this:</p>
<p dir="auto">From:</p>
&lt;div class="text"&gt;${identityProvider.lookupButtonText(clientId)?trim}&lt;/div&gt;

<p dir="auto">To:</p>
&lt;div class="text"&gt;${theme.message('google-login')}&lt;/div&gt;

<p dir="auto">Then, define <strong>google-login</strong> in your <strong>Theme → Messages</strong> bundles for each supported language. Repeat the same process for the Apple button macro (starting around line 363).</p>
<p dir="auto">This allows the social login button text to display localized strings based on the user’s selected language.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/3001/localizing-social-login-button-text-in-fusionauth-themes</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/3001/localizing-social-login-button-text-in-fusionauth-themes</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Migrating HTML Email Templates to FusionAuth: Best Practices and Considerations]]></title><description><![CDATA[
<strong>Providing Empty Strings for Text Templates</strong>:<br />
While it is technically possible to provide empty strings for the text version of the templates, this is not recommended. FusionAuth sends both the text and HTML versions of the email, with each MIME encoded. The email client decides which version to render. If a user’s email client renders the text version, the email will appear blank if the text template is empty.<br />
<strong>Recommendation</strong>:<br />
Create a simple text version of the email by stripping out the HTML formatting (e.g., removing <strong>&lt;p&gt;&lt;/p&gt;</strong>, <strong>&lt;a&gt;&lt;/a&gt;</strong>, etc.). You can refer to FusionAuth's default email templates for examples of how to format text-only emails.
<strong>Criteria for Sending Text vs. HTML Emails</strong>:<br />
The choice of rendering text or HTML emails is determined by the recipient's email client. Most modern email clients prioritize HTML, but some may fall back to text if they do not support HTML or if the user has configured their preferences for plain text emails.
<strong>Forcing HTML Emails</strong>:<br />
FusionAuth does not provide a way to force emails to always render in HTML, as the decision ultimately lies with the recipient’s email client. However, providing well-constructed HTML templates ensures that most users will receive the intended design, as HTML rendering is the default behavior for the majority of email clients.

<p dir="auto">By creating both text and HTML versions of your templates, you ensure compatibility with all email clients while maintaining your preferred HTML formatting for most users.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/2967/migrating-html-email-templates-to-fusionauth-best-practices-and-considerations</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2967/migrating-html-email-templates-to-fusionauth-best-practices-and-considerations</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Migrating HTML Email Templates to FusionAuth: Best Practices and Considerations]]></title><description><![CDATA[
<strong>Providing Empty Strings for Text Templates</strong>:<br />
While it is technically possible to provide empty strings for the text version of the templates, this is not recommended. FusionAuth sends both the text and HTML versions of the email, with each MIME encoded. The email client decides which version to render. If a user’s email client renders the text version, the email will appear blank if the text template is empty.<br />
<strong>Recommendation</strong>:<br />
Create a simple text version of the email by stripping out the HTML formatting (e.g., removing <strong>&lt;p&gt;&lt;/p&gt;</strong>, <strong>&lt;a&gt;&lt;/a&gt;</strong>, etc.). You can refer to FusionAuth's default email templates for examples of how to format text-only emails.
<strong>Criteria for Sending Text vs. HTML Emails</strong>:<br />
The choice of rendering text or HTML emails is determined by the recipient's email client. Most modern email clients prioritize HTML, but some may fall back to text if they do not support HTML or if the user has configured their preferences for plain text emails.
<strong>Forcing HTML Emails</strong>:<br />
FusionAuth does not provide a way to force emails to always render in HTML, as the decision ultimately lies with the recipient’s email client. However, providing well-constructed HTML templates ensures that most users will receive the intended design, as HTML rendering is the default behavior for the majority of email clients.

<p dir="auto">By creating both text and HTML versions of your templates, you ensure compatibility with all email clients while maintaining your preferred HTML formatting for most users.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/2827/migrating-html-email-templates-to-fusionauth-best-practices-and-considerations</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2827/migrating-html-email-templates-to-fusionauth-best-practices-and-considerations</guid><dc:creator><![CDATA[wesley]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Is there a way to see how advanced themes have changed between releases?]]></title><description><![CDATA[<p dir="auto">The best way to see this is to visit the <a href="https://github.com/fusionauth/fusionauth-theme-history" rel="nofollow ugc">theme history github repo</a>.</p>
<p dir="auto">It is mentioned in the <a href="https://fusionauth.io/docs/customize/look-and-feel/advanced-theme-editor#upgrading" rel="nofollow ugc">theme upgrade documentation</a>.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/2770/is-there-a-way-to-see-how-advanced-themes-have-changed-between-releases</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2770/is-there-a-way-to-see-how-advanced-themes-have-changed-between-releases</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How can I remove all CSS from the FusionAuth hosted login pages?]]></title><description><![CDATA[<p dir="auto">I was able to do this by:</p>

copying the advanced theme
editing it
navigating to the Helpers file
inside that, going to the head freemarker macro

<p dir="auto">I removed these lines:</p>
  &lt;link rel="stylesheet" href="/css/font-awesome-4.7.0.min.css"/&gt;
  &lt;link rel="stylesheet" href="/css/fusionauth-style.css?version=${version}"/&gt;

  [#-- Theme Stylesheet, only Authorize defines this boolean.
       Using the ?no_esc on the stylesheet to allow selectors that contain a &gt; symbols.
       Once insde of a style tag we are safe and the stylesheet is validated not to contain an end style tag --]
  [#if !(bypassTheme!false)]
    &lt;style&gt;
    ${theme.stylesheet()?no_esc}
    &lt;/style&gt;
  [/#if]

<p dir="auto">If you want to use the CSS field in the theme to store your CSs, leave in</p>
[#if !(bypassTheme!false)]
    &lt;style&gt;
    ${theme.stylesheet()?no_esc}
    &lt;/style&gt;
[/#if]

<p dir="auto">which pulls in the CSS associated with the theme. Doing so allows you to add all your custom CSS to the CSS field in the theme and have it automatically included. If you don't do this, make sure you add your CSS to this macro (either directly or via a link). You'll want to make sure you keep it in as you upgrade.</p>
<p dir="auto">Removing all the CSS will result in a page that looks like the one below.</p>
<p dir="auto">unstyled login page</p>
]]></description><link>https://fusionauth.io/community/forum/topic/2768/how-can-i-remove-all-css-from-the-fusionauth-hosted-login-pages</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2768/how-can-i-remove-all-css-from-the-fusionauth-hosted-login-pages</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Propagate rememberDevice property from Login page back to redirect or similar]]></title><description><![CDATA[<p dir="auto"><a class="mention plugin-mentions-user plugin-mentions-a" href="https://fusionauth.io/community/forum/uid/20">@dan</a> Thank you for the prompt response I will give this a try soon.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/2634/propagate-rememberdevice-property-from-login-page-back-to-redirect-or-similar</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2634/propagate-rememberdevice-property-from-login-page-back-to-redirect-or-similar</guid><dc:creator><![CDATA[carvalhom]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Updates and custom themes]]></title><description><![CDATA[<p dir="auto"><a class="mention plugin-mentions-user plugin-mentions-a" href="https://fusionauth.io/community/forum/uid/2485">@billyudi</a> We are working on a update to the upgrade guide which will discuss how to map the new theme files and changes.</p>
<p dir="auto">You can follow along with it here:</p>
<p dir="auto"><a href="https://github.com/FusionAuth/fusionauth-site/pull/2166" rel="nofollow ugc">https://github.com/FusionAuth/fusionauth-site/pull/2166</a></p>
<p dir="auto">I get your larger question though, which is, if I customize my theme, and then I upgrade from 1.45 to 1.46 and 1.46 introduces a new themed page, what does that new themed page look like?</p>
<p dir="auto">Have you tried testing this out?</p>
]]></description><link>https://fusionauth.io/community/forum/topic/2409/updates-and-custom-themes</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/2409/updates-and-custom-themes</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How to trim input fields]]></title><description><![CDATA[<p dir="auto"><a class="mention plugin-mentions-user plugin-mentions-a" href="https://fusionauth.io/community/forum/uid/1424">@fusionauth007</a> yo! I filed a Github report on this, check out <a href="https://github.com/FusionAuth/fusionauth-issues/issues/1779#issue-1290719564" rel="nofollow ugc">Trim whitespace from user input on backend (username/emails) #1779</a></p>
<p dir="auto">I’ve detailed a workaround we’ve got running in prod 👍</p>
]]></description><link>https://fusionauth.io/community/forum/topic/1762/how-to-trim-input-fields</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/1762/how-to-trim-input-fields</guid><dc:creator><![CDATA[matthartstonge]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Custom theme deployment between environments]]></title><description><![CDATA[<p dir="auto"><a class="mention plugin-mentions-user plugin-mentions-a" href="https://fusionauth.io/community/forum/uid/114">@fred-fred</a> said in <a href="/community/forum/post/3982">Custom theme deployment between environments</a>:</p>
<blockquote>
<p dir="auto">It looks like we can transport with the API using Theme Update Endpoints and sharing environment API keys so one environment can see the next environment to copy the themes over.</p>
</blockquote>
<p dir="auto">Yes, that's what I'd recommend. You could have different API keys for each environment and have the script that promotes the theme pull the API key from a secrets store. Make sure you limit the API key to the themes endpoint.</p>
<p dir="auto">You also might be interested in this post: <a href="https://fusionauth.io/community/forum/topic/1306/parameterizing-themes">https://fusionauth.io/community/forum/topic/1306/parameterizing-themes</a> which indicates how you can have the same theme files point to different resources in staging/prod/dev/etc.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/1373/custom-theme-deployment-between-environments</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/1373/custom-theme-deployment-between-environments</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Different base resources for an environment]]></title><description><![CDATA[<p dir="auto">The best way to do this is to put a value on the tenant.data object. From there you can access it in each theme.</p>
<p dir="auto">So, for the tenant in the dev environment, set tenant.data.assethost to dev.example.com. For the prod environment,  set tenant.data.assethost to dev.example.com.</p>
<p dir="auto">Then, in your theme, you'd have something like this:</p>
&lt;link rel="stylesheet" href="${tenant.data.assethost}/styles.css"/&gt;

<p dir="auto">The reason to use the tenant object is that it is <a href="https://fusionauth.io/docs/v1/tech/themes/template-variables/#common-variables" rel="nofollow ugc">available on every theme template</a>.</p>
<p dir="auto">This does mean that your tenant configuration will differ slightly between environments. You can also replicate this field value between tenants if you are using multiple tenants.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/1337/different-base-resources-for-an-environment</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/1337/different-base-resources-for-an-environment</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Parameterizing themes]]></title><description><![CDATA[<p dir="auto">We don’t currently resolve any environment variables in the themes, or anything other than what is documented here: <a href="https://fusionauth.io/docs/v1/tech/themes/template-variables/" rel="nofollow ugc">https://fusionauth.io/docs/v1/tech/themes/template-variables/</a></p>
<p dir="auto">But you can set variables in the Helpers template using assign that can be used in other templates. You could use a templating language like jinja to build the Helpers template at build time and then a script to load it during deploy. (Or even sed.)</p>
<p dir="auto">You can also create different themes (a dev theme, a qa theme) and assign them via scripts to the different environments (unsure if you are using different tenants to represent environments or different FusionAuth instances, but the concept is the same).</p>
]]></description><link>https://fusionauth.io/community/forum/topic/1306/parameterizing-themes</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/1306/parameterizing-themes</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Determining which OAuth grant you are in within the themes]]></title><description><![CDATA[<p dir="auto">The only two grants that are relevant to an interactive flow are the authorization grant, and the implicit grant.</p>
<p dir="auto">I don’t recommend you use the implicit grant at all, so that leaves only the authorization grant.</p>
<p dir="auto">If the authorization grant is happening, response_type will be code.</p>
<p dir="auto">If the authorization grant is occurring due to a device grant, the user_code variable will be set.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/1058/determining-which-oauth-grant-you-are-in-within-the-themes</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/1058/determining-which-oauth-grant-you-are-in-within-the-themes</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Custom themes for an application]]></title><description><![CDATA[<p dir="auto"><a class="mention plugin-mentions-user plugin-mentions-a" href="https://fusionauth.io/community/forum/uid/20">@dan</a> This was delivered in 1.27.0</p>
]]></description><link>https://fusionauth.io/community/forum/topic/534/custom-themes-for-an-application</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/534/custom-themes-for-an-application</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Customizing the freemarker theme templates]]></title><description><![CDATA[<p dir="auto">You can put whatever you want in the theme pages, but it's a good idea to keep them lean so the user has a quick login experience. After all, most folks don't care about auth except when it doesn't work!</p>
<p dir="auto">You can optionally pass info in the state parameter, that will come back to the caller. This can be encoded JSON, as long as it is url safe. You will want to make sure that you don't put too much stuff in there, as there are URL length limits for browsers (though I learned that chrome has a <a href="https://chromium.googlesource.com/chromium/src/+/master/docs/security/url_display_guidelines/url_display_guidelines.md#URL-Length" rel="nofollow ugc">URL size limit of 2MB!</a>). Here's an <a href="https://ritou.medium.com/how-to-use-oauth-2-0-state-parameter-other-than-csrf-protection-ff64f91ebc8b" rel="nofollow ugc">example of using the state parameter for application state</a>.</p>
<p dir="auto">Or if you have different applications and redirect URLs, then just gathering metrics on the URLs may give you insight into who is using login, and from where.</p>
<p dir="auto">Sort of depends upon what type of analytics you need.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/489/customizing-the-freemarker-theme-templates</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/489/customizing-the-freemarker-theme-templates</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Locked out due to template changes]]></title><description><![CDATA[<p dir="auto">This link is probably what you are looking for:</p>
<p dir="auto"><a href="https://fusionauth.io/docs/v1/tech/themes/#handling-failures" rel="nofollow ugc">https://fusionauth.io/docs/v1/tech/themes/#handling-failures</a></p>
]]></description><link>https://fusionauth.io/community/forum/topic/294/locked-out-due-to-template-changes</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/294/locked-out-due-to-template-changes</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[How can I use a custom font when customizing my theme?]]></title><description><![CDATA[<p dir="auto">In order to use a custom font within a publicly accessible FusionAuth template for a hosted deployment, pull the font from a CDN or other server hosting the font.</p>
<p dir="auto">FusionAuth doesn't have any persistent storage for custom theme assets. You can use any font you like as long as it can be included via a tag.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/138/how-can-i-use-a-custom-font-when-customizing-my-theme</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/138/how-can-i-use-a-custom-font-when-customizing-my-theme</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Can FusionAuth host my images?]]></title><description><![CDATA[<p dir="auto"><a class="mention plugin-mentions-user plugin-mentions-a" href="https://fusionauth.io/community/forum/uid/20">@dan</a> I would love for this to be included in the <a href="https://fusionauth.io/docs/v1/tech/themes/" rel="nofollow ugc">themes documentation</a> since it's something that every theme developer needs to figure out, and of course the default theme's assets (favicon etc.) are hosted locally and served by the FusionAuth server itself - so the answer that this can't be done for your own theme assets is <a href="https://fusionauth.io/community/forum/post/6026">non-obvious</a>!</p>
]]></description><link>https://fusionauth.io/community/forum/topic/133/can-fusionauth-host-my-images</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/133/can-fusionauth-host-my-images</guid><dc:creator><![CDATA[damien]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Social providers in Register web page]]></title><description><![CDATA[<p dir="auto">Hiya,</p>
<p dir="auto">The issue is that the identityProviders map needs to be populated for that login script to work, and the class behind this page doesn't provide that map. So for now I don't see a way to do this.</p>
<p dir="auto">There is an open github issue to allow identity providers to be displayed on the registration page. I'd suggest adding your use case to that issue: <a href="https://github.com/FusionAuth/fusionauth-issues/issues/554" rel="nofollow ugc">https://github.com/FusionAuth/fusionauth-issues/issues/554</a> and I'm happy to rename it to something more general. Alternatively you can file a new issue if you feel the use case is distinct enough.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/128/social-providers-in-register-web-page</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/128/social-providers-in-register-web-page</guid><dc:creator><![CDATA[dan]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Is there a way to upload images for custom login page themes?]]></title><description><![CDATA[<p dir="auto"><a class="mention plugin-mentions-user plugin-mentions-a" href="https://fusionauth.io/community/forum/uid/20">@dan</a> Last week ago I am facing that issue and I am still not got any solution.</p>
]]></description><link>https://fusionauth.io/community/forum/topic/46/is-there-a-way-to-upload-images-for-custom-login-page-themes</link><guid isPermaLink="true">https://fusionauth.io/community/forum/topic/46/is-there-a-way-to-upload-images-for-custom-login-page-themes</guid><dc:creator><![CDATA[bayerruff]]></dc:creator><pubDate>Invalid Date</pubDate></item></channel></rss>