# Claude Canvas, case study

> Claude Canvas is a project by Santiago Gómez de la Torre. This case study covers the problem it solves, what his role was and what came of it.

Canonical URL: https://sgomez.dev/en/work/claude-canvas

Updated on 2026-10-02

## The problem

In Claude Code, when Claude needs you to pick a file, approve a change or fill in some details, your answer comes back as prose that Claude has to interpret. Claude Canvas opens an interactive pane next to the conversation and returns your answer as an exact value.

## My role

I forked it from David Siegel's proof of concept and extended it substantially. I left a single IPC layer where there had been two incompatible ones and added reusable primitives, composition and nine canvas types (picker, form, table, image, diff, dashboard, calendar, document and flight).

## Stack

- TypeScript
- Bun
- React
- Ink
- tmux

## The outcome

Nine canvases, more than 600 tests and CI on three operating systems. It works in kitty, Ghostty, iTerm2, WezTerm, foot, Windows Terminal and xterm. For images, quadrant blocks give 61% less error than half blocks. Released under the MIT license.

## Links

- [Source](https://claude-canvas.sgomez.dev)
- [Repository](https://github.com/sgomez-dev/claude-canvas)
- [Based on dvdsgl/claude-canvas, by David Siegel](https://github.com/dvdsgl/claude-canvas)

## More case studies

- [NudaUI Semantic Search (RAG)](https://sgomez.dev/en/work/nudaui-semantic-search-rag)
- [NudaUI](https://sgomez.dev/en/work/nudaui)

---

More machine-readable formats: [llms.txt](https://sgomez.dev/en/llms.txt), [agents.md](https://sgomez.dev/en/agents.md), [OpenAPI](https://sgomez.dev/openapi.json), [sitemap](https://sgomez.dev/sitemap.xml).
