[x] Using ReactDOM.hydrateRoot(domNode, creactNode) and ReactDOM.createRoot(domNode).render(reactNode) instead ReactDOM.render and ReactDOM.hydrate
[x] Removed eval from server-side operations.
[x] Switched to using System.Text.Json for React props serialization by default, with the option to switch to Newtonsoft.Json by calling the ConfigureNewtonsoftJsonPropsSerializer method
[x] Replaced the workerpool npm package with the multi-node.js mode in the Jering.Javascript.NodeJS library.
[x] Updated to the latest npm and nuget packages.
[x] Removed the ReactWithInitAsync function in favor of using the bootstrapInPlace and bootstrapScriptContentProvider options in tag helpers.
[x] Added the bootstrapInPlace setting in tag helpers for manual component hydration or calling ReactInitJavaScript.
[x] Removed the StartEngines, MaxEngines, and MaxUsagesPerEngine settings
[x] Optimized performance by returning plain/text to avoid serialization/deserialization issues
[x] Added the EnginesCount and FileWatcherDebounceMs settings
[x] Switched to using renderToPipeableStream instead of renderToString on the server for better performance
[x] Replaced serialization and deserialization with Microsoft.IO.RecyclableMemoryStream for output HTML and props.
[x] Introduced a custom ASP.NET Core view engine that can stream the entire page directly from node to the client using renderToPipeableStream. This provides better performance (up to 50%) and support for Suspense
ReactDOM.hydrateRoot(domNode, creactNode)
andReactDOM.createRoot(domNode).render(reactNode)
insteadReactDOM.render
andReactDOM.hydrate
System.Text.Json
for React props serialization by default, with the option to switch to Newtonsoft.Json by calling theConfigureNewtonsoftJsonPropsSerializer
methodJering.Javascript.NodeJS
library.ReactWithInitAsync
function in favor of using the bootstrapInPlace and bootstrapScriptContentProvider options in tag helpers.bootstrapInPlace
setting in tag helpers for manual component hydration or callingReactInitJavaScript
.StartEngines
,MaxEngines
, andMaxUsagesPerEngine
settingsEnginesCount
andFileWatcherDebounceMs
settingsrenderToPipeableStream
instead ofrenderToString
on the server for better performanceMicrosoft.IO.RecyclableMemoryStream
for output HTML and props.