---
title: MARKLESS_ELEMENT_HANDLE_IDREF_WIDGET_ROOT
description: "This shared() element() handle cannot be named by an IDREF here: a Markless compiler error."
sidebar: { hidden: true }
search: { keywords: ["ELEMENT_HANDLE_IDREF_WIDGET_ROOT","element handle idref widget root","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_ELEMENT_HANDLE_IDREF_WIDGET_ROOT: Cannot resolve <attributeName>={<source>} because "<handleName>" is declared in a shared() factory that is not { scope: 'widget' }.
A widget-scoped factory is one graph per rendered widget, so the minted id has to carry which widget it belongs to. That token exists for every rendered widget, its root included, and never exists for a page-wide factory.
Give the factory { scope: 'widget' } and keep both ends of the relationship inside one rendered widget.
https://markless.dev/errors/MARKLESS_ELEMENT_HANDLE_IDREF_WIDGET_ROOT
```

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).
