Intermittent ObjectDisposedException on quick navigation in Syncfusion 32.x (.NET 10, Blazor Server) – JS interop runs after component disposal

Summary

After upgrading our application from .NET 9 + Syncfusion 31.2.x to .NET 10 + Syncfusion 32.1.x, our testers and end users started encountering intermittent ObjectDisposedException errors during fast page navigation and sometimes during initial page load.

Due to the frequency and severity of the issue, we were forced to roll back the Syncfusion version.

The highest stable version for us is 31.2.18.

Starting from 32.1.19 and all later 32.x versions, the issue reproduces.

The problem affects multiple Syncfusion components (e.g. Scheduler, Grid, Carousel, etc.). We isolated and reproduced the issue using SfSchedule in a minimal demo project.


Environment

  • Framework: .NET 10

  • Hosting model: Blazor Server

  • Affected Syncfusion versions:

    • ❌ 32.1.19 and later

    • ✅ 31.2.18 and earlier (no issue)


Observed Behavior

During quick navigation, Syncfusion components may still execute JS interop callbacks even after the component has already been disposed, resulting in an ObjectDisposedException involving DotNetObjectReference.

This appears timing-sensitive and may require multiple attempts to reproduce consistently.

Example error:

System.ObjectDisposedException: Cannot access a disposed object. Object name: 'Microsoft.JSInterop.DotNetObjectReference`1'

Minimal Reproduction

Demo project: SfDemo

Repro steps:

  1. dotnet run in SfDemo

  2. Navigate to http://localhost:5268/schedule-demo

  3. The page renders SfSchedule and immediately navigates away on first render (to simulate real-world quick navigation).

Note: This repro does not rely on any async data call; it reproduces even with static in-memory data.
The issue is intermittent/timing-sensitive and may require repeated tries (fast navigation back and forth) to trigger.


Actual Result

Unhandled exception (sample stack):

