Mockups & Wireframes

Creating Wireframes That Actually Get Built

Build wireframes with proper annotations, responsive considerations, and tool recommendations that bridge design and development.

Core Wireframe Elements

Wireframes use a standardized visual vocabulary so everyone reads them the same way:

Layout grids: 12-column grids are standard. Columns define how content aligns. Use 8px spacing increments for all margins, paddings, and gaps. This ensures consistent spacing when developers implement the design.

Content blocks: Rectangles represent any content area. Label them with what they contain: "Product image", "Article body text", "User avatar". Use X-marked rectangles specifically for images (a box with diagonal lines).

Navigation: Horizontal bars for top navigation. Vertical panels for sidebars. Tabs and breadcrumbs rendered as horizontal element groups.

CTAs: Filled rectangles with action text. Different fill weight indicates primary vs secondary hierarchy.

Form elements: Inputs as bordered rectangles with label text above. Selects with a dropdown arrow. Checkboxes as small squares. Textareas as taller rectangles.

Information Hierarchy

Visual weight determines scanning order. Users scan in predictable patterns (F-pattern for text content, Z-pattern for sparse layouts). Your wireframe should guide the eye to the most important element first.

  • Largest element = most important
  • Darkest element = highest contrast = most attention
  • Position top-left to bottom-right = natural reading order
  • Whitespace around an element = increased importance

Annotation Best Practices

Annotations are the explanatory notes that make wireframes communicate beyond their appearance:

  • Label every interactive element with its action: "Click → navigates to /dashboard"
  • Describe states that are not visible: "Empty state shows illustration + 'No messages yet'"
  • Specify responsive behavior: "On mobile (<768px), sidebar collapses into hamburger menu"
  • Note data sources: "Shows last 5 orders from orders API, sorted by date desc"
  • Flag dependencies: "Requires auth — redirect to /login if session expired"

Common Wireframe Patterns

Dashboard layout: Fixed sidebar (240px) + top header (64px) + main content area with grid of metric cards. Sidebar contains navigation links. Header contains user profile and notifications.

Form page: Single-column centered layout (max 480px). Labels above inputs. Validation errors inline below inputs. Submit button full-width at bottom. Back link top-left.

List/detail (master-detail): Left panel with scrollable list of items. Right panel with detail view of selected item. On mobile, list and detail become separate screens.

Onboarding flow: Multi-step with progress bar at top showing "Step 2 of 4." Back and Next buttons at bottom. Step content centered, max 560px wide.

Mobile-First Wireframing

Design the smallest screen first (375px wide), then expand. Mobile-first means:

  1. Content hierarchy decisions are made at the most constrained size
  2. Progressive enhancement adds complexity for larger screens
  3. You never have to figure out how to "compress" a desktop layout into mobile — you build up

Tool Spotlight

Figma — Industry standard. Free tier with unlimited files for 3 collaborators. Huge plugin ecosystem. Excellent for wireframes that evolve into mockups without starting over.

Balsamiq — Purpose-built for wireframes. Hand-drawn sketch aesthetic intentionally prevents stakeholders from critiquing visual design instead of structure. Prevents the trap of "can we make it more blue?" $9/month.

Whimsical — Wireframes, flowcharts, and mind maps in one tool. Faster than Figma for early-stage wireframing. Free tier available.

Excalidraw — Free, zero learning curve, hand-drawn style. VS Code extension keeps it close to the code. Best for solo developers who want to wireframe without learning a design tool.

Key Takeaways

  • Use the standard visual vocabulary: X-boxes for images, labeled rectangles for content, filled rectangles for CTAs
  • Annotate every interactive element with its action, states, and responsive behavior
  • Common patterns (dashboard, form, list/detail, onboarding) solve most layout problems
  • Mobile-first design forces content hierarchy decisions at the most constrained viewport
  • Balsamiq's sketch aesthetic prevents premature visual design critique from stakeholders

Example

markdown
# Text-Based Wireframe Specification

Screen: Dashboard - Main View
Viewport: 1280px
Layout: [64px header] + [240px sidebar | main content area]

HEADER:
  Left:   Logo (120px wide)
  Center: Search bar (max 480px, placeholder "Search...")
  Right:  [Notifications bell] [Avatar + name dropdown]

SIDEBAR (sticky, full height):
  Top: "Dashboard" section label
  Links: Overview, Analytics, Users, Settings
  Active state: amber left border, bg highlight
  Bottom: [Logout link]

MAIN CONTENT:
  H1: "Overview"
  Stats row (4 cards, equal width):
    Each card: [Metric label] [Large number] [+N% vs last month]

  Below stats (2 columns, 60/40 split):
    Left: "Recent Activity" list (last 10 items, each with icon + text + time)
    Right: "Quick Actions" card with 4 action buttons

ANNOTATIONS:
  - Stats cards: data from /api/dashboard/stats, refresh every 60s
  - Activity list: infinite scroll, load 10 more on scroll to bottom
  - Mobile (<768px): sidebar hidden, hamburger menu, stats in 2x2 grid
Try it yourself — MARKDOWN