Frontend Weekly 2024-02-16
React Compiler
2024 年 2 月 15 日の React の記事にて、React Forget として知られていた React Compiler について触れられていました。React Compiler は既に Instagram の本番環境で動作しているそうです。
https://react.dev/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024
React Compiler によって、今まで useMemo や useCallback、memo などを利用して手動で行われていたメモ化が自動で最適化されるようになります。また React コアチームのメンバーは、この記事を紐付けて useMemo、useCallback、memo、forwardRef、React.lazy、useContext、throw promise、Context.Provider は 2024 年末までに不要になると語っています。
typescript-eslint v7
2024 年 2 月 12 日に typescript-eslint v7 がリリースされました。
Flat config が正式にサポートされています。
https://typescript-eslint.io/blog/announcing-typescript-eslint-v7/
Flat config 用に typescript-eslint というパッケージがリリースされました。
pnpm remove @typescript-eslint/parser @typescript-eslint/eslint-pluginpnpm add typescript-eslint
なお、次のように利用例で tseslint.config という関数が使われていますが、これは別に typescript-eslint 用の設定をしてくれるようなものではないため、実際は利用しなくても大丈夫です。
import eslint from '@eslint/js';import tseslint from 'typescript-eslint';
export default tseslint.config({ eslint.configs.recommended, ...tseslint.configs.recommended,})
Hono v4
2024 年 2 月 9 日に Hono v4 がリリースされました。
https://github.com/honojs/hono/releases/tag/v4.0.0
Static Site Generation
静的ページを書き出してサイトを作る機能がリリースされました。Vite の SSG ビルドをするためのプラグイン@hono/vite-ssg
も公開されました。
import fs from "node:fs/promises";import { toSSG } from "hono/ssg";import app from "./src/index";
toSSG(app, fs);
Client Components
テンプレートエンジンの代替としてサーバー側で実行するように設計されていた hono/jsx
が、クライアントでも実行できるようになりました。
React と同じコードが Hono で実行できます。
import { useState } from "hono/jsx";import { render } from "hono/jsx/dom";
function Counter() { const [count, setCount] = useState(0); return ( <div> <p>Count: {count}</p> <button onClick={() => setCount(count + 1)}>Increment</button> </div> );}// ...
const root = document.getElementById("root");render(<App />, root);
React の API である useEffect や startTransition、useContext、use なども利用できます。
File-based Routing - HonoX
Vite と Hono をベースとしたフルスタック Web フレームワーク HonoX がリリースされました。Hono の機能に加えて、Next.js のような File-base Routing や Islands Architecture などの機能を利用することが出来ます。