Skip to main content
New: Deck Doctor. Upload your deck, get CPO-level feedback. 7-day free trial.
TemplateFREEโฑ๏ธ 1-3 hours per pattern

Interaction Pattern Template for Product Managers

An interaction pattern documentation template for design systems. Covers pattern anatomy, trigger/action mapping, state transitions, keyboard behavior,...

By Tim Adairโ€ข Last updated 2026-03-05
Interaction Pattern Template for Product Managers preview

Interaction Pattern Template for Product Managers

Free Interaction Pattern Template for Product Managers โ€” open and start using immediately

or use email

Instant access. No spam.

Need a custom version?

Forge AI generates PM documents customized to your product, team, and goals. Get a draft in seconds, then refine with AI chat.

Generate with Forge AI

What This Template Is For

An interaction pattern is a reusable solution to a common UX problem. "How does the user dismiss a modal?" "How does inline editing work?" "What happens when a form has server-side validation errors?" These questions get answered differently by every designer and every engineer unless the answers are documented once and referenced everywhere.

Interaction patterns sit above components in the design system hierarchy. A button is a component. A confirmation dialog is an interaction pattern that uses buttons, text, and a modal overlay. A drag-and-drop reorder is an interaction pattern that uses list items, drag handles, and visual drop indicators. Patterns describe behavior across multiple components working together.

This template provides a structure for documenting each interaction pattern. It covers the pattern anatomy (what elements participate), triggers and actions (what initiates the pattern and what happens), state transitions (how the pattern moves between states), keyboard behavior, accessibility requirements, responsive adaptation, and common mistakes.

This works alongside the design system documentation template for the individual components that patterns compose. The motion design template defines the animation parameters that bring patterns to life. For teams building AI-driven interaction patterns, understanding established non-AI patterns is essential context. The design QA template provides the checklist for verifying patterns are implemented correctly.


How to Use This Template

  1. Identify patterns by auditing your product for repeated behaviors. Any time two features solve the same interaction problem differently (two different approaches to inline editing, two different confirmation flows), that is a pattern waiting to be documented.
  2. Document one pattern at a time. Start with the most common and most inconsistently implemented patterns.
  3. Write for two audiences: designers (who need to know when to use the pattern and what it looks like) and engineers (who need to know exactly how it behaves, including keyboard interactions and edge cases).
  4. Include a state diagram. A visual representation of states and transitions prevents ambiguity that text descriptions alone cannot resolve.
  5. Always include a "When NOT to use" section. Half the value of a pattern library is steering people away from patterns that seem appropriate but are wrong for the context.

The Template

Pattern Overview

FieldDetails
Pattern Name[Name, e.g., Confirmation Dialog]
Category[Navigation / Data Entry / Feedback / Disclosure / Selection / Layout]
Status[Draft / Documented / Implemented / Deprecated]
Owner[Designer and engineer responsible]
Related Components[Components used, e.g., Modal, Button, Alert]
WAI-ARIA Pattern[Reference, e.g., "Dialog (Modal)" from WAI-ARIA Authoring Practices, or N/A]
Last Updated[Date]

Description. [2-3 sentences. What interaction problem does this pattern solve? When does the user encounter it?]


When to Use

  • [Scenario 1, e.g., "User is about to perform a destructive action that cannot be undone"]
  • [Scenario 2, e.g., "Action has significant consequences the user should confirm"]
  • [Scenario 3, e.g., "User needs to provide additional input before the action proceeds"]

When NOT to Use

  • [Scenario where this pattern is wrong, e.g., "Low-stakes actions like closing a modal or toggling a setting. Use inline undo instead."]
  • [Alternative pattern to use instead, with explanation]
  • [Anti-pattern, e.g., "Never chain multiple confirmations. If the user confirms once, do not ask again."]

Pattern Anatomy

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ [Element 1, e.g., Trigger Button]   โ”‚
โ”‚                                     โ”‚
โ”‚ [Element 2, e.g., Overlay/Backdrop] โ”‚
โ”‚                                     โ”‚
โ”‚ [Element 3, e.g., Dialog Content]   โ”‚
โ”‚   โ”œโ”€ [Sub-element, e.g., Title]     โ”‚
โ”‚   โ”œโ”€ [Sub-element, e.g., Message]   โ”‚
โ”‚   โ””โ”€ [Sub-element, e.g., Actions]   โ”‚
โ”‚       โ”œโ”€ [Cancel Button]            โ”‚
โ”‚       โ””โ”€ [Confirm Button]           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Element descriptions:

ElementRequiredDescription
[Element 1]Yes/No[What it is and what it does]
[Element 2]Yes/No[What it is and what it does]
[Element 3]Yes/No[What it is and what it does]

Trigger and Action Map

