mcpField
A
auto-animate

auto-animate

github.com/ovachieverデザイン・UI5650 回インストール48 週間前に更新
リポジトリ

auto-animate について

auto-animate は、@formkit/auto-animate を使うフロントエンド開発者向けのトラブルシューティングおよびエラー防止スキルです。SSR、フレームワーク設定、レイアウト、テストの既知の問題をまとめ、テンプレートと参考資料を含みます。

主な機能

  1. 01SSR に対応したインポートの指針
  2. 02既知の問題と予防策
  3. 03React、Vue などの設定メモ
  4. 04アニメーションのレイアウトと CSS の注意点
  5. 05テンプレートと参考資料
  6. 06動きを抑えた表示のアクセシビリティ確認

活用シーン

  1. 01Next.js のインポートエラーの調査
  2. 02リスト項目のアニメーション不具合の修正
  3. 03Vue または Nuxt プラグインの設定
  4. 04テストやビルドツールとの互換性問題への対処

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ovachiever/droid-tings --skill auto-animate

インストール後、Claude Code で/auto-animateを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
.claude-plugin/
plugin.json
assets/
example-template.txt
references/
auto-animate-vs-motion.md
css-conflicts.md
example-reference.md
ssr-patterns.md
scripts/
example-script.sh
init-auto-animate.sh
templates/
accordion.tsx
filter-sort-list.tsx
form-validation.tsx
react-basic.tsx
react-typescript.tsx
toast-notifications.tsx
vite-ssr-safe.tsx

詳細

AutoAnimate - エラー防止ガイド

パッケージ:@formkit/[email protected] (Sept 2025) フレームワーク:React、Vue、Solid、Svelte、Preact 最終更新日:2025-11-22


SSR セーフなパターン(Cloudflare Workers/Next.js では必須)

// Use client-only import to prevent SSR errors
import { useState, useEffect } from "react";

export function useAutoAnimateSafe<T extends HTMLElement>() {
  const [parent, setParent] = useState<T | null>(null);

  useEffect(() => {
    if (typeof window !== "undefined" && parent) {
      import("@formkit/auto-animate").then(({ default: autoAnimate }) => {
        autoAnimate(parent);
      });
    }
  }, [parent]);

  return [parent, setParent] as const;
}

重要な理由:Issue #1(SSR/Next.js のインポートエラー)を防ぎます。AutoAnimate はサーバー上では使用できない DOM API を使用します。


既知の問題の防止(報告済みのエラー 10 件)

このスキルは、報告済みの問題 10 件以上を防ぎます。

Issue #1:SSR/Next.js のインポートエラー

エラー:「Can't import the named export 'useEffect' from non EcmaScript module」 ソース:https://github.com/formkit/auto-animate/issues/55 発生する理由:AutoAnimate はサーバー上では使用できない DOM API を使用します。 防止策:動的インポートを使用します(templates/vite-ssr-safe.tsx を参照)。

Issue #2:条件付きの親要素のレンダリング

エラー:親要素が条件付きの場合、アニメーションが動作しません。 ソース:https://github.com/formkit/auto-animate/issues/8 発生する理由:存在しない要素には Ref を設定できません。 防止策:

// ❌ Wrong
{showList && <ul ref={parent}>...</ul>}

// ✅ Correct
<ul ref={parent}>{showList && items.map(...)}</ul>
Issue #3:一意なキーの不足

エラー:アイテムが正しくアニメーションしない、またはちらつきます。 ソース:公式ドキュメント 発生する理由:React が変更されたアイテムを追跡できません。 防止策:常に一意で安定したキー(key={item.id})を使用します。

Issue #4:Flexbox の幅に関する問題

エラー:要素の幅が滑らかにアニメーションせず、急に切り替わります。 ソース:公式ドキュメント 発生する理由:flex-grow: 1 は周囲のコンテンツを待機します。 防止策:アニメーションする要素では flex-grow の代わりに明示的な幅を指定します。

Issue #5:テーブル行の表示に関する問題

エラー:行の削除時にテーブル構造が崩れます。 ソース:https://github.com/formkit/auto-animate/issues/7 発生する理由:Display: table-row がアニメーションと競合します。 防止策:個々の行ではなく <tbody> に適用するか、div ベースのレイアウトを使用します。

Issue #6:Jest のテストエラー

エラー:「Cannot find module '@formkit/auto-animate/react'」 ソース:https://github.com/formkit/auto-animate/issues/29 発生する理由:Jest が ESM のエクスポートを正しく解決できません。 防止策:jest.config.js で moduleNameMapper を設定します。

Issue #7:esbuild との互換性

エラー:「Path '.' not exported by package」 ソース:https://github.com/formkit/auto-animate/issues/36 発生する理由:ESM/CommonJS の条件が一致していません。 防止策:ESM モジュールを適切に処理するよう esbuild を設定します。

Issue #8:CSS の position による副作用

エラー:AutoAnimate の追加後にレイアウトが崩れます。 ソース:公式ドキュメント 発生する理由:親要素に自動的に position: relative が設定されます。 防止策:CSS で position の変更を考慮するか、明示的に設定します。

Issue #9:Vue/Nuxt の登録エラー

エラー:「Failed to resolve directive: auto-animate」 ソース:https://github.com/formkit/auto-animate/issues/43 発生する理由:プラグインが正しく登録されていません。 防止策:Vue/Nuxt の設定でプラグインを正しく設定します(references/ を参照)。

Issue #10:Angular の ESM に関する問題

エラー:「ESM-only package」でビルドに失敗します。 ソース:https://github.com/formkit/auto-animate/issues/72 発生する理由:CommonJS のビルド環境です。 防止策:Angular Package Format 用に ng-packagr を設定します。


重要なルール(エラー防止)

必ず行うこと

✅ 一意で安定したキーを使用する - key={index} ではなく key={item.id} を使用します。 ✅ 親要素を DOM に残す - 親の Ref 要素は常にレンダリングします。 ✅ SSR ではクライアント専用にする - サーバー環境では動的インポートを使用します。 ✅ アクセシビリティに配慮する - disrespectUserMotionPreference: false を維持します。 ✅ モーションを無効にしてテストする - アニメーションがなくても UI が動作することを確認します。 ✅ 明示的な幅を使用する - アニメーションする要素では flex-grow を避けます。 ✅ テーブルでは tbody に適用する - 個々の行には適用しません。

避けるべきこと

❌ 条件付きの親要素 - {show && <ul ref={parent}>} ❌ キーにインデックスを使う - key={index} はアニメーションを壊します ❌ SSR を無視する - Cloudflare Workers/Next.js で問題が発生します ❌ アニメーションを強制する - disrespectUserMotionPreference: true はアクセシビリティを損ないます ❌ テーブルを直接アニメーションさせる - tbody または div ベースのレイアウトを使用してください ❌ 一意のキーを省略する - 適切なアニメーションに必要です ❌ 複雑なアニメーション - Motion を使用してください

注:AutoAnimate は prefers-reduced-motion を自動的に尊重します(無効にしないでください)。


パッケージのバージョン

最新:@formkit/[email protected](2025年9月5日)

{
  "dependencies": {
    "@formkit/auto-animate": "^0.9.0"
  }
}

フレームワークの互換性:React 18 以降、Vue 3 以降、Solid、Svelte、Preact


公式ドキュメント


テンプレートとリファレンス

同梱のリソースを参照してください:

  • templates/ - コピーして使えるサンプル(SSR 対応、アコーディオン、トースト、フォーム)
  • references/ - CSS の競合、SSR パターン、ライブラリの比較

コメント