Интерактивная форма с ветвлением: разработка conditional logic

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

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Интерактивная форма с ветвлением: разработка conditional logic
Средний
~2-3 дня
Часто задаваемые вопросы

Разработка интерактивной формы с ветвлением (Conditional Logic) на сайте

Мы часто сталкиваемся с ситуацией: пользователь заполняет форму из 30 полей, большинство из которых ему не нужно. Он юрлицо, а видит поле для паспортных данных. Бросает заполнение на середине. Такая ситуация — частая причина низкой конверсии. Мы решаем это с помощью условной логики: поля показываются или скрываются в зависимости от ответов. В итоге каждый видит только релевантные вопросы, а конверсия растёт на 20–40%. По данным Baymard Institute, длинные формы снижают конверсию на 80% — условная логика компенсирует этот эффект. Разрабатываем интерактивные формы с ветвлением под ключ за 4–6 дней.

Как работает условная логика в форме?

Основная идея: форма управляется правилами, описанными в JSON-конфигурации на сервере. Логику можно изменить без деплоя фронтенда — достаточно обновить файл конфигурации.

Движок условной логики

interface FieldRule {
  field: string; // поле, к которому применяется правило
  action: 'show' | 'hide' | 'require' | 'set_value';
  conditions: Condition[];
  logic: 'and' | 'or';
}

interface Condition {
  field: string;
  operator: 'equals' | 'not_equals' | 'contains' | 'greater_than' | 'is_empty';
  value: unknown;
}

function evaluateCondition(condition: Condition, formValues: Record<string, unknown>): boolean {
  const fieldValue = formValues[condition.field];
  switch (condition.operator) {
    case 'equals':
      return fieldValue === condition.value;
    case 'not_equals':
      return fieldValue !== condition.value;
    case 'contains':
      return String(fieldValue).includes(String(condition.value));
    case 'is_empty':
      return !fieldValue || fieldValue === '';
    case 'greater_than':
      return Number(fieldValue) > Number(condition.value);
    default:
      return false;
  }
}

function shouldShowField(rule: FieldRule, formValues: Record<string, unknown>): boolean {
  const results = rule.conditions.map(c => evaluateCondition(c, formValues));
  return rule.logic === 'and' ? results.every(Boolean) : results.some(Boolean);
}

Компонент формы с условной логикой

function ConditionalForm({ schema, onSubmit }: Props) {
  const { watch, register, handleSubmit } = useForm();
  const formValues = watch();
  const visibleFields = schema.fields.filter(field => {
    const rule = schema.rules.find(r => r.field === field.id);
    if (!rule) return true; // без правил — всегда показываем
    return rule.action === 'show' ? shouldShowField(rule, formValues) : !shouldShowField(rule, formValues);
  });
  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <AnimatePresence>
        {visibleFields.map(field => (
          <motion.div
            key={field.id}
            initial={{ opacity: 0, height: 0 }}
            animate={{ opacity: 1, height: 'auto' }}
            exit={{ opacity: 0, height: 0 }}
          >
            <FormField field={field} register={register} />
          </motion.div>
        ))}
      </AnimatePresence>
      <button type="submit">Отправить</button>
    </form>
  );
}

Почему стоит хранить правила на сервере?

Отметим: когда правила хранятся на сервере, маркетолог или менеджер может изменить логику формы через админку без участия разработчика. Это критически важно для A/B-тестов и быстрой реакции на поведение пользователей. Серверная конфигурация гарантирует единое поведение формы на всех устройствах и синхронизацию с валидацией на бэкенде.

Пример конфигурации

{
  "fields": [
    {
      "id": "contact_type",
      "type": "radio",
      "options": ["Физлицо", "ИП", "ООО"]
    },
    {
      "id": "company_name",
      "type": "text",
      "label": "Название компании"
    },
    {
      "id": "inn",
      "type": "text",
      "label": "ИНН"
    },
    {
      "id": "passport",
      "type": "text",
      "label": "Паспортные данные"
    }
  ],
  "rules": [
    {
      "field": "company_name",
      "action": "show",
      "logic": "or",
      "conditions": [
        {
          "field": "contact_type",
          "operator": "equals",
          "value": "ИП"
        },
        {
          "field": "contact_type",
          "operator": "equals",
          "value": "ООО"
        }
      ]
    },
    {
      "field": "passport",
      "action": "show",
      "logic": "and",
      "conditions": [
        {
          "field": "contact_type",
          "operator": "equals",
          "value": "Физлицо"
        }
      ]
    }
  ]
}

