Search code examples
blazorblazor-server-sideprerender

Detecting server pre-rendering in Blazor server app


Is there any way to detect the pre-rendering is going on in a Blazor component from the OnInitializedAsync life cycle method? I know the component workflow would call OnInitializedAsync called two times, the first time for the pre-rendering and the second time for actual rendering. Finally, called the OnAfterRenderAsync method in a single time for actual rendering.

But, I need to detect the pre-rendering in OnInitializedAsync. So that I could make some changes in pre-rendering and prevent it in actual rendering vice versa.

I checked the below GitHub issue, but it doesn't have a valid solution. I hope, it should be addressed in an API like IsPrerendering.

https://github.com/dotnet/aspnetcore/issues/17282

Thanks in advance.


Solution

  • There is no API built in, but you can use the HTTP context to detect it.

    I have wrapped this up in a nuget package here

    https://www.nuget.org/packages/PreRenderComponent

    Update:

    Since this time, things have changed and, while there is still no api for detecting this, you should only perform external calls (like JSInterop and HTTP calls) once OnAfterRender/OnAfterRenderAsync has been called.

    If you stick to this pattern, you don't ever need to know about pre-rendering status.