Microsoft states "Prerendering is the process of initially rendering page content on the server without enabling event handlers for rendered controls. The server outputs the HTML UI of the page as soon as possible in response to the initial request, which makes the app feel more responsive to users".
But there is no easy way to differentiate what is rendered during prerender from what is rendered in the final rendering.
As an example, take a page which fetches data from a database. It could be usefull to render only static content during prerendering and defer database access to final rendering. But there is no simple way to do it. Basically you end up doing the time expensive task (database access) two times, first while prerendering and then again in final rendering.
This has been pointed out already an basically negate any speed or responsiveness advantage prerendering is supposed to bring.
Is prerendering currently an half baked functionality? Any actual real use case for it?
It all depends on your requirements. Just because you don't see a need, doesn't mean that other's don't have one.
There are many, many questions on this very confusing topic. I've referenced two that might be of interest below.
No, but it and InteractiveAuto need a government health warning.
[Personal View] You need to really understand what your doing before starting to use them in production. They've been overhyped: everyone seems to jump straight in for the full a la carte option, get into trouble and blame the framework.
See:
Blazor .Net 8 splash screen
How can I get the reference to a component in OnInitializedAsync() - InteractiveServer Mode
How do I share state to be injected across components rendered in different render modes in blazor .net 8?
And a commentary of mine on the overall rendermode topic:
https://github.com/ShaunCurtis/Blazor.ExploreRendering/blob/master/Documents/Going-For-Broke.md