Completed
Last Updated: 03 Jul 2026 06:07 by Jan
Release 2026 14.1.0 (Jul)
Created by: David Rhodes
Comments: 2
Category: TabStrip
Type: Bug Report
4

The TabStrip ActiveTabIdChanged event fires when the user navigates to another page.

The workaround is to detect app navigation and prevent the business logic execution. The example below is for the general case. If the app navigates programmatically with NavigationManager.NavigateTo(), you can set the IsNavigating flag immediately before that.

@implements IDisposable
@inject NavigationManager NavManager

<TelerikTabStrip ActiveTabId="@ActiveTabId"
                 ActiveTabIdChanged="@TabStripActiveTabIdChanged">
    @for (int i = 1; i <= TabCount; i++)
    {
        int tabIndex = i;

        <TabStripTab @key="@tabIndex" Title="@($"Tab {tabIndex}")" Id="@($"tab{tabIndex}")">
            <h2>Tab @tabIndex</h2>
        </TabStripTab>
    }
</TelerikTabStrip>

@code {
    private string ActiveTabId { get; set; } = "tab1";

    private bool IsNavigating { get; set; }

    private const int TabCount = 3;
    

    private async Task TabStripActiveTabIdChanged(string newActiveTabId)
    {
        if (IsNavigating)
        {
            return;
        }

        ActiveTabId = newActiveTabId;
    }

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            locationChangingRegistration = NavManager.RegisterLocationChangingHandler(OnLocationChanging);
        }
    }

    private IDisposable? locationChangingRegistration;

    private ValueTask OnLocationChanging(LocationChangingContext context)
    {
        IsNavigating = true;

        return ValueTask.CompletedTask;
    }

    public void Dispose() => locationChangingRegistration?.Dispose();
}

Completed
Last Updated: 24 Jun 2026 05:36 by ADMIN
Release 2026 Q3 (Aug)

The window actions OnClick handler does not execute when a predefined action (e.g. Close) is triggered. This prevents custom logic from running during standard close operations.

Reproducible on version 14.0.0

Repro: https://blazorrepl.telerik.com/wqaJcWbu45qZxbeX49

 

Completed
Last Updated: 18 Jun 2026 13:35 by ADMIN

We upgraded to the latest Telerik Blazor components (8.1.1).
I think there's a bug in the TabStrip when setting the index of the ActiveTabIndex or @bind-ActiveTabIndex.
The page will scroll to the active tab automatically.

Here's a link to the Repl - https://blazorrepl.telerik.com/GfaTEmbR45zQSzEq44

If you remove @bind-ActiveTabIndex="@ActiveTabIndex" from the TelerikTabStrip then the page load normally.

Thanks,

Cesar

Completed
Last Updated: 21 May 2026 06:45 by ADMIN
Release 14.0.0

When ActiveTabId is null, the TabStrip selects the first tab automatically, but does not render its content.

<TelerikTabStrip @bind-ActiveTabId="@TabStripActiveTabId">
    <TabStripTab Title="First" Id="t1">
        First tab content.
    </TabStripTab>
    <TabStripTab Title="Second" Id="t2">
        Second tab content.
    </TabStripTab>
    <TabStripTab Title="Third" Id="t3">
        Third tab content.
    </TabStripTab>
</TelerikTabStrip>

@code {
    private string? TabStripActiveTabId { get; set; }
}

Completed
Last Updated: 20 Apr 2026 08:00 by ADMIN
Release 2026 Q2

When clicking on a tab to drag it to reorder, it will process the tab change as soon as the tab is clicked to start a drag operation.  Preferably, we'd like the tab select action to only happen on a mouseup instead of a mousedown (and cancelled on drag.)  This is a reproduction in the REPL: https://blazorrepl.telerik.com/mAayPpGb59GjWvUT47.  But it so simple that you probably don't need it. This is the main razor file:

@page "/tabstrip/overview"
@page "/tabstrip/index"
<div class="demo-section">
    <TelerikTabStrip
                 ActiveTabIdChanged="@OnTabChangeAsync"
                 OnStateChanged="@OnTabStateChangeAsync"
                 OverflowMode="@TabStripOverflowMode.Menu"
                 EnableTabReorder="true"
                 Height="100%"
                 Width="100%"
                 PersistTabContent="true">
        <TabStripTab Title="Sofia">
            <WeatherCard City="Sofia"
                         TempC="23"
                         Forecast="ForecastType.Sunny">
            </WeatherCard>
        </TabStripTab>
        <TabStripTab Title="London">
            <WeatherCard City="London"
                         TempC="21"
                         Forecast="ForecastType.Cloudy">
            </WeatherCard>
        </TabStripTab>
        <TabStripTab Title="Paris">
            <WeatherCard City="Paris"
                         TempC="17"
                         Forecast="ForecastType.Rainy">
            </WeatherCard>
        </TabStripTab>
    </TelerikTabStrip>
    <h2>Active Tab Index: @ActiveTabIndex </h2>
</div>
@code {
    public int ActiveTabIndex { get; set; } = 1;
    public async Task OnTabChangeAsync(string newTabId) {
        await Task.CompletedTask;
    }
    public async Task OnTabStateChangeAsync(TabStripStateEventArgs args) {
        await Task.CompletedTask;
    }
}
<style>
    .box {
        margin: 4.5em 7.5em;
        padding: 3em;
        background-color: rgba(20,53,80,0.038);
        border: 1px solid rgba(20,53,80,0.05);
    }
    .demo-section {
        margin: 0 auto;
        padding: 3em;
        border: 1px solid rgba(20,53,80,0.14);
        box-shadow: 0 1px 2px 1px rgba(0,0,0,.08)0 3px 6px rgba(0,0,0,.08);
    }
    .auto {
        max-width: max-content;
    }
    .demo-section:not(.wide):not(.auto),
    .box:not(.wide):not(.auto) {
        max-width: 500px;
    }
    .box:after,
    .demo-section:after {
        content: ";
        display: block;
        clear: both;
        height: 0;
    }
    .box {
        margin: 4.5em auto;
    }
    .box:first-child {
        margin-top: 0;
    }
    .center {
        text-align: center;
    }
    .demo-section.editor {
        max-width: 100%;
        border: none;
    }
    .demo-alert {
        font: normal 18px "Metric";
        border-radius: 2px;
        margin: 20px auto 40px auto;
        padding: 20px;
        border-left: 4px solid;
    }
    .demo-alert-success {
        border-left-color: rgb(55,180,0);
        background: rgba(55,180,0, 0.1);
    }
    .demo-alert-info {
        border-left-color: rgb(83,146,228);
        background: rgba(83,146,228, 0.1);
    }
    .demo-alert-error {
        border-left-color: rgb(243, 23, 0);
        background: rgba(243, 23, 0, 0.1);
    }
    .demo-alert-warning {
        border-left-color: rgb(255, 192, 0);
        background: rgba(255, 192, 0, 0.1);
    }
</style>
Completed
Last Updated: 27 Feb 2026 12:50 by ADMIN
Created by: Alex
Comments: 1
Category: TabStrip
Type: Bug Report
2

  1. Activating the second tab leads to its header having the focus (correct).
  2. Using the tab key, the focus changes to the second tabs content (correct).
  3. Using "Shift + Tab", the focus changes back to the header row, but to the first tab header (incorrect, the second tab header should be focused).
  4. Using the right arrow key, the focus changes to the third tab header and this tab gets activated (actually correct, but confusing considering the previous point).

The problem is caused by the tab index of the tab headers not being updated properly. The first one seems to have 0 at all times, while all others stay at -1. Instead, the active tab header should have tab index 0, while all others get -1.

Completed
Last Updated: 11 Nov 2025 12:26 by ADMIN
Release 9.0.0
Created by: Chris
Comments: 5
Category: TabStrip
Type: Feature Request
33

One can generally loop through a collection of items to create several TabStrip instances as shown in the Tabs Collection article.

However, when I am dynamically adding or removing tabs I am hitting a variety of problems targeting:

  • The active tab is not correctly set;
  • The focus is not always set on the active tab;
  • Upon adding/removing a tab, all tabs are re-created and thus their content cannot be persisted;

Please add support for dynamic tabs.

Completed
Last Updated: 21 Jul 2025 12:38 by ADMIN
Release 2025 Q3 (Aug)

