Chrome 126 で import assertion 'assert' が使えなくなった。

2024/06/11 に Chrome 126 がリリースされました。

リリースされたのは良いことですが、そこから Right-Click to Calendar が動かなくなってしまいました。イベント登録用時に呼び出す JavaScript が Uncaught SyntaxError: Unexpected identifier 'assert' でエラーを起こしていたので、どうやらこれが原因で動かなくなったようです。

Chrome 126 のリリースノートを読むと、まさにその通りの説明がありました。

Dreprecate and remove import assertion ‘assert’ syntax Deprecate and remove the assert keyword in favor of the new with keyword in import attribute syntax.

That is, import m from ‘foo’ assert { type: ‘json’ } will now throw a SyntaxError, and developers must change to import m from ‘foo’ with { type: ‘json’ }.

json にインポートに使っていた import assertions assert が廃止されて import attributes with になったようです。書いてあるとおり with を使用したところエラーが消えて動作するようになったので、修正してリリースしました。

通常、廃止予定の構文を使っているときは警告が console に出力されるはずなのですが、今回はその類のお知らせがなかったので気づかずにここまで来てしまいました。廃止は半年以上前から計画にあったようなのですが、ECMAScript の仕様策定の事情は知らないので警告は出してほしかったです。ブラウザのバージョンが上がったらいきなり使えなくなるのはさすがに厳しい…!

とはいえ、今後もこういうことがあるかもしれないので、もう少し早く気づきたかったのは確かです。 Canary の Headless Chromium あたりで定期的にテストを流せば良いのでしょうが、コストが馬鹿高なのでやりたくないし良い案は今のところありません。

話は逸れますが、 June 3 2024: the Manifest V2 phase-out begins. ということでいよいよ Manifest V2 のサポートが終わりそうです。

使ってる拡張の半分くらいアップデートが止まっているので詰んだ気持ちになっています。代替がなくて他に利用者もいないニッチなものに関しては自分で直して使うしかないですね。それにしても Google 翻訳の拡張とか Google が開発してるのに V2 のままのものがあるのはどういう了見なのでしょう。