1233 文字
6 分

Frontend Weekly 2023-11-10

Chrome 119#

2023 年 10 月 31 日に Chrome 119 がリリースされました。

https://developer.chrome.com/blog/new-in-chrome-119/

Chrome 119 では、Chrome 114 から新規または更新した Cookie に適用されていた有効期限の 400 日制限が、全ての Cookie に対して遡って適用されるようになりました。Chrome は、2023 年第 1 四半期から第 3 四半期にかけて全てのユーザーに対してサードパーティ Cookie を無効化していく予定です。

https://developer.chrome.com/ja/blog/cookie-countdown-2023oct/

user-valid, user-invalid 擬似クラス#

ユーザー操作後に値の検証結果に応じて有効及び無効と判断されたフォーム関連要素にマッチする擬似クラス :user-valid:user-invalidが Chrome でサポートされました。これによりメジャーな環境の全てで:user-valid:user-invalidが利用できるようになりました。

https://developer.mozilla.org/ja/docs/Web/CSS/:user-valid

https://developer.mozilla.org/ja/docs/Web/CSS/:user-invalid

:valid:invalidと異なりユーザーの操作後にのみマッチするため、例えば required 属性を持っている要素では初期値がない場合、最初から:invalidが効いてしまいますが、:user-invalidではユーザーが操作するまで適用されません。

input:user-invalid {
border-color: red;
}
input:user-valid {
border-color: green;
}

https://stackblitz.com/edit/js-vxk1yq?file=style.css

CSS Relative colors#

CSS Relative colors syntax を利用すれば、特定の色から別の色を導出することが出来ます。Chrome 以外では、Safari と Edge で利用できます。

https://developer.chrome.com/blog/css-relative-color-syntax/

色空間(from 色 ...指定された色空間における色のパラメータ [/ 透過度])
rgb(from green r g b)
hsl(from green h s l)
hsl(from green h s l / alpha)

この機能を利用すれば、例えば特定の色からパケットを生成したり、コントラストが十分に保たれた文字色を CSS のみで生成することが出来ます。

/* トライアド配色 */
var(--base-color)
oklch(from var(--base-color) l c calc(h - 120)
oklch(from var(--base-color) l c calc(h + 120)
/* 単色パレット */
var(--base-color)
oklch(from var(--base-color) calc(l - 10) c h)
oklch(from var(--base-color) calc(l - 20) c h)
oklch(from var(--base-color) calc(l - 30) c h)
oklch(from var(--base-color) calc(l - 40) c h)
/* 類似パレット */
var(--base-color)
oklch(from var(--base-color) l c calc(h + 45))
oklch(from var(--base-color) l c calc(h + 90))
oklch(from var(--base-color) l c calc(h + 135))
/* 色の反転 */
rgb(from var(--base-color) calc(1 - r) calc(1 - g) calc(1 - b));
/* 補色 */
hsl(from var(--base-color) calc(h + 180) s l)

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

WasmGC#

WebAssembly のガベージコレクション機能 WasmGC がサポートされました。これにより GC 機能が含まれるプログラミング言語を Wasm に移植する際に GC を移植する必要がなくなります。

https://developer.chrome.com/en/blog/wasmgc/

Remix 2.2.0 ❤️ Vite#

2023 年 10 月 31 日に Remix 2.2.0 がリリースされました。

https://remix.run/blog/remix-heart-vite

Remix はコンパイラではなく、Vite プラグインとして使えるようになりました。

import { unstable_vitePlugin as remix } from "@remix-run/dev";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [remix()],
});

これにより Remix は Vite のエコシステムを利用できるようになりました。

Deno 1.38#

2023 年 11 月 2 日に Deno 1.38 がリリースされました。

https://deno.com/blog/v1.38

ドキュメントを静的な HTML として生成できるようになりました。

Terminal window
deno doc --html

HMR のサポートが入りました。このバージョンから細かな unstable flag が導入されています。今後、全ての不安定な機能を有効にする--unstable は非推奨になります。

Terminal window
deno run --unstable-hmr mod.ts

Npm や Yarn によってnode_modulesにインストールされたパッケージを利用できるようになりました。

deno.json
{
"unstable": ["byonm"]
}

Dotenv ファイルの読み込みがサポートされました。

Terminal window
deno run --env

他、EventSource API のサポートなどが含まれています。

ESLint v8.53.0#

2023 年 11 月 3 日にリリースされた ESLint v8.53.0 でフォーマット関連のルールが全て非推奨になりました。

https://eslint.org/blog/2023/11/eslint-v8.53.0-released/

廃止されるルールや、廃止するモチベーションについては次の記事に書かれています。代替手段として Prettier の使用やESLint Stylisticが紹介されています。

https://eslint.org/blog/2023/10/deprecating-formatting-rules/

Astro 3.4: Page Partials#

2023 年 10 月 26 日に Astro 3.4 がリリースされました。

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

ページコンポーネントを部分的な HTML として利用できる Page Partials 機能が追加されました。

pages/index.astro
<form hx-post="/partials/todos" hx-target="#todo-list" hx-swap="afterbegin">
<input type="text" id="txtTodo" name="todo" />
</form>
<ul id="todo-list"></ul>
// pages/partials/todos.astro
---
export const partial = true;
const formData = await Astro.request.formData();
const todo = formData.get("todo")?.toString();
---
<li>{todo}</li>

https://stackblitz.com/edit/withastro-astro-snxhyg?file=src%2Fpages%2Fpartials%2Ftodos.astro

他、Image コンポーネントのパフォーマンス改善、パフォーマンスやアクセシビリティに関する情報を表示してくれる Dev Overlay 機能が実験的に追加されました。

Astro 3.5: i18n Routing#

2023 年 11 月 8 日に Astro 3.5 がリリースされました。

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

実験的な機能として多言語対応を行える i18n Routing API が追加されました。この機能を有効化するとAstro.preferredLocaleAstro.preferredLocaleList が利用できるようになります。

astro.config.mjs
import { defineConfig } from "astro/config";
export default defineConfig({
experimental: {
i18n: {
defaultLocale: "en",
locales: ["en", "es", "pt-br"],
},
},
});

他、プリフェッチのオプトイン機能化や、Qwik のサポートなどが入っています。

Turbosnap (beta) - Chromatic#

Storybook を利用した VRT を実行できるサービス Chromatic から、変更があったコンポーネントだけをテストできる機能 TurboSnap がベータリリースされました。TurboSnap を利用すればスナップショットの数が減り、ビルド時間の短縮につながります。

https://www.chromatic.com/features/turbosnap

Frontend Weekly 2023-11-10
https://blog.ohirunewani.com/series/frontend-weekly/2023-11-10/
作者
hrdtbs
公開日
2023-11-10
ライセンス
CC BY-NC-SA 4.0