Frontend Weekly 2023-09-18
Chrome 117
https://developer.chrome.com/blog/new-in-chrome-117/
New CSS features for entry and exit animations
transition-behavior: allow-discrete
で離散的な CSS プロパティのアニメーションが可能になりました。次の例では fade-out クラスが付いてから、0.25s 後に display: none に切り替わります。
.card { transition: opacity 0.25s, display 0.25s; transition-behavior: allow-discrete;}
.card.fade-out { opacity: 0; display: none;}
また、@starting-style
ルールで、要素の初期状態を指定できるようになりました。これにより今まで animation プロパティや JavaScript などを併用する必要があったアニメーションなどを transition のみで記述できるようになります。
/* IS-OPEN STATE */dialog[open] { translate: 0 0;}
/* EXIT STATE */dialog { transition: translate 0.7s ease-out, overlay 0.7s ease-out, display 0.7s ease-out allow-discrete; translate: 0 100vh;}
/* BEFORE-OPEN STATE */@starting-style { dialog[open] { translate: 0 100vh; }}
Array grouping
配列のグループ化できる Object.groupBy と Map.groupBy が追加されました。
const inventory = [ { name: "asparagus", type: "vegetables", quantity: 5 }, { name: "bananas", type: "fruit", quantity: 0 }, { name: "cherries", type: "fruit", quantity: 5 },];
const result = Object.groupBy(inventory, ({ type }) => type);
/* Result is:{ vegetables: [ { name: 'asparagus', type: 'vegetables', quantity: 5 }, ], fruit: [ { name: "bananas", type: "fruit", quantity: 0 }, { name: "cherries", type: "fruit", quantity: 5 } ],}*/
CSS Subgrid
Subgrid を利用すると、グリッドを入れ子にして、親行列の行や列に子行列を整列させることが出来ます。Chrome のサポートにより、ほとんどのモダンブラウザで利用できるようになりました。
.card-group { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); justify-content: center;}
.subgrid .card { display: grid; grid-template-rows: subgrid; grid-row: span 4; gap: 16px;}
子行列内の位置を揃えたいようなケースで有用です。
Next.js v13.5
2023 年 9 月 19 日に Next.js v13.5 がリリースされました。ローカル開発のパフォーマンス改善が主な内容です。サーバーの起動や HMR の高速化、メモリ使用量の削減、next/image の改善などが行われました。
Nuxt 3.7
Web Stream とResponse
のサポート、head 要素内のレンダリング最適化、Vite のアップデート及びマイナーバージョンの固定を解除、Nitro や TypeScript の設定のアップデートなどが行われました。
Bun v1.0
Bun v1.0 がリリースされました。Bun は、Node.js 互換のランタイム、トランスパイラ、バンドラ、タスクランナー、パッケージマネージャー、bun test
によるテスト機能など、JavaScript/TypeScript のツールチェーンを統合したものです。
また多くのケースで、Node.js よりも高速に動作します。
Astro v3.0
https://astro.build/blog/astro-3/
Astro は、さまざまなフレームワークやライブラリに対応した静的サイトジェネレータです。
Astro v3.0 では、レンダリング速度の向上や画像最適化に加え、View Transitions が正式に追加され、React の Fast Refresh が動作するようになりました。
Astro Studio
Astro に特化したホスティングサービスとして Astro Studio が発表されました。2024 年初頭での一般公開が予定されています。
Biome
https://biomejs.dev/blog/annoucing-biome
いくつか事情で開発が滞っていた Rome を、コアチームがフォークし今後は Biome として開発を行なっていくことを発表しました。
Announcing native npm support on Deno Deploy
https://deno.com/blog/npm-on-deno-deploy
Deno Deploy がnpm:
を介して npm モジュールの実行をネイティブにサポートするようになりました。
v0.dev - AI tool that is effectively Midjourney for React
Vercel が、プロンプトから shadcn/ui と Tailwind CSS を利用した React のコードが生成する AI ツールをリリースしました。
Lodash switch to TypeScript, Bun
Lodash が突如すべての Issue と PR を閉じたため、Lodash が終わったというような誤報がありましたが、Lodash の作者のツイートを見るに TypeScript と Bun に移行する前段階として行なったようです。
Deno 1.37: Modern JavaScript in Jupyter Notebooks
Deno 1.37 がリリースされました。Jupyter Notebook で Deno を利用できるようになりました。他にもテストランナーや Node.js との互換性の改善なども行われています。
VSCode v1.82 - Built-in port forwarding
VSCode v1.82 で、ngrok のようにローカルサーバーにインターネットからアクセスする機能が追加されました。
Node.js v16 EOL
Node.js v16 が 2023 年 9 月 11 日に EOL を迎えました。現在の LTS は v18 です。
Next.Nav
Next.js のアプリケーション構造を可視化する VSCode 拡張。
Ladle v3
https://ladle.dev/blog/ladle-v3
Ladle は React に特化し、パフォーマンスを重視した Storybook の代替ツールです。v3 ではデフォルトのトランスパイラが SWC に変更、CSS in JS の Zero config サポートなどが行われました。