Шаблон для публикации (best-practice)

Этот шаблон — чек-лист для финального ревью перед публикацией/передачей виджета.

1) Базовые требования

  • Визуально и функционально соответствует ТЗ.
  • Виджет использует Widget() + useParams (v2).
  • Версия языка в дескрипторе — widgetLanguageVersion = 2.
  • Код проходит сохранение без compile-ошибок.
  • Рендер выполняется без evaluate-ошибок при max-наборе тестовых параметров.
  • Добавлены все обязательные параметры: width, height (если размер меняет макет).

2) Проверка API-поведения

  • Имена параметров понятные и согласованы с UI/техописанием.
  • Типы параметров выбраны из allowlist runtime (float/string/colorGradient/button/...).
  • Для параметров с default указаны безопасные fallback-значения.
  • Для кнопок/переинициализации используется type: "button" и onClick.
  • Для editable-текста:
    • editable="text" или соответствующий механизм установлен на нужный элемент,
    • есть корректная связка с параметром текста,
    • сохранение текста после потери фокуса работает.
  • Если есть font/градиенты: применена корректная развилка isGradient(...) (fill/stroke/strokeColor).

3) Проверка рендеринга и производительности

  • Включен useBlockMemo для тяжёлых вычислений (path, random, геометрия, SVG-подсчёты).
  • Проверен рендер при разных размерах блока (50x50, 1920x1080, высокий DPR).
  • Нет явных for без ограничений итераций и рекурсий.
  • Нет чрезмерных массивов/детализации, которая явно больше лимитов runtime.
  • Нет бесконечных/самопереходных зависимостей в deps для useBlockMemo.

4) Проверка совместимости платформы

  • Только разрешённые теги/атрибуты/style свойства.
  • Нет window, document, fetch, eval, Worker и других запрещённых идентификаторов.
  • Нет inline-ссылок с небезопасными схемами (javascript:, data: и т.д.).
  • Нет style с неподдерживаемыми CSS-свойствами.
  • Не передаются функции в JSX-props (кроме разрешённых путей через action-поля параметров).

5) Проверка состояния и совместимости проекта

  • Виджет не ломает существующие проекты после undo/redo/undo-selection.
  • Поведение параметров корректно при undefined/null значениях.
  • v1ParamName оставлен для параметров, если это legacy-проект.
  • Нет прямой зависимости от внешнего runtime-состояния проекта вне useParams/capabilities.

6) Визуальная валидация (обязательный мини-проход)

Запустите и зафиксируйте:

  1. пустой блок (минимальные параметры),
  2. изменение всех ключевых параметров,
  3. двойной клик/переключение режимов редактирования (если есть),
  4. зум/перемещение/масштаб блока,
  5. сохранение и повторная загрузка проекта.
  • После каждого шага не появляется новых ошибок.
  • Нет визуальных «рывков» (snap/flicker) больше 1 раза на сценарий.

7) Чек-лист готовности к публикации

  • Название и описание понятны редактору и менеджеру контента.
  • Есть пример использования (скрин/пометка «как использовать»).
  • Есть минимальная версия для rollback в репозитории/репликах.
  • Пройдено ручное или автоматизированное smoke-тестирование.
  • Записано, при каких ограничениях/лимитах этот виджет можно использовать.

![Пример чек-листа публикации] []


Подпись перед публикацией:

  • Оценка: ✅ готов / ⚠️ требуется доработать / ❌ блокер;
  • Автор кода: ...
  • Тестировщик: ...
  • Дата: ...