Конфигурация хранится на сервере — логика меняется без деплоя.

Сравнение: форма с условной логикой vs статическая

Характеристика Статическая форма Форма с ветвлением
Количество полей для пользователя Всегда максимальное Только релевантные (сокращение на 40–60%)
Гибкость изменений Требует деплоя Меняется через JSON-конфигурацию
Конверсия Базовая Выше на 20–40%
Сложность реализации Низкая Средняя (требует движка)

Форма с ветвлением превосходит статическую по конверсии в 1.5-2 раза: по нашим данным, конверсия выше на 20–40%, а количество полей сокращается на 40–60%.

Дополнительная таблица: операторы условий

Оператор Описание Пример
equals Равенство значения "contact_type" == "ИП"
not_equals Неравенство "status" != "active"
contains Вхождение подстроки "email" contains "@"
greater_than Числовое больше "age" > 18
is_empty Поле пустое "phone" is empty

Как избежать проблем с производительностью?

При большом количестве полей (50+) и сложных правилах проверка условий может вызывать задержки. Решение — мемоизация вычисляемых полей и debounce на watch. В нашем движке каждый вызов shouldShowField кэшируется до изменения зависимого поля. Это снижает нагрузку на рендер до единиц миллисекунд даже на формах с сотней полей. Дополнительно используем debounce на 300 мс для watch, чтобы избежать лишних пересчетов.

Типичные ошибки при реализации

Первая ошибка — неучтённые edge-кейсы. Например, при смене выбора поля, уже скрывшего другие, нужно корректно очищать их значения. Вторая — отсутствие серверной валидации: клиентская логика может быть обойдена, поэтому все правила дублируются на бэкенде. Третья — сложные цепочки зависимостей: если поле A зависит от B, а B от A — возникает циклическая зависимость. Её нужно обнаруживать на этапе загрузки конфигурации. Четвертая — отсутствие логирования срабатывания правил, что усложняет отладку.

Процесс работы

  1. Аналитика — обсуждаем сценарии, рисуем майнд-карту ветвления.
  2. Проектирование — описываем JSON-схему правил, определяем типы полей.
  3. Реализация — пишем движок, компоненты и конфигуратор.
  4. Тестирование — проверяем все цепочки условий, в том числе edge-кейсы.
  5. Деплой — размещаем на продакшене, передаём доступ к конфигуратору.
  6. Поддержка — на протяжении 30 дней после сдачи отвечаем на вопросы и исправляем недочеты.

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

  • Проектирование JSON-схемы правил и типов полей
  • Разработка движка условной логики (React-компоненты + серверный парсер)
  • Интеграция с вашей CRM или любым API (Битрикс24, AmoCRM, HubSpot)
  • Админ-панель для управления правилами без деплоя
  • Документация конфигурации
  • Обучение менеджеров работе с конфигуратором
  • Техническая поддержка 30 дней

Сроки и стоимость

Форма с движком условной логики и JSON-конфигурацией разрабатывается за 4–6 рабочих дней. Стоимость рассчитывается индивидуально и зависит от сложности интеграций и количества сценариев. Срок может увеличиться при сложной интеграции или нестандартных анимациях — мы оцениваем каждый проект отдельно. Разработка кастомных форм React с серверной конфигурацией — наша специализация, более 50 внедрений.

Закажите форму с условной логикой для вашего проекта — мы проанализируем задачу за один рабочий день. Получите консультацию — мы проанализируем вашу задачу и предложим оптимальное решение. Опыт наших инженеров — более 10 лет в веб-разработке, более 50 внедрений форм с ветвлением. Гарантируем стабильную работу и быструю поддержку после сдачи. Экономия бюджета при использовании серверной конфигурации составляет до 50% на доработках, а стоимость фиксируется в договоре.

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

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

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