Stimulus — лёгкий JavaScript-фреймворк, разработанный для добавления поведения к уже существующему серверно-рендеренному HTML через специально именованные data-атрибуты. Его архитектура ориентирована на улучшение интерактивности страниц без полного перехода на одностраничные приложения: фреймворк привязывает контроллеры к элементам DOM по атрибуту data-controller и связывает элементы внутри контроллера как targets, а также описывает обработчики событий через атрибуты действий (actions). Такая модель позволяет организовать структуру клиентской логики в виде отдельных контроллеров, которые инициализируются при загрузке и автоматически управляют состоянием связанных элементов.
Исторически Stimulus появился как ответ на потребность в инструменте, который интегрируется с традиционными подходами к рендерингу на сервере и минимизирует объем JavaScript-кода, необходимого для типичных интерактивных сценариев. Фреймворк делает упор на декларативность: поведение описывается в HTML, а код контроллера реализует только логику, не заботясь о поиске элементов. Это упрощает поддержку и прогрессивное улучшение страниц, облегчает тестирование и снижает связность между слоями приложения.
- Декларативная привязка: контроллеры подключаются через data-controller, элементы внутри контроллера отмечаются как targets, а события связываются через data-action.
 - Модульность: логика разделяется на независимые контроллеры, что упрощает локализацию изменений и повторное использование кода.
 - Прогрессивное улучшение: позволяет добавлять интерактивность поверх серверного HTML без замены рендеринга на клиентский.
 - Минимализм API: небольшой набор концепций и методов делает код контроллеров простым и предсказуемым.
 - Автоматическое управление жизненным циклом: инициализация, подключение и отключение контроллеров происходят автоматически при изменениях DOM.
 - Совместимость с существующей разметкой: фреймворк использует стандартные атрибуты data-*, не требуя специальных шаблонов или сложной конфигурации.
 - Лёгкая интеграция с инструментами сборки: может использоваться как через пакетный менеджер и систему сборки, так и подключаться напрямую в виде скрипта.
 - Явная структура событий и состояний: действия и targets повышают читабельность и облегчают отслеживание связей между DOM и логикой.
 - Небольшой размер и производительность: минимальная нагрузка на загрузку страниц по сравнению с крупными фронтенд-фреймворками.
 - Удобство тестирования: контроллеры легко покрываются модульными тестами благодаря ограниченному API и отделённости от глобального состояния.