---
title: "DF0040: JSON-Render View Used After Disposal"
description: "JSON-render view \"{id}\" was used after it was disposed."
canonical_url: "https://devfra.me/errors/df0040"
---
# DF0040: JSON-Render View Used After Disposal

> JSON-render view "\{id}" was used after it was disposed.

## Message

> JSON-render view "`{id}`" was used after it was disposed.

## Cause

`view.dispose()` unregisters the view's shared state and its broadcast listeners. Calling `update` or `patchState` on a disposed handle is a lifecycle bug: the shared state it targeted no longer exists.

## Example

```ts
const view = createJsonRenderView(ctx, { id: 'metrics', spec })
view.dispose()
view.update(nextSpec) // ✗ throws DF0040
```

## Fix

Create a fresh view with `createJsonRenderView` instead of reusing a disposed handle. The id is free to reuse once disposed.

## Source

- [`packages/json-render/src/node/create-view.ts`](https://github.com/devframes/devframe/blob/main/packages/json-render/src/node/create-view.ts): `update` / `patchState` throw this after `dispose()`.


## Sitemap

See the full [sitemap](https://devfra.me/sitemap.md) for all pages.
