|
| 1 | +--- |
| 2 | +title:"2025-07-04のJS: ECMAScript 2025、Rspack 1.4、Deno 2.4、Bundle Sizeの改善" |
| 3 | +author:"azu" |
| 4 | +layout:post |
| 5 | +date:2025-07-04T02:54:31.532Z |
| 6 | +category:JSer |
| 7 | +tags: |
| 8 | + -React |
| 9 | + -css |
| 10 | + -rspack |
| 11 | + -Chrome |
| 12 | + -ECMAScript |
| 13 | +--- |
| 14 | + |
| 15 | +JSer.info#740 - ECMAScript 2025 が正式にリリースされました。 |
| 16 | + |
| 17 | +-[Ecma International approves new standards - Ecma International](https://ecma-international.org/news/ecma-international-approves-new-standards-11/) |
| 18 | +-[Release ES2025 · tc39/ecma262](https://github.com/tc39/ecma262/releases/tag/es2025) |
| 19 | + |
| 20 | +ECMAScript 2025 が Ecma International の General Assembly で承認され、正式にリリースされました。 |
| 21 | +ECMAScript 2025 では、次のような仕様が追加されています。 |
| 22 | + |
| 23 | +- Iterator helpers: iterator に対する map、filter、reduce などのメソッド |
| 24 | +- Set.prototype メソッド: Set に対する集合演算を行うためのメソッド |
| 25 | +- JSON modules インポート: JSON モジュールをインポートする機能と import attributes の仕様 |
| 26 | +- RegExp.escape メソッド: 正規表現をエスケープするためのメソッド |
| 27 | +- 正規表現修飾子フラグ: 正規表現内でインラインで modifier flags を有効/無効にする構文を追加 |
| 28 | +- Promise.try メソッド: Promise を返すかどうか不明な関数を呼び出し、結果を常に Promise にするメソッド |
| 29 | +- Float16Array: Float16 を扱う TypedArray 型 |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +Rspack 1.4 がリリースされました。 |
| 34 | + |
| 35 | +-[Announcing Rspack 1.4 - Rspack](https://rspack.rs/blog/announcing-1-4) |
| 36 | + |
| 37 | +Wasm を利用したブラウザ環境での実行サポートが追加され、bundle size の改善も行われています。 |
| 38 | +デフォルトで Incremental build が有効化され、実験的な CssChunkingPlugin の追加、MultiCompiler での lazy compilation サポートなどの機能強化が含まれています。 |
| 39 | +また、Perfetto ベースのパフォーマンス分析ツールも追加されました。 |
| 40 | + |
| 41 | +--- |
| 42 | + |
| 43 | +Deno 2.4 がリリースされ、`deno bundle`コマンドが復活しました。 |
| 44 | + |
| 45 | +-[Deno 2.4: deno bundle is back | Deno](https://deno.com/blog/v2.4) |
| 46 | + |
| 47 | +以前に廃止された`deno bundle`コマンドが復活し、テキストの`byte`インポート機能や OpenTelemetry の安定化が行われています。 |
| 48 | +`--preload`フラグの追加、`deno update`コマンドの追加、package.json の conditional exports サポートなど、開発体験の向上を図る多くの機能が追加されています。 |
| 49 | + |
| 50 | +--- |
| 51 | + |
| 52 | +{% include inline-support.html %} |
| 53 | + |
| 54 | +--- |
| 55 | + |
| 56 | +<h1class="site-genre">ヘッドライン</h1> |
| 57 | + |
| 58 | +--- |
| 59 | + |
| 60 | +##Announcing Rspack 1.4 - Rspack |
| 61 | + |
| 62 | +[rspack.rs/blog/announcing-1-4](https://rspack.rs/blog/announcing-1-4"Announcing Rspack 1.4 - Rspack") |
| 63 | + |
| 64 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">rspack</span> <spanclass="jser-tag">ReleaseNote</span></p> |
| 65 | + |
| 66 | +Rspack 1.4 リリース。 |
| 67 | +Wasm を利用してブラウザ環境での実行サポート、bundle size の改善。 |
| 68 | +デフォルトで Incremental build を有効化。 |
| 69 | +実験的な CssChunkingPlugin の追加、MultiCompiler で lazy compilation をサポート、`useInputFileSystem`オプションをサポート。 |
| 70 | +Perfetto ベースのパフォーマンス分析ツール、Zod v4 への更新など |
| 71 | + |
| 72 | +--- |
| 73 | + |
| 74 | +##Chrome 139 beta | Blog | Chrome for Developers |
| 75 | + |
| 76 | +[developer.chrome.com/blog/chrome-139-beta?hl=en](https://developer.chrome.com/blog/chrome-139-beta?hl=en"Chrome 139 beta | Blog | Chrome for Developers") |
| 77 | + |
| 78 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">Chrome</span> <spanclass="jser-tag">ReleaseNote</span></p> |
| 79 | + |
| 80 | +Chrome 139 beta リリース。 |
| 81 | +CSS では、`var()`/`attr()`の短絡評価のサポート、`caret-animation`/`corner-shape`/CSS Custom Functions のサポート。 |
| 82 | +WHATWG の仕様に合わせて`+json`の JSON MIME typ をサポート。 |
| 83 | +Origin trials で Prompt API、WebGPU Compatibility mode の追加。 |
| 84 | +macOS 11 サポート終了、ISO-2022-JP の自動検出の削除など |
| 85 | + |
| 86 | +-[Intent to Ship: Spec-compliant JSON MIME type detection](https://groups.google.com/a/chromium.org/g/blink-dev/c/-lZFLXH7_Y8/m/ZzgLXc91AQAJ"Intent to Ship: Spec-compliant JSON MIME type detection") |
| 87 | + |
| 88 | +--- |
| 89 | + |
| 90 | +##Ecma International approves new standards - Ecma International |
| 91 | + |
| 92 | +[ecma-international.org/news/ecma-international-approves-new-standards-11/](https://ecma-international.org/news/ecma-international-approves-new-standards-11/"Ecma International approves new standards - Ecma International") |
| 93 | + |
| 94 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">ECMAScript</span> <spanclass="jser-tag">news</span></p> |
| 95 | + |
| 96 | +ECMAScript 2025 が Ecma の GA で承認され正式にリリースされた。 |
| 97 | + |
| 98 | +-[Release ES2025 · tc39/ecma262](https://github.com/tc39/ecma262/releases/tag/es2025"Release ES2025 · tc39/ecma262") |
| 99 | + |
| 100 | +--- |
| 101 | + |
| 102 | +##Release 0.14.0 | StyleX |
| 103 | + |
| 104 | +[stylexjs.com/blog/v0.14.0](https://stylexjs.com/blog/v0.14.0"Release 0.14.0 | StyleX") |
| 105 | + |
| 106 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">React</span> <spanclass="jser-tag">css</span> <spanclass="jser-tag">library</span></p> |
| 107 | + |
| 108 | +StyleX v0.14.0 リリース。 |
| 109 | +`viewTransitionClass` API を追加、lint に`validImports`オプションを追加。 |
| 110 | +破壊的な変更としてスタイルをマージするときの戦略を設定する`styleResolution`オプションのデフォルト値を`application-order`から`property-specificity`に変更 |
| 111 | + |
| 112 | +--- |
| 113 | + |
| 114 | +##Electron 37.0.0 | Electron |
| 115 | + |
| 116 | +[www.electronjs.org/blog/electron-37-0](https://www.electronjs.org/blog/electron-37-0"Electron 37.0.0 | Electron") |
| 117 | + |
| 118 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">Electron</span> <spanclass="jser-tag">ReleaseNote</span></p> |
| 119 | + |
| 120 | +Electron 37.0 リリース。 |
| 121 | +Chromium 138.0.7204.35/Node 22.16.0/V8 13.8 にアップデート。 |
| 122 | +`window.open`で`innerWidth`と`innerHeight`オプションをサポート、Node.js の`--experimental-network-inspection`をサポート。 |
| 123 | +unhandled rejection 動作変更、WebUSB/WebSerial API の blocklist サポートなど。 |
| 124 | + |
| 125 | +--- |
| 126 | + |
| 127 | +##Deno 2.4: deno bundle is back | Deno |
| 128 | + |
| 129 | +[deno.com/blog/v2.4](https://deno.com/blog/v2.4"Deno 2.4: deno bundle is back | Deno") |
| 130 | + |
| 131 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">deno</span> <spanclass="jser-tag">ReleaseNote</span></p> |
| 132 | + |
| 133 | +Deno v2.4 リリース。 |
| 134 | +`deno bundle`コマンドの復活/テキストの`byte`インポート機能/OpenTelemetry の安定化。 |
| 135 | +`--preload`フラグの追加/`deno update`コマンドの追加/`DENO_COMPAT`環境変数の追加、package.json の conditional exports をサポートなど |
| 136 | + |
| 137 | +--- |
| 138 | + |
| 139 | +##Release v3.0.0 · recharts/recharts |
| 140 | + |
| 141 | +[github.com/recharts/recharts/releases/tag/v3.0.0](https://github.com/recharts/recharts/releases/tag/v3.0.0"Release v3.0.0 · recharts/recharts") |
| 142 | + |
| 143 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">React</span> <spanclass="jser-tag">graphic</span> <spanclass="jser-tag">library</span></p> |
| 144 | + |
| 145 | +Recharts 3 リリース。 |
| 146 | +Custom components のサポート、デフォルトで`accessibilityLayera11y`を有効に変更など |
| 147 | + |
| 148 | +-[3.0 migration guide · recharts/recharts Wiki](https://github.com/recharts/recharts/wiki/3.0-migration-guide#breaking-code-changes"3.0 migration guide · recharts/recharts Wiki") |
| 149 | + |
| 150 | +--- |
| 151 | + |
| 152 | +##dahlia/logtape: Simple logging library with zero dependencies for Deno, Node.js, Bun, browsers, and edge functions |
| 153 | + |
| 154 | +[github.com/dahlia/logtape?tab=readme-ov-file](https://github.com/dahlia/logtape?tab=readme-ov-file"dahlia/logtape: Simple logging library with zero dependencies for Deno, Node.js, Bun, browsers, and edge functions") |
| 155 | + |
| 156 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">nodejs</span> <spanclass="jser-tag">JavaScript</span> <spanclass="jser-tag">library</span> <spanclass="jser-tag">ReleaseNote</span></p> |
| 157 | + |
| 158 | +ロガーライブラリ。 |
| 159 | +ライブラリとアプリケーションの利用を想定していて、Node.js/Deno/Browser などで動作し、構造化ログをサポートしている。 |
| 160 | +また、pino や winston などの別のロガーとの Integration を行う Adapter を提供している |
| 161 | + |
| 162 | +--- |
| 163 | + |
| 164 | +<h1class="site-genre">アーティクル</h1> |
| 165 | + |
| 166 | +--- |
| 167 | + |
| 168 | +##CSS conditionals with the new if() function | Blog | Chrome for Developers |
| 169 | + |
| 170 | +[developer.chrome.com/blog/if-article?hl=en](https://developer.chrome.com/blog/if-article?hl=en"CSS conditionals with the new if() function | Blog | Chrome for Developers") |
| 171 | + |
| 172 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">css</span> <spanclass="jser-tag">article</span></p> |
| 173 | + |
| 174 | +CSS の`if()`関数について。 |
| 175 | +プロパティの値に対して`if()`と`style()`/`media()`/`suports()`を使った条件分岐を書く方法について |
| 176 | + |
| 177 | +--- |
| 178 | + |
| 179 | +##How We Reduced CKEditor’s Bundle Size by 40% | CKEditor |
| 180 | + |
| 181 | +[ckeditor.com/blog/how-we-reduced-ckeditor-bundle-size/](https://ckeditor.com/blog/how-we-reduced-ckeditor-bundle-size/"How We Reduced CKEditor’s Bundle Size by 40% | CKEditor") |
| 182 | + |
| 183 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">JavaScript</span> <spanclass="jser-tag">bundler</span> <spanclass="jser-tag">article</span></p> |
| 184 | + |
| 185 | +CKEditor 5 の bundle size 最適化について。 |
| 186 | +バージョンずれの対策として re-export でパッケージをまとめたパッケージを公開していたが tree-shakin が効かずに bundle サイズの問題が起きた。 |
| 187 | +`/* #__PURE__ */`コメントの活用、ES2022 への target 変更、`sideEffects`フラグの設定などを行う tree shaking の問題を解決していった話。 |
| 188 | +また、Sonda を使った bundle 分析について |
| 189 | + |
| 190 | +-[Sonda](https://sonda.dev/"Sonda") |
| 191 | + |
| 192 | +--- |
| 193 | + |
| 194 | +##\`useOptimistic\` to Make Your App Feel Instant | Epic React by Kent C. Dodds |
| 195 | + |
| 196 | +[www.epicreact.dev/use-optimistic-to-make-your-app-feel-instant-zvyuv](https://www.epicreact.dev/use-optimistic-to-make-your-app-feel-instant-zvyuv"`useOptimistic` to Make Your App Feel Instant | Epic React by Kent C. Dodds") |
| 197 | + |
| 198 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">React</span> <spanclass="jser-tag">article</span></p> |
| 199 | + |
| 200 | +React の`useOptimistic` hooks の使い方や`setState`との違いについて |
| 201 | + |
| 202 | +--- |
| 203 | + |
| 204 | +<h1class="site-genre">ソフトウェア、ツール、ライブラリ関係</h1> |
| 205 | + |
| 206 | +--- |
| 207 | + |
| 208 | +##photostructure/tz-lookup: JavaScript Library for Timezone Lookup by Location |
| 209 | + |
| 210 | +[github.com/photostructure/tz-lookup](https://github.com/photostructure/tz-lookup"photostructure/tz-lookup: JavaScript Library for Timezone Lookup by Location") |
| 211 | + |
| 212 | +<pclass="jser-tags jser-tag-icon"><spanclass="jser-tag">JavaScript</span> <spanclass="jser-tag">library</span></p> |
| 213 | + |
| 214 | +緯度経度から地名を検索するライブラリ |
| 215 | + |
| 216 | +--- |