リリース·  

Nuxt 3.18

Nuxt 3.18がリリースされました。v4の機能をv3にもたらし、アクセシビリティの向上、ブラウザ開発ツールの統合の改善、パフォーマンスの強化を実現しました!
Daniel Roe

ダニエル・ロー

@danielroe.dev

🧪 Lazy Hydration マクロ

v3.16からの遅延ハイドレーションサポートをさらに発展させ、lazy hydration マクロ (#31192) をサポートしました!これにより、コンポーネントのハイドレーションをより人間工学的に制御できるようになります。

<script setup lang="ts">
const LazyHydrationMyComponent = defineLazyHydrationComponent(
  'visible',
  () => import('./components/MyComponent.vue')
)
</script>
<template>
  <div>
    <!-- 
      Hydration will be triggered when
      the element(s) is 100px away from entering the viewport.
    -->
    <LazyHydrationMyComponent :hydrate-on-visible="{ rootMargin: '100px' }" />
  </div>
</template>

これらのマクロにより、Nuxtのlazy hydrationユーティリティを明示的なコンポーネントインポートと組み合わせて使用することが可能になります。

♿️ アクセシビリティの改善

組み込みの app.vue<NuxtRouteAnnouncer> を含めることで、アクセシビリティを向上させました (#32621)。これにより、ページ変更がスクリーンリーダーに通知され、視覚障害のあるユーザーのナビゲーションがより利用しやすくなります。(これは、プロジェクトに app.vue がない場合にのみ適用されます。ある場合は、<NuxtRouteAnnouncer>app.vue に保持してください!)

🛠️ 開発エクスペリエンスの強化

Chrome DevTools ワークスペース統合

Chrome DevTools ワークスペース統合 (#32084) を追加し、Chrome DevToolsから直接Nuxtのソースファイルを編集できるようになりました。これにより、DevToolsで行われた変更が実際のソースファイルに反映される、より良いデバッグ体験が生まれます。

コンポーネントの型安全性向上

コンポーネントの型安全性は以下によって改善されました。

  • <ClientOnly> および <DevOnly> の型付きスロット (#32707) - より優れたIntelliSenseとエラーチェック
  • エクスポートされた <NuxtTime> プロパティ型 (#32547) - 拡張とカスタマイズが容易に

新しい自動インポート: onWatcherCleanup

vue からの onWatcherCleanup 関数が自動インポートとして利用可能になり (#32396)、ウォッチャーのクリーンアップとメモリリークの防止が容易になりました。

const { data } = useAsyncData('users', fetchUsers)

watch(data, (newData) => {
  const interval = setInterval(() => {
    // Some periodic task
  }, 1000)
  
  // Clean up when the watcher is stopped
  onWatcherCleanup(() => {
    clearInterval(interval)
  })
})

📊 監視機能の強化

ページルートが監視のためにNitroに公開され (#32617)、サポートされているプラットフォームとのより良い監視および分析統合が可能になりました。これにより、監視ツールがページレベルのメトリクスをより効果的に追跡できます。

🔧 モジュール開発の改善

モジュール作者にはいくつかの品質改善が提供されます。

サーバーインポートの簡素化

addServerImports キットユーティリティが単一インポートをサポートするようになりました (#32289)、個々のサーバーユーティリティの追加が容易に。

// Before: had to wrap in array
addServerImports([{ from: 'my-package', name: 'myUtility' }])

// Now: can pass directly
addServerImports({ from: 'my-package', name: 'myUtility' })

TypeScript設定

モジュールがtypescript.hoistに追加できるようになりました (#32601)、TypeScriptの設定と型生成をより細かく制御できます。

⚡️ パフォーマンスの改善

いくつかのパフォーマンス最適化を行いました。

  • 内部ソケットを介したVite-node通信の改善 (#32417) により、開発ビルドが高速化。
  • oxc-walker への移行 (#32250) および onPrehydrate 変換のためのoxc (#32045) により、コード変換が高速化。

🐛 バグ修正

このリリースには、いくつかの重要な修正も含まれています。

  • データフェッチの改善:計算されたキーが変更された際、古いデータが適切に保持されるようになりました (#32616)
  • スクロール動作の改善scrollBehaviorType はハッシュスクロールのみに使用されるようになりました (#32622)
  • ディレクトリエイリアスの修正:一貫性を高めるため、一部のディレクトリエイリアスに末尾のスラッシュが追加されました (#32755)

✅ アップグレード

いつものように、アップグレードには以下を実行することをお勧めします。

npx nuxi@latest upgrade --dedupe

これにより、ロックファイルが更新され、Nuxtが依存するすべての最新の依存関係、特にunjsエコシステムからのものが取り込まれます。

完全なリリースノート

Nuxt v3.18.0 の完全なリリースノートをご覧ください。

今回のリリースにご協力いただいた皆様に心より感謝申し上げます。今後6か月間、互換性のあるv4の機能とバグ修正を引き続きバックポートしていきますので、引き続きフィードバックをお寄せください!❤️