ページ内ナビ
概要
Stimulusはserver-rendered HTMLを置き換えず、DOMへ小さなcontroller behaviorを足すJavaScript frameworkです。data-controller、target、action等のattributeを使ってHTMLとJavaScriptを接続し、DOMの追加・削除に合わせてcontroller lifecycleを自動管理します。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
data-controller・target・actionでHTMLとJavaScriptを接続する
HTML側にcontroller、target、action属性を記述し、JavaScript controller class側でevent handlingとDOM更新を実装します。markupがbehaviorの接続点を明示するため、server-rendered viewと共存しやすい設計です。
出典:[1]
DOM変更を監視してcontroller lifecycleを自動管理する
Stimulusはpageを継続的に監視し、対象attributeやelementの出入りに応じてcontrollerをconnect/disconnectします。TurboやAjax等でDOMが差し替わる場合も同じlifecycle modelを利用できます。
出典:[1]
frontend全体をrenderするのではなく既存HTMLをaugmentする
Stimulus自身はHTML rendering frameworkではなく、serverが生成したHTMLへ必要なinteractionだけを追加することを目的としています。Turboと組み合わせるとHotwireのclient-side behavior層を担います。
出典:[1]
向いている用途
server-rendered applicationへ局所的なUI behaviorを追加したい場合に向く
SPA frameworkでfrontend全体を再構築せず、form、menu、modal、keyboard action等のinteractionをcontroller単位で足したいRails等のHTML-centric applicationに適します。
出典:[1]
導入前の確認
stable releaseは3.2.2でcurrent mainもpackage versionは3.2.2のまま
最新GitHub releaseは2023年のv3.2.2ですが、repositoryは2026年も更新されています。一方、current mainのpackage.jsonもversion 3.2.2のため、mainの変更をrelease済みAPIとして扱わずstable packageとの差分を確認してください。
runtimeはDOMを前提とするためbrowser lifecycleを考慮する
StimulusはDOM element・event・attributeを中心に動作します。server-sideのみのenvironmentではなくbrowser側behaviorとして利用し、Turbo等によるDOM replacement時のconnect/disconnectも前提にcontrollerを設計します。
出典:[1]
参考にした公式資料
- [1]Stimulus v3.2.2 README(2026-10-04)
- [2]Stimulus v3.2.2 release(2026-10-04)
- [3]Stimulus v3.2.2 package metadata(2026-10-04)
- [4]Stimulus current main package metadata(2026-10-04)
- [5]Stimulus MIT license(2026-10-04)
編集部からの補足
Stimulusはfrontend全体をrenderするframeworkではありません。server-rendered HTMLを維持し、必要なinteractionだけをcontroller単位で追加する用途に向きます。
3ステップで試す
- 1
Stimulus 3.2.2をlocal dependencyとして追加する
stable release 3.2.2をversion固定してinstallします。
mkdir -p stimulus-demo && cd stimulus-demo && npm init -y >/dev/null && npm install @hotwired/stimulus@3.2.2 - 2
package version・license・entry pointを確認する
browserを起動せずpackage metadataからversion、MIT license、bundle entry pointを確認します。
cd stimulus-demo && node -e 'const p=require("./node_modules/@hotwired/stimulus/package.json"); console.log(`version=${p.version} license=${p.license} main=${p.main}`)' - 3
controllerとHTML接続の最小例を作る
server起動は行わず、controller・action・targetがどう接続されるかをfileで確認します。
cd stimulus-demo && printf '%s\n' 'import { Controller } from "@hotwired/stimulus"' 'export default class extends Controller {' ' static targets = ["output"]' ' greet() { this.outputTarget.textContent = "Hello from Stimulus" }' '}' > hello_controller.js && printf '%s\n' '<div data-controller="hello">' ' <button data-action="click->hello#greet">Greet</button>' ' <span data-hello-target="output"></span>' '</div>' > fragment.html
成長
成長の推移 · 直近30日
13,103 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 0
- Open PR
- 41
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
カテゴリ
GitHubデータ
GitHubのデータGitHubの詳細データを見る
- Stars
- 13,103
- Forks
- 442
- Watchers
- 190
- Open Issues
- 30
- Contributors
- 87
- 所有者種別
- Organization
- 主要言語
- TypeScript
- ライセンス
- MIT
- リポジトリ最終更新
- 2026/09/13
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Cheerio30,516 Stars
共通タグ 3件 · 同じ言語
jQuery風selectorでHTML・XMLを軽量にparse・検索・書き換える
TypeScript - Cropper.js13,902 Stars
共通タグ 3件 · 同じ言語
画像上の選択範囲を移動・拡縮し、ブラウザ内で切り抜き結果をCanvasとして取得する
TypeScript - WXT10,570 Stars
共通タグ 3件 · 同じ言語
Chrome・Firefox向けWeb拡張をfile-based entrypointとHMR付き開発環境で構築する
TypeScript - Expo52,566 Stars
共通タグ 4件 · 同じ言語
React NativeアプリをAndroid・iOS・Webへ一つのprojectから展開する
TypeScript - Vue 2212,828 Stars
共通タグ 3件 · 共通カテゴリ 1件 · 同じ言語
Vue 2をEOL済みlegacy frameworkとして保守し、Vue 3移行・security/compliance対応の判断点を整理する
TypeScript - Angular101,019 Stars
共通タグ 3件 · 共通カテゴリ 1件 · 同じ言語
component・signal/DI・routing・forms・SSR/hydration・CLIを一つのTypeScript web application platformへ統合する
TypeScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。