Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 60

Designing Multi-Step Forms with Validation & Progress

Recommended resources

Introduction

In our last lesson, we focused on bringing individual elements to life with microinteractions, using component variants and Smart Animate to create hover states and button feedback. You learned that the key to animation is first defining the static states of a component.

Today, we will apply that same "state-based" thinking to a larger and more complex challenge: designing the components for a multi-step form. Forms are the conversational backbone of the web, used for everything from signing up for a newsletter to completing a checkout. Getting them right is critical.

This lesson will guide you through designing two essential UI components for any multi-step form: a flexible input field with built-in validation states (default, active, error) and a clear progress indicator. Mastering these components will equip you to build user-friendly, professional forms that reduce user friction and prevent errors—a highly valuable skill for any freelance UI/UX designer.


Part 1: Why Use Multi-Step Forms?

Before we build, let's understand the context. When a form requires a lot of information (like a detailed event registration or a business checkout process), presenting all the fields at once can be overwhelming. This increases "cognitive load" and can cause users to abandon the task.

Multi-step forms solve this by breaking the process into smaller, manageable chunks.

Design a better form. For desktop & mobile screens | by Allie Paschal

This article by Allie Paschal provides a great overview of different form types.

Read the section "Form type terms". Pay close attention to the definition and GIF example of a Multi-step form. This will help you understand why we're breaking a complex task into smaller pieces.

A typical multi-step form consists of:

  1. Input Fields: For text, numbers, selections, etc.
  2. Validation States: Visual feedback indicating if an input is correct or incorrect.
  3. Action Buttons: To navigate between steps (e.g., "Next," "Back").
  4. A Progress Indicator: To show the user where they are in the process.

Today, we'll build the components for items 1, 2, and 4.


Part 2: Building a Stateful Form Field Component

The most fundamental part of any form is the input field. A well-designed input field does more than just accept text; it communicates its status to the user. We will build a single, powerful component in Figma with variants for each essential state.

The core states we'll design are:

  • Default: The field before the user interacts with it.
  • Focus: When the user has clicked inside the field to type.
  • Error: When the user's input is invalid (e.g., a required field is left blank).

The following video provides an excellent, step-by-step guide to building this in Figma.

Designing Forms in Figma - UI/UX Challenge

The "Designing Forms in Figma" video from DesignCourse is a perfect hands-on tutorial for creating form fields with different states.

Watch from the beginning up to the end of the error state creation. The video will guide you through: Designing the basic field: Pay attention to how Auto Layout is used for padding and how a label is added. Creating the error message: Note the use of color and placement to clearly communicate an error. Building Component Variants: This is the most crucial part. Observe how he creates Default, Focus, and Error states by adjusting styles (like border thickness and color) and toggling the visibility of layers.

Activity 1: Build Your Input Field Component

Now, it's your turn to build. Follow the process from the video in your own Figma file.

  1. Create the Base: Design the basic input field with a label (e.g., "Name") and a placeholder input box using Auto Layout.
  2. Add All Elements: Include the label, the input field rectangle, a placeholder for the user's typed value (e.g., "John Doe"), and an error message (e.g., "This field is required").
  3. Create the Component Set: Turn your entire structure into a component and add variants.
  4. Define the States:
    • Default State: Hide the user's value and the error message. The border should be a standard, neutral color.
    • Focus State: Hide the error message. Make the border thicker or change its color to an accent blue to indicate it's active. Show the user's typed value.
    • Error State: Show the error message and change the border and label color to red.

This process of showing and hiding layers within variants is a powerful technique for managing component states efficiently. Your experience with financial models, where a single cell's value can change the state of an entire sheet, is analogous to how changing a variant property here reconfigures the entire component's appearance.


Part 3: Designing the Progress Indicator

A progress indicator, or "stepper," is crucial for multi-step forms. It serves two psychological functions: it shows the user how far they've come (providing a sense of accomplishment) and how much is left (managing expectations).

Here are some examples of different visual styles for progress indicators.

A collection of different progress indicator styles, from simple bars to numbered steps.
A more detailed example of a stepper component built in Figma, showing different states for each step.

We will now build a clean, numbered stepper component similar to the examples above. Again, we have a fantastic video that breaks down this complex component into simple, repeatable steps.

How To Create Multi Steps Navigation Bar In Figma

The "How To Create Multi Steps Navigation Bar In Figma" video by Product Meow is a masterclass in building complex components from simpler ones.

Follow the entire video. It's structured perfectly for what we need to accomplish: Create the 'Step' Component: You'll first build the individual numbered circle and create variants for its three states: Default (not yet reached), Active (the current step), and Completed (finished step, with a checkmark). Create the 'Progress Line' Component: Next, you'll create the simple connecting line with two states: Default (gray) and Lighten (blue/active). Assemble the Final Stepper: Finally, you'll combine instances of your 'Step' and 'Progress Line' components into a full navigation bar. You'll then create variants of this entire bar to represent the overall progress (e.g., "Current Step: 1", "Current Step: 2").

Activity 2: Build Your Progress Indicator Component

This activity involves "component nesting"—using smaller components to build a bigger one. This is a core concept in creating scalable design systems.

  1. Build the Atoms: Follow the video to create the Step and Progress Line component sets with all their variants.
  2. Assemble the Molecule: Combine instances of your atomic components using Auto Layout to form the full, three-step progress bar.
  3. Create the Final Component Variants: Turn this assembled bar into a component and create variants for each stage of the process (e.g., Step 1 Active, Step 2 Active, Step 3 Active). In each variant, you will simply select the nested component instances and switch them to the appropriate state (e.g., change Step 1 from Active to Completed, and Step 2 from Default to Active).

You now have a fully functional progress indicator that you can drop into any design and control with a single variant property.


Conclusion

In this lesson, you constructed the essential building blocks for a professional, user-friendly multi-step form. You've moved beyond simple microinteractions to create complex, stateful components that are foundational to almost any digital product.

Key Takeaways:

  • Multi-step forms reduce cognitive load by breaking down complex tasks into smaller, manageable sections.
  • Form input fields should be designed as components with variants for key states like Default, Focus, and Error to provide clear user feedback.
  • Progress indicators (steppers) are crucial for managing user expectations and showing progress.
  • Complex components like a stepper can be built by nesting simpler "atomic" components (like the step circle and the line) and controlling their states.

Preview of the Next Lesson:

We've designed the pieces; now it's time to bring them to life. In our next lesson, you will prototype the multi-step form flow with interactive step navigation and validation feedback. We will take the components you built today, assemble them into screens, and use Figma's prototyping tools to create a clickable flow where users can move from step to step.