Radzen Blazor Components

ThemeService

The ThemeService allows you to change the theme of your application at runtime. It provides a set of methods to change the theme, get the current theme, and listen to theme changes.

lightbulb
The ThemeService is registered by the AddRadzenComponents() method and requires RadzenTheme. Check the Get started instructions.

In this demo a dropdown allows switching between all available themes (Material, Standard, Fluent, Default, Humanistic, Software), with toggles for Right-to-left direction and WCAG compliant colors, and ThemeChanged event logging theme changes to console.

 

Console log

Persist the theme link

The Radzen.Blazor library provides a built-in service that persists the current theme in a cookie. This means that the theme will be remembered even after the user closes the browser or navigates to a different page. The theme will be restored when the user returns to the application.

1. Open Program.cs file(s) and register the CookieThemeService:


builder.Services.AddRadzenCookieThemeService(options =>
{
    options.Name = "MyApplicationTheme"; // The name of the cookie
    options.Duration = TimeSpan.FromDays(365); // The duration of the cookie
});
lightbulb
Register CookieThemeService in all Program.cs files of your application.

2. Open MainLayout.razor and inject the CookieThemeService:

@inject CookieThemeService CookieThemeService

3. Open the App.razor file of your application and add this code:

@code {
    [CascadingParameter]
    private HttpContext HttpContext { get; set; }

    [Inject]
    private ThemeService ThemeService { get; set; }
    
    [Inject]
    private IOptions<CookieThemeServiceOptions> Options { get; set; }

    protected override void OnInitialized()
    {
        base.OnInitialized();

        if (HttpContext != null)
        {
            var theme = HttpContext.Request.Cookies["MyApplicationTheme"];

            if (!string.IsNullOrEmpty(theme))
            {
                ThemeService.SetTheme(theme, false);
            }
            else
            {
                HttpContext.Response.Cookies.Append("MyApplicationTheme", "material" , new CookieOptions { Secure = Options.Value.IsSecure, Expires = DateTimeOffset.Now.Add(Options.Value.Duration) });    
            }
        }
    }
}
All the tools in one place

Save Hours on Every Project

With Radzen Blazor subscription you get the full toolkit, including:

support

Dedicated support backed by proven expertise

palette

Premium themes and theme editor

widgets

Ready-to-use UI blocks

dashboard_customize

Complete app templates

format_shapes

Visual design-time-experience

Radzen Blazor Studio

Radzen Blazor Components, © 2018-2025 Radzen.
Source Code licensed under MIT

Demos Configuration

Premium Themes

  • Material 3
  • Material 3 Dark
  • Fluent
  • Fluent Dark

Free Themes

  • Material
  • Material Dark
  • Standard
  • Standard Dark
  • Default
  • Dark
  • Humanistic
  • Humanistic Dark
  • Software
  • Software Dark
An error has occurred. This app may no longer respond until reloaded. Reload 🗙