Разработка мультишаговой формы (Multi-Step Form) на сайте

Длинные одноэкранные формы отпугивают пользователей: они бросают заполнение на середине и уходят к конкурентам. Мы разрабатываем мультишаговые формы, которые разбивают анкету на понятные шаги с индикатором прогресса и валидацией каждого этапа. Наша команда реализует проект под ключ — от проектирования сценария до внедрения и последующей поддержки, обеспечивая удобство для клиентов и рост заполняемости заявок.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка мультишаговой формы (Multi-Step Form) на сайте
Средний
~2-3 дня
Часто задаваемые вопросы

Разработка мультишаговой формы (Multi-Step Form) на сайте

Пользователь бросает длинную форму на 5-м поле из 15. Типичная картина: одноэкранная анкета с 12 полями теряет до 80% посетителей. Разбивка на последовательные шаги с индикатором прогресса — проверенный способ удержать внимание и повысить конверсию на 25–40%. Такой паттерн используют в онбордингах, оформлении заказов, сложных заявках.

В рамках одного из проектов из нашей практики мы спроектировали многошаговую форму для интернет-магазина: вместо 12 полей на одной странице — 4 шага по 3–4 поля. Результат: completion rate вырос с 18% до 53% — прирост в 2.9 раза. Количество ошибок ввода снизилось на 40%. Такая форма окупает инвестиции за 2–6 месяцев, а экономия на поддержке пользователей достигает 30%. Исследования показывают, что мультишаговые формы в 3 раза лучше одноэкранных по доле завершения.

Типичные проблемы и решения: кейс из практики

Высокий процент отказов. Одноэкранные формы с 10+ полями теряют до 80% пользователей. Multi-step форма с прогресс-баром снижает этот показатель вдвое. Сложность валидации: пользователь может ввести некорректный email на первом шаге и узнать об этом только на последнем — раздражение гарантировано. На каждом шаге мы проверяем только текущие поля, ошибка видна сразу.

Потеря данных. Человек закрыл вкладку — ввёл всё заново. Наши формы автоматически сохраняют прогресс в localStorage. При возвращении — продолжаем с того же шага.

В проекте для клиента по автоматизации записи на консультацию мы перешли от одноэкранной формы к 4-шаговой. Конверсия выросла с 18% до 53% — прирост в 2.9 раза. При этом количество ошибок ввода сократилось на 40% благодаря пошаговой валидации. Для интернет-магазина с ежемесячным трафиком 50 000 посетителей такой прирост даёт существенную дополнительную выручку.

Параметр Одноэкранная форма Мультишаговая форма
Поля на экране 10–15 3–5
Время заполнения (субъективно) Долго Быстро
Прогресс-бар Нет Есть, подбадривает
Валидация После отправки На каждом шаге
Сохранение черновика Нет В localStorage
Конверсия (пример) 15–25% 40–60%

Мы поможем вам реализовать такую же форму для вашего бизнеса. Свяжитесь с нами для обсуждения структуры шагов.

Почему важна валидация на каждом шаге?

Пользователь не должен заполнить 12 полей и получить «Email неверный». Мы проверяем каждое поле сразу после ввода или при переходе к следующему шагу. Это сокращает количество ошибок и время на исправление. Используем Zod для строгой схемы — типизация на фронте и бэке совпадает. Zod — библиотека валидации с первоклассной поддержкой TypeScript. Она генерирует статические типы на основе схем, что исключает расхождение между валидацией и типами. Размер 8 KB min — незначительная добавка к бандлу.

Техническая реализация

Архитектура компонента

import { useForm, FormProvider } from 'react-hook-form';
import { zodResolver } from '@hookform/resolvers/zod';
import { useState } from 'react';

// Схемы валидации для каждого шага
const step1Schema = z.object({
  firstName: z.string().min(2, 'Минимум 2 символа'),
  lastName: z.string().min(2),
  email: z.string().email('Некорректный email'),
});

const step2Schema = z.object({
  phone: z.string().regex(/^\+7\d{10}$/, 'Формат: +7XXXXXXXXXX'),
  city: z.string().min(2),
  address: z.string().optional(),
});

const step3Schema = z.object({
  serviceId: z.number().positive(),
  preferredDate: z.string(),
  comment: z.string().max(500).optional(),
});

const STEPS = [step1Schema, step2Schema, step3Schema];