System.ObjectDisposedException: Cannot access a disposed object. Object name: 'Microsoft.JSInterop.DotNetObjectReference`1[[System.Object, System.Private.CoreLib, Version=10.0.0.0]]' at Microsoft.JSInterop.JSRuntime.TrackObjectReference[TValue](DotNetObjectReference`1 dotNetObjectReference) ... at Syncfusion.Blazor.Schedule.SfSchedule`1.OnAfterScriptRendered() at Syncfusion.Blazor.SfBaseComponent.OnAfterRenderAsync(Boolean firstRender) at Syncfusion.Blazor.Schedule.SfSchedule`1.OnAfterRenderAsync(Boolean firstRender)

Expected Result

Navigating away during component initialization should not throw exceptions.
JS interop callbacks should be skipped/cancelled if the component has already been disposed.


Additional Note

We are observing similar OnAfterScriptRendered-related ObjectDisposedException errors in multiple Syncfusion components, not limited to SfSchedule. This may indicate a broader lifecycle/disposal-related issue introduced in Syncfusion 32.x.


Attachment: SfDemo_141594fc.zip

9 Replies

VR Vijay Ravi Syncfusion Team January 16, 2026 08:20 AM UTC

Hi Kadir Boylu,

Greetings from Syncfusion Support.


Your reported problem is considered a bug. The fix for this defect will be included in our upcoming weekly patch release, which is expected to be rolled out by January 27, 2026. You can track the status of the fix at the following link:


Feedback link: An exception occurs in the Blazor Schedule component when quickly navigating between pages in Blazor | Feedback Portal


Disclaimer: Inclusion of this solution in the weekly release may change due to other factors including but not limited to QA checks and works reprioritization.


Regards,

Vijay



VR Vijayakumar Rajasekar Syncfusion Team January 28, 2026 11:25 AM UTC

Hi Kadir Boylu,

Thanks for your patience.

We are glad to announce that our weekly patch release 32.1.25 has been rolled out successfully. The issue where An exception occurs in the Blazor Schedule component when quickly navigating between pages. has been resolved in that release itself.
To access this fix, we suggest you update the package to the latest version (32.1.25) and we include the workable sample for your reference.

Please find attached sample for your reference.
Release Note: we will refresh
Root Cause: When navigating away within a few seconds of the Scheduler rendering, a race condition occurs where JavaScript continues invoking methods after the component has been disposed. This leads to “Cannot access a disposed object” errors from stale DotNetObjectReference callbacks.
Regards,
Vijayakumar R

Attachment: SfDemo_141594fc_e487d7e3.zip


JS Johannes Steurer | add-in.gmbh May 7, 2026 08:14 AM UTC

Hi,

once in a while (can't say exactly under which circumstances) I get this error in the latest version 33.2.4

Is it possible that the issue still exist in some scenarios? I always see it in the SfTooltip Context (maybe because i wrap a lot of components in these tooltips).


System.ObjectDisposedException: Cannot access a disposed object.

  Object name: 'Microsoft.JSInterop.DotNetObjectReference`1[[System.Object, ...]]'.

     at Microsoft.JSInterop.DotNetObjectReference`1.ThrowIfDisposed()

     at Microsoft.JSInterop.JSRuntime.TrackObjectReference[TValue](DotNetObjectReference`1)

     at Microsoft.JSInterop.Infrastructure.DotNetObjectReferenceJsonConverter`1.Write(...)

     ...

     at Microsoft.JSInterop.JSRuntimeExtensions.InvokeVoidAsync(...)

     at Syncfusion.Blazor.Internal.SfBaseUtils.InvokeMethod(...)

     at Syncfusion.Blazor.SfBaseComponent.InvokeMethod(...)

     at Syncfusion.Blazor.Popups.SfTooltip.OnAfterScriptRendered()

     at Syncfusion.Blazor.SfBaseComponent.OnAfterRenderAsync(Boolean firstRender)

     at Syncfusion.Blazor.Popups.SfTooltip.OnAfterRenderAsync(Boolean firstRender)



VR Vijayakumar Rajasekar Syncfusion Team May 8, 2026 04:03 PM UTC

Hi Johannes Steurer, 

Thank you for bringing this issue to our attention. We have thoroughly reviewed your latest report and attempted to replicate the error in latest version, by quickly navigating between pages and enabling the schedule quick info template. However, we were unable to reproduce the issue in our environment.

To assist you further, we kindly request that you review the sample we have attached. If possible, please try to replicate your scenario using this sample. Additionally, we would appreciate it if you could share your scheduler configuration, a video demonstrating the issue, or detailed steps to reproduce the problem. This information will be extremely helpful for our continued investigation.
We appreciate your cooperation and look forward to your response. Please let us know if there is anything else we can assist you with.

Regards,

Vijayakumar R


Attachment: ScheduleDemo_c087cb73.zip


KB Kadir Boylu June 10, 2026 01:43 PM UTC

Hi Syncfusion Team,


We have finally been able to upgrade and retest this issue with Syncfusion Blazor version 33.2.10.


Unfortunately, the problem does not appear to be fully resolved.


As we mentioned in the original report, this does not seem to be limited to SfSchedule. In our current tests, we are observing similar disposal / lifecycle / JS interop related errors in multiple components, including Schedule, Stepper, and Grid. We are still continuing our regression tests, so it is possible that the same class of issue may appear in other Syncfusion components as well.


Also, the issue is not limited only to quick navigation or fast page transitions. We have also observed similar errors when closing dialogs or when components are removed from the page during normal UI flows.


With DetailedErrors enabled, we are seeing the following error:


System.ArgumentException: There is no tracked object with id '3'. Perhaps the DotNetObjectReference instance was already disposed. (Parameter 'dotNetObjectId')

   at Microsoft.JSInterop.JSRuntime.GetObjectReference(Int64 dotNetObjectId)

   at Microsoft.JSInterop.Infrastructure.DotNetDispatcher.BeginInvokeDotNet(...)


With DetailedErrors disabled, the errors appear as failed JSInvokable callbacks, for example:


- TriggerCreatedEvent

- SuppressTooltip

- StepChangedHandler

- ColumnWidthChanged

- LastRowBorder


We are also seeing a Scheduler-side JavaScript error during teardown/render timing:


Microsoft.JSInterop.JSException: Cannot read properties of null (reading 'offsetTop')

TypeError: Cannot read properties of null (reading 'offsetTop')

    at e.renderAppointments (...syncfusion-blazor.min.js...)

    at t.onDataReady (...)

    at e.dataReady (...)

    at Syncfusion.Blazor.Schedule.SfSchedule`1.OnDataReady()

    at Syncfusion.Blazor.Schedule.Internal.MonthEventTable`1.OnAfterRenderAsync(Boolean firstRender)


These errors do not always block the page from continuing to work, but seeing repeated JS interop / disposed object related errors in the browser console is concerning for us, especially because we did not experience this behavior before upgrading from the previously stable Syncfusion version.


From the stack traces, it looks like JavaScript callbacks may still be trying to invoke .NET instance methods or access DOM elements after the related component has already been disposed or removed from the page.


Could you please clarify the root cause of these errors in version 33.2.10?


Also, could you confirm whether the fix delivered in 32.1.25 only covered a specific Scheduler scenario, or whether it was intended to address the broader stale JS callback / disposed DotNetObjectReference lifecycle issue across Syncfusion Blazor components?


Current environment:

- .NET 10

- Blazor Server

- Syncfusion Blazor 33.2.10

- Issue is intermittent and timing-sensitive

- Observed during quick navigation, fast page transitions, dialog closing, and component removal scenarios


We are continuing our tests and can provide additional component-specific traces as we encounter them.


Regards,

Kadir



VR Vijayakumar Rajasekar Syncfusion Team June 15, 2026 02:47 PM UTC

Hi Kadir Boylu,
Thank you for your continued patience as we investigate these issues. We understand this has been ongoing since your upgrade to version 33.2.10, and we are committed to resolving it with you.
Replication Status:
Issue #1 - Successfully Replicated:
System.ArgumentException: There is no tracked object with id '3'.
Perhaps the DotNetObjectReference instance was already disposed.
We can consistently reproduce this during quick navigation/dialog closing. We are investigating the root cause in our component lifecycle.
Issue #2 - Unable to Replicate:
We not able to replicate below scenario by performing quick navigation.
Microsoft.JSInterop.JSException: Cannot read properties of null (reading 'offsetTop')
    at MonthEventTable`1.OnAfterRenderAsync(Boolean firstRender)
