---
title: Quick Add
slug: quick-add
kind: pattern
summary: Create a record from one field, in the place the record belongs, without leaving the screen or opening a form.
problem: >-
  Adding one item costs a full context switch — click New, wait for a page,
  fill a form, save, come back, find your place. So people batch things up in
  their head or on paper, and half of them never get entered.
family: [capture]
data_shape: [collection]
principles: [friction, minimize-distance, consistency]
interaction: [editing, direct-manipulation]
density: low
complexity: low
status: stable
visibility: public
use_when:
  - The record can meaningfully exist with one field — usually a name or a title.
  - People add items while looking at the list they belong to.
  - Adding happens often, and often several at once.
avoid_when:
  - The record needs several fields to be valid or safe.
  - Creation triggers something external, where a stray Enter would be costly.
  - Adding is rare and deliberate, where a full form is the appropriate ceremony.
alternatives:
  - slug: minimal-form
    when: Two or three fields are genuinely needed, so a small form is honest.
  - slug: spreadsheet-import
    when: People are adding dozens or hundreds at a time from somewhere else.
ask_leo: |
  Add a quick-add row to this list.

  - Put a single input at the point in the list where the new item will appear —
    the bottom of the list, or the top of the column — not in a separate panel.
  - Enter creates the item and leaves the field focused and empty, ready for the
    next one. Adding five things in a row must not require re-clicking.
  - Escape leaves the field and clears it without creating anything.
  - Create optimistically: the row appears immediately. If the save fails, mark
    that row with the error and keep the text.
  - Inherit context from where the person is. An item added inside a group
    belongs to that group; do not ask again for something the position already
    says.
  - Offer a way to open the full form for the occasional item that needs more —
    a small link beside the field, never the default path.
  - Never lose typed text. If someone types and clicks away, keep it as a draft
    rather than discarding it.
related:
  - title: Minimal Form
    url: /patterns/minimal-form
    summary: The same instinct at form scale — ask for what is needed to exist, and no more.
  - title: Optimistic Update
    url: /patterns/optimistic-update
    summary: What makes quick add feel instant, and the failure path it owes you.
---

## Anatomy

```
  Phase 2 — Framing
  ┌────────────────────────────────────────┐
  │ ✓ Stud partitions, level 3             │
  │ ✓ Fire-rated board to risers           │
  │ ✓ Door frames                          │
  │ + Add a task…                    (form)│ ← in place, context inherited
  └────────────────────────────────────────┘
      ↑ Enter creates and stays focused
```

Four rules, and the second is the one that makes it a different pattern from a
small form:

1. **In place.** The field sits where the record will appear, so the position
   answers questions the form would have asked.
2. **Enter creates and stays.** The field clears and keeps focus, so five items
   is five lines of typing.
3. **Escape cancels cleanly.**
4. **An escape hatch to the full form**, for the one in twenty that needs more.

## Why it works

It removes the *context switch*, which is most of the cost of adding something.
A form is not slow because of typing; it is slow because you leave what you were
doing, and then have to get back.

The staying-focused behaviour is what turns it from a convenience into a
capture tool. When adding the second item costs nothing, people enter things as
they think of them rather than batching — and things that get batched get
forgotten.

Inheriting context is the quiet part. An item typed into the Framing group is a
Framing task; nothing has to ask which group, because the person already said it
by where they typed.

## Getting it wrong

- **A field that loses focus after each add**, which makes the second item as
  expensive as the first and defeats the pattern.
- **Discarding typed text on blur.** Someone types half a task, gets
  interrupted, clicks away, and it is gone.
- **A quick add that opens a modal.** That is a form with a smaller button.
- **Silent failure**, where the row appears and then vanishes with no message —
  see [optimistic update](/patterns/optimistic-update).
- **No escape hatch**, so the occasional richer item forces a trip elsewhere
  anyway.
- **Quick add on something with consequences.** A stray Enter should never send,
  charge or notify anyone.

## Exemplars

**Linear's issue creation from the board** puts the field in the column, so the
status is set by where you typed and never asked.

**Todoist and Things** built their whole capture model on this: one field, Enter,
still focused. The result is that people actually record tasks at the moment
they occur rather than later.

**Google Calendar's click-a-slot** is the same idea in two dimensions — the time
is set by where you clicked, and the only thing left to type is the title.

The extractable rule: **quick add is a capture tool, not a shortened form.**
If adding the second item is not almost free, the pattern has not been built.