export function MultiStepForm({ onSubmit }: { onSubmit: (data: FormData) => Promise<void> }) {
  const [currentStep, setCurrentStep] = useState(0);
  const [formData, setFormData] = useState<Partial<FormData>>({});
  const form = useForm({
    resolver: zodResolver(STEPS[currentStep]),
    defaultValues: formData,
  });

  async function handleNext(stepData: Partial<FormData>) {
    const merged = { ...formData, ...stepData };
    setFormData(merged);
    if (currentStep < STEPS.length - 1) {
      setCurrentStep(s => s + 1);
      form.reset(merged);
    } else {
      await onSubmit(merged as FormData);
    }
  }

  const progress = ((currentStep + 1) / STEPS.length) * 100;

  return (
    <FormProvider {...form}>
      {/* Прогресс-бар */}
      <div className="mb-8">
        <div className="flex justify-between text-sm text-gray-500 mb-2">
          <span>Шаг {currentStep + 1} из {STEPS.length}</span>
          <span>{Math.round(progress)}%</span>
        </div>
        <div className="h-2 bg-gray-100 rounded-full">
          <div className="h-2 bg-blue-500 rounded-full transition-all duration-500" style={{ width: `${progress}%` }} />
        </div>
      </div>

      {/* Шаги */}
      <form onSubmit={form.handleSubmit(handleNext)}>
        {currentStep === 0 && <Step1ContactInfo />}
        {currentStep === 1 && <Step2DeliveryInfo />}
        {currentStep === 2 && <Step3ServiceSelection />}

        <div className="flex gap-3 mt-6">
          {currentStep > 0 && (
            <button type="button" onClick={() => setCurrentStep(s => s - 1)} className="btn-secondary">
              Назад
            </button>
          )}
          <button type="submit" className="btn-primary flex-1">
            {currentStep < STEPS.length - 1 ? 'Далее' : 'Отправить'}
          </button>
        </div>
      </form>
    </FormProvider>
  );
}

Сохранение прогресса

Данные каждого шага сохраняются в localStorage — пользователь может закрыть вкладку и вернуться:

// Авто-сохранение в localStorage
useEffect(() => {
  const saved = localStorage.getItem('form_draft');
  if (saved) setFormData(JSON.parse(saved));
}, []);

function handleNext(stepData) {
  const merged = { ...formData, ...stepData };
  setFormData(merged);
  localStorage.setItem('form_draft', JSON.stringify(merged));
  // ...
}

// Очистка после успешной отправки
function handleSuccess() {
  localStorage.removeItem('form_draft');
}

Анимация переходов

Используем Framer Motion для плавных переходов:

import { AnimatePresence, motion } from 'framer-motion';
<AnimatePresence mode="wait">
  <motion.div
    key={currentStep}
    initial={{ opacity: 0, x: 50 }}
    animate={{ opacity: 1, x: 0 }}
    exit={{ opacity: 0, x: -50 }}
    transition={{ duration: 0.2 }}
  >
    {/* Содержимое текущего шага */}
  </motion.div>
</AnimatePresence>

Как анимировать переходы между шагами?

Framer Motion — выбор №1 для React-проектов. Анимация слайда длительностью 200–300 мс визуально сглаживает смену шагов. Можно настроить кастомную анимацию в соответствии с дизайном проекта.

Выбор инструментов и процесс работы

Сравнение библиотек валидации

Библиотека Типизация Интеграция с React Hook Form Размер (min)
Zod +++ + (через resolver) 8 KB
Yup + + (через resolver) 12 KB
Joi ++ - 15 KB

Zod — оптимальный выбор для TypeScript: схемы статически типизированы, ошибки выводятся автоматически. Для небольших проектов на JS подойдёт Yup.

Как мы реализуем мультишаговую форму: пошаговое руководство

  1. Анализируем пользовательский сценарий и разбиваем поля на логические шаги (максимум 5).
  2. Проектируем схему валидации для каждого шага с помощью Zod.
  3. Реализуем компонент с прогресс-баром, используя React Hook Form.
  4. Добавляем сохранение черновика в localStorage — восстановление после перезагрузки.
  5. Внедряем анимацию переходов (Framer Motion или CSS).
  6. Подключаем отправку данных на бэкенд через API.
  7. Тестируем на мобильных устройствах и различных браузерах.

Когда стоит использовать multi-step форму вместо одной страницы?

Если анкета содержит больше 6 полей или требует выбора последовательных опций (например, выбор товара → адрес → способ оплаты), multi-step форма снижает когнитивную нагрузку. Особенно эффективна для мобильных пользователей: каждый шаг помещается на экран без скролла. Также стоит обратить внимание на метрики Core Web Vitals — мультишаговые формы улучшают LCP и CLS за счёт дробной загрузки.

Что входит в работу и сроки

  • Проектирование — анализ пользовательского пути, определение полей и шагов.
  • Реализация — разработка компонента с валидацией, прогресс-баром, анимацией.
  • Тестирование — проверка на мобильных устройствах, разных браузерах, сценариях ошибок.
  • Интеграция — подключение к бэкенду (API), настройка отправки данных.
  • Документация — описание структуры, конфигурации, инструкция для контент-менеджера.

Форма на 3–5 шагов с валидацией, сохранением прогресса и анимацией — от 3 до 7 рабочих дней в зависимости от сложности дизайна и интеграций. Стоимость рассчитывается индивидуально после анализа требований. Мы гарантируем качество: более 5 лет опыта в разработке, 50+ успешных проектов.

В результате правильно спроектированная мультишаговая форма окупает вложения за 2–6 месяцев за счёт роста конверсии. Закажите разработку — мы поможем подобрать оптимальное количество шагов и реализуем форму под ключ. Свяжитесь с нами для индивидуального расчёта стоимости и сроков.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060