RAN024 Markup the server render refuses
warning RAN024: The HTML parser restructures this markup (table-row) at table/tr, which the server render refuses at its first render.
Cause. The server plan raises for raw-text elements (script, style, iframe, noscript, xmp, noembed, noframes, plaintext) and for template elements, and for nesting that the HTML parser restructures. The client paths also refuse script and template. Each surfaces at the first render. The rule checks the nesting written in one definition with the view's own content-model rules, and reports the outermost restructured element.
Fix. Load scripts through the server document shell, write raw-text elements outside templates, and nest table parts as the parser builds them (tbody between table and tr).
Triggers
module Example
open Ranvier
open Ranvier.View
open Ranvier.View.Sugar
let grid = Component.template (fun _ () -> ()) (table () { tr () { td () { "x" } } })
Fixed
module Example
open Ranvier
open Ranvier.View
open Ranvier.View.Sugar
let grid = Component.template (fun _ () -> ()) (table () { tbody () { tr () { td () { "x" } } } })
Suppression. // fsharpanalyzer: ignore-line RAN024, with the reason on the line before. A client-only template takes the suppression.