We were able to replicate a similar error using the following scenario:
Our Replication Steps:
  1. Scheduler initialized with CurrentView="View.Week" (without two-way binding)
  2. User switches to Month view via toolbar
  3. User performs date navigation (Prev/Next)
  4. Error occurs
Suspected Root Cause:
We suspect this may be related to the CurrentView binding. When CurrentView is set without two-way binding (e.g., CurrentView="View.Week"), the component's internal state can become desynchronized with the UI during view switching, causing rendering errors.
Could you please verify:
1. Are you using two-way binding for CurrentView?
<!-- One-way binding (may cause issue) -->
<SfSchedule CurrentView="View.Week" ...>
<!-- Two-way binding (recommended) -->
<SfSchedule @bind-CurrentView="currentView" ...>
2. If you are using two-way binding, could you share:
  • Appointment count (approximate number)
  • Exact repro steps: User actions and timing (e.g., "navigate away within 2 seconds of page load")
  • Browser and OS version
This will help us determine if there's an additional scenario causing this error.
We appreciate your cooperation in troubleshooting this issue. Please let us know what you find.

Regards,
Vijayakumar R

Attachment: SfDemo_141594fc_73ab7bfd.zip


KB Kadir Boylu June 23, 2026 08:21 PM UTC

Hi Vijayakumar Rajasekar,


This repro uses two-way binding for CurrentView:


<SfSchedule @bind-CurrentView="@CurrentView" ...>


The Scheduler issue still occurs with two-way binding enabled.


Environment:

- .NET 10

- Blazor Server

- Syncfusion Blazor 33.2.10


Scheduler repro steps:

1. Open /scheduler-public-api-repro

2. Wait for the scheduler to load

3. Quickly switch between Month and Week views

4. Observe browser console / server logs


Although this may look like an edge case in the sample because the actions are performed very quickly, we are seeing this more easily in our production environment during real customer workflows. Our concern is not only that the error appears in the console, but that in some cases it can leave the user in a broken UI state and force them to refresh the page or reconnect the Blazor circuit. At minimum, these lifecycle / JS interop timing errors should be handled gracefully without breaking the active screen or circuit connection.


In addition to the Scheduler repro, the same sample project also includes a Grid-related repro page. I will include this in the video as well.


Regards,

Kadir


Attachment: repro_8c51f1b6.zip


VR Vijay Ravi Syncfusion Team June 24, 2026 04:21 PM UTC

Hi Kadir Boylu,

 

Greetings from Syncfusion Support.

 

Your reported problem is considered a bug. The fix for this defect will be included in our upcoming weekly patch release, which is expected to be rolled out by July 8, 2026. You can track the status of the fix at the following link:

 

Feedback link: An exception occurs in the Blazor Schedule component when quickly navigating between views in Blazor | Feedback Portal

 

Disclaimer: Inclusion of this solution in the weekly release may change due to other factors including but not limited to QA checks and works reprioritization.

 

Regards,

Vijay



VR Vijay Ravi Syncfusion Team July 16, 2026 05:39 AM UTC

Hi Kadir Boylu,

 

We are glad to announce that our weekly release (V34.1.30) has been rolled out successfully. The fix for the issue has been included in our weekly release(34.1.30) or latest version. Upgrade to the latest version to resolve the issue.

 

Release notes:  https://blazor.syncfusion.com/documentation/release-notes/34.1.30?type=all#schedule

 

Feedback link: https://www.syncfusion.com/feedback/74658/an-exception-occurs-in-the-blazor-schedule-component-when-quickly-navigating

 

Root Cause: When navigating between calendar views (Month ↔ Vertical/Week/Day), DOM elements specific to each view don't exist in other views. The code assumed these elements were always present and tried to access properties like .offsetTop, .offsetHeight, and .style without null checks, causing "Cannot read properties of null" exceptions.

 

Regards,
Vijay


Loader.
Up arrow icon