This currently happening in both my application, and in some of your demos.  If you set the focus to one of the tabs in the tabstrip, and then hit the tab key on the keyboard, it should set focus to the tabstrip content itself.  However, in some cases it sets the focus right back to the tab, so you can never navigate off of the tab with the keyboard.  

An example of this can be seen in the Overview and Scrollable Tabs demos, but it is working in position and alignment demo.  I should also note that if I open the Overview and Scrollable demos in the Repl, it also works.  So I'm not sure what is preventing it on the demo pages themselves.  Any help would be appreciated, since the same thing is happening in my projects after I upgraded the Telerik controls to v9.x.  Here are the demo links that I'm referring to.

https://demos.telerik.com/blazor-ui/tabstrip/overview

https://demos.telerik.com/blazor-ui/tabstrip/scrollable-tabs

 

Completed
Last Updated: 11 Dec 2024 14:09 by ADMIN
Release 2025 Q1 (Feb)
Created by: Michael
Comments: 1
Category: TabStrip
Type: Bug Report
6

Description

When the user selects an empty tab and then switches to another tab, the empty tab remains highlighted (appears as if it's still selected).

Reproduction

Reproduction: https://blazorrepl.telerik.com/mRkVczaV02S9QkmJ28

Steps:

1. Select the second tab (which has no content).
2. Select the first tab.

Both tabs are highlighted as selected.

Completed
Last Updated: 14 Nov 2024 09:29 by ADMIN
Release 7.0.0
Created by: LEE
Comments: 0
Category: TabStrip
Type: Bug Report
1

To deactivate all tabs I have to set the ActiveTabIndex parameter to -1.

This was working up to version 4.6.0. After that version I start getting an error:

Unhandled exception rendering component: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')

Here is an example with 4.6.0 where it is working:

https://blazorrepl.telerik.com/QSPuvKvI06m6AhF929

Here is an example with the current version:

https://blazorrepl.telerik.com/mIvOlqlI062NR9Vi59

 

Completed
Last Updated: 31 Oct 2023 12:14 by ADMIN
Release 5.0.0 (15 Nov 2023) (R1 PI1)
The issue can be reproduced in a TabStrip with Scrollable = true. The problem is easily observed if you programmatically change the ActiveTabIndex during runtime and activate a tab that is currently not in the visible part.

Reproduction: https://blazorrepl.telerik.com/QHFuExbc57Wq6HVG28.


Completed
Last Updated: 21 Mar 2023 14:21 by ADMIN
Release 4.2.0 (26/04/2023)

Here is a REPL test page. If the user navigates forwards and backwards via the Wizard buttons, the TreeView checkboxes persist their state. If the user navigates via the Stepper, the checkbox state is not retained.

The issue is triggered by the TabStrip.

A possible workaround is to prevent Stepper clicks with CSS:

.k-tabstrip .k-wizard .k-stepper .k-step {
  pointer-events: none;
}

Completed
Last Updated: 24 Nov 2022 11:36 by ADMIN

Accessibility issue for TelerikTabStrip (3.6.0)

Issue is found in the attached png file.

<TelerikTabStrip TabPosition="@TabPosition.Top">
    <TabStripTab Title="Handoff">
        <VideoHandoff></VideoHandoff>
    </TabStripTab>
    <TabStripTab Title="Handoff Status">
        <VideoHandoffStatus></VideoHandoffStatus>
    </TabStripTab>
</TelerikTabStrip>

Completed
Last Updated: 12 Oct 2022 07:26 by ADMIN
Release 3.7.0 (09 Nov 2022)
Created by: Nate
Comments: 0
Category: TabStrip
Type: Feature Request
1
I'm trying to add a context menu to a tab. When an item in the context menu is clicked, the content of the tab gets altered. However, the tab is not being rerendered. Even adding a call to StateHasChanged() is not causing a rerender. Only going away from the tab and coming back seems to cause a rerender.
Completed
Last Updated: 12 Oct 2022 07:26 by ADMIN
Release 3.7.0 (09 Nov 2022)

I am using the Telerik TabStrip and am trying to make the tabs scrollable while also showing additional tabs once a button is pressed.

When the additional tabs are shown, the tabs are not scrollable. Notice that when you toggle the visibility of the tabs, the new tabs being shown do not make the tab list scrollable.

=====ADMIN EDIT=====

Here is a possible workaround for the time being - REPL link.

Completed
Last Updated: 08 Sep 2022 10:03 by ADMIN
Release 3.6.0 (14 Sep 2022) (R3 2022)

The TabStrip throws ArgumentOutOfRangeException if the first tab is not Visible.

 

<TelerikTabStrip>
    <TabStripTab Title="A" Visible="false">
        Tab A
    </TabStripTab>

    <TabStripTab Title="B" Visible="true">
        Tab B
    </TabStripTab>

    <TabStripTab Title="C" Visible="true">
        Tab C
    </TabStripTab>
</TelerikTabStrip>

Completed
Last Updated: 25 Jul 2022 14:10 by ADMIN
Release 2.30.0
Created by: Roy
Comments: 10
Category: TabStrip
Type: Feature Request
56

At the moment, when tabs hide their components are removed, so when you go back to a tab, it initializes again  - for example, the OnInitializedAsync event fires where you fetch data, so you have to fetch the data again.

This behavior should be controlled through a property so one can keep the original behavior where the components are cleared from the DOM and memory.

Perhaps an option can be added where tabs are initialized not on initial load, but upon first activation only. Maybe the feature can become something like an enum - LoadMode="InitialRender|FirstRender|EveryRender" (working title off the top of my head).

At the moment, a solution you can use is to send the data to the tab from its contents through an event, and to pass it to them as a Parameter so you can check for it before fetching data.

Completed
Last Updated: 16 Jul 2022 08:47 by ADMIN
Release 2.21.0
Created by: nonick
Comments: 3
Category: TabStrip
Type: Feature Request
38
I would like there to be a template for tab strip label so that i could put anything i want in there rather than just text.
Completed
Last Updated: 31 May 2022 07:49 by ADMIN
Release 3.4.0
When setting the Blazor Tab control to Scrollable="true" the arrow buttons are set to be submit buttons.  This has a major problem in submitting a form they are embedded in, and there is no need for them to be submit button.  When manually edited to change them to not be submit buttons they operate as expected.
Completed
Last Updated: 09 May 2022 06:17 by ADMIN
Release 3.3.0
Created by: Uluç
Comments: 1
Category: TabStrip
Type: Feature Request
29

At the moment, if I have many tabs, their titles go off the screen (or the container of the tab strip). I want that they don't stretch my layout, or they don't become invisible.

---

ADMIN EDIT

For the time being, there are two workarounds you can consider:

  • adding a scrollbar to the tabs list:
    <style>
        /* sample settings for the parent of the tab strip to showcase how the rules below work */
        .tab-container {
            border: 1px solid red;
            width: 30%;
        }
        
        /* tab titles will now produce a scrollbar when too wide */
        .tab-container .k-tabstrip .k-tabstrip-items {
            flex-flow: inherit;
            max-width: 100%;
            overflow-x: auto;
            overflow-y: hidden;
        }
    
        /* just to showcase what happens when the content is wide - a separate scrollbar */
        .wide-content {
            background: yellow;
            width: 1200px;
        }
    </style>
    
    <div class="tab-container">
        <TelerikTabStrip>
            @foreach (var item in Enumerable.Range(1, 10))
            {
                <TabStripTab Title="@( $"Item {item}" )"><div class="wide-content">Content for item @item</div></TabStripTab>
            }
        </TelerikTabStrip>
    </div>

  • making the tabs drop into multiple rows:
    <style>
        /* sample settings for the parent of the tab strip to showcase how the rules below work */
        .tab-container {
            border: 1px solid red;
            width: 30%;
        }
    
            /* tabs will wrap on more than one row if there are too many to fit */
            .tab-container .k-tabstrip .k-tabstrip-items {
                flex-wrap:wrap;
            }
    </style>
    
    <div class="tab-container">
        <TelerikTabStrip>
            @foreach (var item in Enumerable.Range(1, 10))
            {
                <TabStripTab Title="@( $"Item {item}" )"><div class="wide-content">Content for item @item</div></TabStripTab>
            }
        </TelerikTabStrip>
    </div>

---

1 2