O hirunewani blog

Frontend Weekly 2023-12-08

Created at

Chrome 120、Vitest 1.0、Astro 4.0、Redux 5.0などについて紹介する。

Chrome 120

2023年12月5日にChrome 120がリリースされました。

https://developer.chrome.com/blog/new-in-chrome-120?hl=ja

CloseWatcher API

https://github.com/WICG/close-watcher

Androidの戻るボタンやジェスチャー、Escキーが押された場合などにCloseWatcherインスタンスにcloseイベントが通知されます。ユーザーがモーダルやポップアップなどを閉じたいという意思を表示した際に、アプリで適切に処理するためのAPIです。

document.querySelector("#open").addEventListener("click", () => {
  document.querySelector("#sidebar").classList.add("open");

  const watcher = new CloseWatcher();

  watcher.addEventListener("cancel", () => {
    console.log("CloseWatcher cancel event");
  });
  watcher.addEventListener("close", () => {
    document.querySelector("#sidebar").classList.remove("open");
  });
});

window.addEventListener("error", e => {
  document.querySelector("#error-console").textContent +=
    e.error.stack + "\n\n";
});

https://stackblitz.com/edit/js-x1v2yr?file=index.js,index.html,style.css

details要素のname属性

同じname属性で複数のdetails要素を紐づけることで、どれか1つだけを開けるUIを実装できます。

<details name="cookies">
  <summary>Chocolate chip</summary>
  Yum yum chocolate chip.
</details>
<details name="cookies">
  <summary>Snickerdoodle</summary>
   Yum yum snickerdoodle.
</details>
<details name="cookies">
  <summary>Maicenitas</summary>
   Yum yum maicenitas.
</details>
<details name="cookies">
  <summary>Sugar cookies</summary>
   Yum yum sugar cookies.
</details>

https://stackblitz.com/edit/js-bjwzi1?file=index.html

緩和されたCSSネスト

&is() を使用しなくてもCSSをネストした状態で記述できるようになりました。

.card {
  h1 {
    font-size: 24px;
  }
}

/* 今まで */
.card {
  & h1 {
    font-size: 24px;
  }
}

https://developer.chrome.com/blog/css-nesting-relaxed-syntax-update/?hl=ja

Vitest 1.0

2023年12月5日にVitest 1.0がリリースされました。

https://github.com/vitest-dev/vitest/releases/tag/v1.0.0

Node.js 18及びVite 5が必須に変更。coverageレポートがテストを行なっていないファイルも含めるのがデフォルトに変更、元に戻す場合はcoverage.allをfalseに設定。閾値関連の設定をthresholdsフィールドにまとめて記述するように変更。また古いオプションの削除及び置き換えなどが行われています。移行はさほど簡単そうです。

https://vitest.dev/guide/migration.html#migrating-from-vitest-0-34-6

Astro 4.0

2023年12月5日にAstro 4.0がリリースされました。

https://astro.build/blog/astro-4/

Vite 5.0に対応。開発体験を強化するためにDevToolbarが追加。DevToolbarのInspect機能では、プロパティを表示したり、クリックでコンポーネントを直接エディタで開くといったことが出来ます。さらにはDevToolbarはサードパーティによる拡張が出来るとのことです。i18n Routingが正式サポート。他、View Transition APIやLoggingの改善など。

Major updates of Redux libraries

2023年12月4日にRedux 5.0、Redux Toolkit 2.0、React Redux 9.0、Reselect 5.0などRedux関連パッケージのメジャーリリースが行われました。

https://github.com/reduxjs/redux-toolkit/releases/tag/v2.0.0

全てのReduxライブラリで、TypeScriptへ書き換え、ESM/CJSに対応、ES2020形式で出力されるようになりました。