---
title: MARKLESS_COMPUTED_ROW_WRITE
description: "Rows of a computed() list are read-only: a Markless compiler error."
sidebar: { hidden: true }
search: { keywords: ["COMPUTED_ROW_WRITE","computed row write","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_COMPUTED_ROW_WRITE: Cannot write to "<target>" because "<itemName>" is a row of "<name>", which is a computed() value, and computed() values are read-only.
A computed() value is derived from other state every time that state changes, so a change written into one of its rows would have no owner: the next recompute would replace it, and the serialized graph could not say where it belongs after resume.
Write the change to <sourceHint> instead, for example by mapping it to a new array: `<list> = <list>.map((item) => (item.id === <itemName>.id ? { ...item, field: value } : item))`. "<name>" recomputes and the row updates.
https://markless.dev/errors/MARKLESS_COMPUTED_ROW_WRITE
```

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/state-lowering.ts](https://github.com/compiled-run/markless/blob/main/packages/compiler/src/passes/state-lowering.ts)

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