TriggerActionFeedback
[e.g., User clicks "Delete"][e.g., Confirmation dialog opens][e.g., Backdrop fades in, dialog scales up]
[e.g., User clicks "Confirm"][e.g., Item is deleted, dialog closes][e.g., Dialog scales down, toast appears "Item deleted"]
[e.g., User clicks "Cancel"][e.g., Dialog closes, no action taken][e.g., Dialog fades out, focus returns to trigger]
[e.g., User presses Escape][e.g., Same as Cancel][e.g., Same as Cancel]
[e.g., User clicks backdrop][e.g., Same as Cancel or nothing (specify)][...]

State Transitions

StateEntry ConditionExit ConditionVisual
IdleDefault stateUser triggers the pattern[Trigger element is interactive, no overlay]
Active / OpenPattern triggeredUser completes or cancels[Pattern elements visible, overlay active]
LoadingUser confirms, async action in progressAction succeeds or fails[Confirm button shows spinner, other actions disabled]
SuccessAsync action completedAutomatic after delay[Pattern closes, success feedback shown]
ErrorAsync action failedUser retries or cancels[Error message displayed within pattern]

State diagram:

[Idle] โ”€โ”€triggerโ”€โ”€> [Active]
  ^                    โ”‚
  โ”‚         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
  โ”‚         โ”‚         โ”‚
  โ”‚      cancel     confirm
  โ”‚         โ”‚         โ”‚
  โ”‚         โ”‚     [Loading]
  โ”‚         โ”‚       โ”‚    โ”‚
  โ”‚         โ”‚    success  error
  โ”‚         โ”‚       โ”‚    โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   [Success] [Error]
                    โ”‚       โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜โ”€โ”€> [Idle] (after dismiss/retry)

Keyboard Behavior

KeyActionContext
[e.g., Enter][e.g., Activates focused button][e.g., Within dialog]
[e.g., Escape][e.g., Closes dialog (same as Cancel)][e.g., While dialog is open]
[e.g., Tab][e.g., Moves focus to next interactive element][e.g., Focus trapped within dialog]
[e.g., Shift+Tab][e.g., Moves focus to previous interactive element][e.g., Focus trapped within dialog]
[e.g., Arrow keys][e.g., Not applicable / navigates options][...]

Focus management:

EventFocus Behavior
Pattern opens[e.g., Focus moves to first interactive element inside the pattern]
Pattern closes (confirm)[e.g., Focus returns to the element that triggered the pattern]
Pattern closes (cancel)[e.g., Focus returns to the trigger element]
Pattern closes (error)[e.g., Focus stays within pattern, moves to error message]

Accessibility Requirements

  • [ARIA role and properties, e.g., role="dialog", aria-modal="true", aria-labelledby]
  • [Screen reader announcements, e.g., "Dialog title announced on open"]
  • [Focus trapping, e.g., "Tab cycles within the dialog, does not escape to page"]
  • [Reduced motion, e.g., "Open/close animations respect prefers-reduced-motion"]
  • [High contrast mode, e.g., "All elements visible in Windows High Contrast Mode"]
  • [Touch accessibility, e.g., "All touch targets 44x44px minimum"]

Responsive Adaptation

BreakpointAdaptation
Desktop (1280px+)[e.g., Dialog centered in viewport, max-width 480px]
Tablet (768px-1279px)[e.g., Same as desktop, max-width 420px]
Mobile (< 768px)[e.g., Dialog becomes bottom sheet, full width, slides up from bottom]

Content Guidelines

ElementGuidelineGood ExampleBad Example
[e.g., Dialog title][e.g., Question format, specific]"Delete this project?""Confirm"
[e.g., Dialog message][e.g., Explain consequences]"This will permanently delete 'Acme Roadmap' and all 24 items in it.""Are you sure?"
[e.g., Confirm button][e.g., Verb matching the action]"Delete Project""OK"
[e.g., Cancel button][e.g., Always "Cancel", no variations]"Cancel""Go Back"

Common Mistakes

MistakeWhy It Is WrongCorrect Approach
[e.g., Using confirmation for low-stakes actions][e.g., Adds friction without value; users click through without reading][e.g., Use inline undo for reversible actions]
[e.g., Generic "Are you sure?" message][e.g., User cannot evaluate consequences without specifics][e.g., State what will be deleted/changed and the impact]
[e.g., No loading state after confirm][e.g., User clicks confirm again thinking it did not register][e.g., Show spinner on confirm button, disable all actions]
[e.g., Focus not returned to trigger on close][e.g., Keyboard user loses their place on the page][e.g., Restore focus to the element that opened the pattern]

Implementation Notes

[Framework-specific code snippets, hooks, or component composition examples]
[Include the key behavioral logic, not the full component code]
[Focus on the interaction flow, not the styling]

