Skip to content

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.

Edit this page