Skip to main content

Data Interfaces

When to use: Building admin panels, data management screens, list views, or any interface where users Create, Read, Update, and Delete records.

The test: Can users perform every CRUD operation without confusion about what will happen next?


CRUD Quick Reference

OperationUser QuestionDesign Answer
Create"How do I add one?"Obvious + button or CTA near the list
Read"Where is it?"Scannable list with search and filter
Update"How do I change it?"Inline edit, modal, or dedicated page
Delete"What if I make a mistake?"Confirmation dialog + undo option

Create Patterns

Checklist

  • "Add" or "Create" button visible without scrolling
  • Button positioned near the list it adds to (top-right convention)
  • Form fields match expected data model
  • Required vs optional fields visually distinct (asterisk + "(optional)" label)
  • Success feedback after creation (toast or redirect to new item)
  • New item visible in list immediately (optimistic UI or refetch)

Container Decision

ConditionUse
1-5 simple fields, context mattersModal
6+ fields or complex validationDedicated page
Quick-add from list viewInline row or modal
Sub-items or relationships neededDedicated page

Read Patterns

Checklist

  • Key identifier visible (name, ID, date)
  • Status indicators with icon + text (not color alone)
  • Sortable columns with visible sort indicator
  • Search for lists over 20 items
  • Filter controls for lists over 50 items
  • Empty state with CTA to create first item
  • Loading skeleton (not spinner) during data fetch

Data Volume Rules

VolumePatternPagination
Under 20 itemsShow allNone needed
20-100 itemsPaginatedPage numbers, 10-25 per page
Over 100 itemsSearch requiredInfinite scroll or paginated with search
Over 1000 itemsServer-side search and filterLoad on demand only

Information Density

CheckThresholdHow to Measure
Columns per table7 or fewer visible at onceCount columns
Row height40-56px for data tablesDevTools: measure row height
Cell contentTruncate at 50 characters, tooltip for full valueCheck longest cell in each column
Actions per row3 or fewer (use overflow menu for more)Count action buttons

Update Patterns

Inline Edit

Best for: single field changes, status toggles.

  • Click or pencil icon activates edit mode
  • Save/Cancel controls appear immediately
  • Validation before save
  • Visual feedback on successful change
  • Escape cancels, Enter saves

Best for: 2-5 fields, maintaining list context.

  • "Edit" action clearly visible in row
  • All editable fields shown in modal
  • Save and Cancel buttons with clear visual hierarchy
  • Escape key cancels without saving
  • Focus returns to triggering element on close

Page Edit

Best for: complex forms, URL-addressable records, mobile.

  • "Edit" link in list row or detail view
  • Back navigation clear and working
  • Save button prominent and fixed (sticky) for long forms
  • Unsaved changes warning on navigation away
  • Form state persists on browser refresh

Decision Matrix

ScenarioBest Pattern
Single field toggleInline
1-3 simple fieldsInline or Modal
4-6 fieldsModal
7+ fieldsPage
Needs a URLPage
User needs list contextModal
Primary use is mobilePage
Sub-items or file uploadsPage

Delete Patterns

Checklist

  • Delete action visually destructive (red text/icon, end of action list)
  • Confirmation dialog states item name and consequences
  • Confirmation requires explicit action (not just "OK" -- type item name for critical deletes)
  • Undo available for 10 seconds after deletion (soft delete)
  • Success confirmation after delete

Confirmation Dialog Template

Title: Delete [Item Name]?

Body: This will permanently remove [Item Name]
and all associated [related data].
This action cannot be undone.

[Cancel] [Delete]
↑ red, right-aligned

Soft Delete Pattern

  1. Mark as deleted in database (don't remove)
  2. Show "Deleted" toast with Undo button (10-second window)
  3. Hide from UI after timeout
  4. Actually purge after 30 days (background job)

Bulk Operations

  • Select all / deselect all checkbox in table header
  • Count of selected items shown ("3 selected")
  • Bulk actions disabled when nothing selected
  • Confirmation required for bulk delete (show count)
  • Progress indicator for operations over 2 seconds

Container Decisions

When to use page vs modal vs drawer.

Decision Tree

Does it need a URL?
├── Yes --> PAGE
└── No
└── Is it a quick confirmation?
├── Yes --> MODAL (alert dialog)
└── No
└── Is it a multi-step process?
├── Yes --> PAGE (wizard)
└── No
└── Can content exceed viewport height?
├── Yes --> PAGE or DRAWER
└── No
└── Does user need list context?
├── Yes --> MODAL or DRAWER
└── No --> PAGE
CheckThresholdHow to Verify
Content fits viewportNo scrolling inside modalCheck at 768px viewport height
Maximum actions2 primary actionsCount buttons
Focus trappedTab stays within modalTab test
Escape closesPressing Escape dismissesKeyboard test
Focus returnsFocus moves back to trigger on closeClose modal, check focus
Background lockedCannot interact with background contentClick outside modal content area
Don'tWhyInstead
Modal opens modalConfusing depthUse page or multi-step wizard
Scrolling modal contentUsers lose positionUse page
Complex forms in modalRisk of data lossUse page with save
Navigation inside modalBreaks mental modelUse page
Modal for mobile primary flowPoor mobile UXUse full page

Drawer Use Cases

  • Supplementary content (help, settings panels)
  • Quick edits to list items (detail panel)
  • Filters and sorting options
  • Preview without full navigation

State Management

Loading States

  • Skeleton placeholders during initial load (not spinner)
  • Disabled actions during save (prevent double-submit)
  • Progress indicator for operations over 2 seconds
  • Optimistic UI for fast-feeling interactions

Error States

  • Field-level validation with specific messages
  • Form-level error summary at top of form
  • Retry button on network failure
  • User data preserved on error (never clear the form)

Empty States

  • Descriptive message (not "No data found")
  • CTA to create first item
  • Optional illustration or icon

Keyboard Shortcuts

For power users in data-heavy interfaces:

ActionShortcut
Create newN
Edit selectedE
Delete selectedDelete or Backspace
Select allCmd/Ctrl + A
Search/filter/ or Cmd/Ctrl + F
SaveCmd/Ctrl + S
Cancel/closeEscape

Quick Diagnosis

SymptomLikely CauseFix
Users can't find "Add"Button not visible or labeled differentlyTop-right + button, clear label
Accidental deletesNo confirmation dialogAdd confirmation with item name
Lost work on editNo unsaved changes warningWarn on navigation, auto-save draft
Slow for power usersMouse-only interfaceAdd keyboard shortcuts
Users confused by editUnclear where to clickAdd explicit Edit button per row
Modal feels crampedToo much content for modalMove to page or drawer
Can't find itemsNo search or filterAdd search for 20+ items, filter for 50+
Table unreadable on mobileToo many columnsResponsive card layout or column priority

Context