Filled Example: Search Combobox

Pattern Overview

FieldDetails
Pattern NameSearch Combobox
CategorySelection
StatusDocumented
Related ComponentsTextInput, Popover, ListItem, Badge
WAI-ARIA PatternCombobox with Listbox Popup (APG)

Description. The search combobox lets users type to filter a list of options and select one or more. It combines a text input with a dropdown results list. Used for entity search (users, projects, labels), command palettes, and any selection from a large set of options.

When to Use

  • Selecting from a list of 10+ options where typing is faster than scrolling
  • Entity lookup (searching for a user, project, or document by name)
  • Tagging or labeling (applying one or more tags from a predefined set)

When NOT to Use

  • Fewer than 7 options. Use a simple Select dropdown instead.
  • Boolean choice. Use a toggle or radio group.
  • Free-text input where no predefined options exist. Use a plain text input.

State Transitions

[Idle] โ”€โ”€focus/clickโ”€โ”€> [Open, Empty Input]
                              โ”‚
                        type query
                              โ”‚
                        [Open, Filtered Results]
                           โ”‚         โ”‚
                     select item   no results
                           โ”‚         โ”‚
                     [Idle + Selected] [Open, Empty State]

Keyboard Behavior

KeyAction
Arrow DownMove highlight to next option
Arrow UpMove highlight to previous option
EnterSelect highlighted option
EscapeClose dropdown, clear query
Backspace (empty input, multi-select)Remove last selected item

Accessibility

  • role="combobox" on the input, aria-expanded reflects open state
  • role="listbox" on the results list, role="option" on each item
  • aria-activedescendant on the input points to the highlighted option
  • Screen reader announces result count: "5 results available"
  • Selected items in multi-select announced with aria-selected="true"

Responsive Adaptation

Desktop: Dropdown positioned below input, max-height 300px with scroll. Mobile: Full-screen overlay with sticky input at top, full-height scrollable results.

Key Takeaways

  • Patterns describe behavior across multiple components. They answer "how does this interaction work?" not "what does this element look like?"
  • Include a state diagram for every pattern. Text descriptions alone leave ambiguity that diagrams resolve
  • Document keyboard behavior and focus management for every state transition. These are the most commonly missed implementation details
  • Always include "When NOT to use" to prevent pattern misapplication
  • Test patterns at every breakpoint. A modal on desktop may need to become a bottom sheet on mobile

About This Template

Created by: Tim Adair

Last Updated: 3/5/2026

Version: 1.0.0

License: Free for personal and commercial use

Frequently Asked Questions

How is an interaction pattern different from a component?+
A component is a single UI element (button, input, card). An interaction pattern describes how multiple components work together to solve a user problem. A confirmation dialog pattern uses a modal component, button components, and text components. The pattern specifies the behavior, timing, and state management that the individual component docs do not cover.
How many interaction patterns does a typical product need?+
Most products have 15-25 distinct interaction patterns: confirmation, inline editing, drag-and-drop, search/filter, multi-select, pagination, infinite scroll, toast notifications, form validation, file upload, date picking, onboarding tours, command palette, contextual menus, and a few domain-specific patterns. Document the ones that appear in multiple features first.
Should I document patterns that follow WAI-ARIA Authoring Practices exactly?+
Yes, but you can reference the APG instead of duplicating it. Document your product-specific decisions: which optional behaviors you implement, how the pattern adapts on mobile, what content guidelines apply, and what the loading/error states look like. The APG covers accessibility behavior but not your product's visual design, content, or responsive adaptation.
How do I handle patterns that vary by context?+
Document the base pattern first, then list variations as sub-patterns with their specific differences. For example, a "Confirmation Dialog" base pattern might have variations: "Destructive Confirmation" (red button, requires typing the item name), "Batch Confirmation" (lists affected items), and "Async Confirmation" (shows loading state). Each variation references the base pattern and notes only the differences. The [design system documentation template](/templates/design-system-documentation-template) uses a similar approach for component variants.
How do patterns relate to user flows?+
Patterns are building blocks. User flows are sequences. A "sign up" flow might use the "form validation" pattern, the "password strength indicator" pattern, and the "email verification" pattern in sequence. Document patterns as standalone units. Document flows separately as sequences that reference patterns. This prevents duplication and keeps patterns reusable across multiple flows. ---

Explore More Templates

Browse our full library of PM templates, or generate a custom version with AI.

Free PDF

Like This Template?

Subscribe to get new templates, frameworks, and PM strategies delivered to your inbox.

or use email

Join 10,000+ product leaders. Instant PDF download.

Want full SaaS idea playbooks with market research?

Explore Ideas Pro โ†’