# 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

```fsharp
module Example

open Ranvier
open Ranvier.View
open Ranvier.View.Sugar

let grid = Component.template (fun _ () -> ()) (table () { tr () { td () { "x" } } })
```

### Fixed

```fsharp
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.
