---
title: MARKLESS_ROW_ELEMENT_HANDLE_UNSUPPORTED
description: "This is not a row-ownable element() handle: a Markless compiler error."
sidebar: { hidden: true }
search: { keywords: ["ROW_ELEMENT_HANDLE_UNSUPPORTED","row element handle unsupported","markless error"] }
pagination: false
---

**Error** from the compiler, while it builds your `.tsrx` files.

## What happened

Markless prints the message, the reason, and a suggestion:

```text
MARKLESS_ROW_ELEMENT_HANDLE_UNSUPPORTED: Cannot bind el={<handleName>} inside <element>. A row host takes a declared element() handle, named directly (el={row}) or as one member off a shared() instance (el={select.optionEls}). markless debugging playbook: run pnpm doctor, or read agent/markless.md in the installed @markless/core package
The keyed row record owns one host slot per authored handle and repeat key. Forwarded props, deeper paths, and nested repeat scopes do not identify one compiler-proven row-owned slot.
Declare the handle with const row = element<HTMLElement[]>() in this component or in the shared() factory the row reads, then bind el={row} - or el={family.row} - directly on the keyed row host.
https://markless.dev/errors/MARKLESS_ROW_ELEMENT_HANDLE_UNSUPPORTED
```

Words in angle brackets change from case to case.

## How to fix it

Start with the suggestion in the message above.

This page has no guide yet. [Help write it](/contributing/improve-these-docs).

## Where it comes from

`@markless/compiler` raises this code. Source:

- [packages/compiler/src/passes/semantic-graph/diagnostics.ts](https://github.com/compiled-run/markless/blob/main/packages/compiler/src/passes/semantic-graph/diagnostics.ts)

Read [how to read a Markless error](/tooling/diagnostics), or go back to [all error codes](/errors).
