リリースノート

CHANGE

下位互換のない変更

UPDATE

下位互換がある変更

ADD

下位互換がある追加

FIX

バグ修正

過去のリリースノートを確認したい場合は 古いリリースノート をご確認ください。

2026.1.0

リリース日:

2026-06-18

ESM 専用パッケージへの移行について

Sora JavaScript SDK 2026.1.0 から package.jsonexports["."] から require 条件を削除し、ESM のみのサポートになりました。

require("sora-js-sdk") は 2025.2.0 以前でも ERR_REQUIRE_ESM で失敗していましたが、 2026.1.0 以降は ERR_PACKAGE_PATH_NOT_EXPORTED でエラーメッセージが変わります。

CommonJS から利用していた場合は import または await import() に置き換えてください。

Node.js のサポートバージョンについて

Sora JavaScript SDK 2026.1.0 から Node.js の最低要件は 22.18.0 以上になりました。

Node.js 20 は 2026-04-30 に End Of Life (EoL) を迎えたためサポートを終了しました。 Node.js 22 系を利用する場合は 22.17.x 以前ではビルドが通らない点に注意してください。

変更履歴

  • [CHANGE] Node.js 20 のサポートを終了しました - Node.js 20 は 2026-04-30 に End Of Life (EoL) を迎えました - https://github.com/nodejs/Release#release-schedule
  • [CHANGE] Node.js の最低要件を 22.18.0 以上に引き上げました - 後続のビルドツール移行で導入される tsdown 0.22 系が Node.js ^22.18.0 || >=24.0.0 を要求するため
  • [CHANGE] package.jsonexports["."] から require 条件を削除し ESM のみをサポートするように変更しました - require("sora-js-sdk") は元から ERR_REQUIRE_ESM で失敗していましたが、削除後は ERR_PACKAGE_PATH_NOT_EXPORTED でエラーメッセージが変わります - CommonJS で利用していたコードは import または await import() に置き換える必要があります
  • [CHANGE] removeAudioTrack / removeVideoTrack 実行中に disconnect() 等で RTCPeerConnection が破棄された場合に ConnectError (reason "REMOVE_TRACK_DURING_DISCONNECT") で reject するように変更しました - 利用者は .catch で reject を受ける必要がある (fire-and-forget で呼んでいる場合は unhandled promise rejection が発生する) - 非推奨の stopAudioTrack / stopVideoTrack、および replaceAudioTrack / replaceVideoTrack 経由でも同じ reject が伝播する
  • [CHANGE] abendPeerConnectionState() の発火順を他 3 系統と揃え timeline → callback の順に変更しました
  • [UPDATE] pnpm 11 系に上げました
  • [UPDATE] TypeScript 6.0 へ対応しました
  • [FIX] trace() が JWT 等の機密を含む metadata を console / callbacks.log に raw 出力していたセキュリティ問題を redact で修正しました
  • [FIX] rpc メソッドのサンプルコードで、実際に存在しない RPC メソッド名が使われていた問題を修正しました
  • [FIX] type: "redirect" 受信時に旧 WebSocket の onmessage ハンドラが解除されていなかった問題を修正しました
  • [FIX] type: "switched" (ignore_disconnect_websocket) 経路で旧 WebSocket の onmessage / onerror ハンドラが解除されていなかった問題を修正しました
  • [FIX] disconnect() が並列実行されたとき callbacks.disconnect() が複数回発火しないように修正しました
  • [FIX] onDataChannel で同名 label の DataChannel を上書きする際に旧 DataChannel のハンドラを解除し close するように修正しました
  • [FIX] disconnect() で WebSocket が OPEN 以外の状態のときに disconnect callback が呼ばれない問題を修正しました
  • [FIX] iceConnectionStatedisconnected で 10 秒経過した際の検知が現行ブラウザで動作していなかった問題を修正しました
  • [FIX] 切断系メソッド 5 経路で pc.onicecandidate を解放し Trickle ICE 由来の unhandled rejection を防ぐように修正しました
  • [FIX] sendAnswer()ws.send() が同期 throw したときに内部状態がクリーンアップされなかった問題を修正しました
  • [FIX] signaling()ws.onmessage 内で例外が発生したときに connect()connectionTimeout まで固まっていた問題を修正しました
  • [FIX] generateCertificate が失敗した環境 (FIPS モード等) でも接続できるようにフォールバックするように修正しました
  • [FIX] disconnect() で DataChannel 切断エラー (code: 4999) 時に abend event が normal で上書きされないように修正しました
  • [FIX] createSignalingMessage(){ audioBitRate: undefined } のような呼び出しで message.audio / message.video が boolean true から空オブジェクト {} に置換されていた問題を修正しました - 関連して spotlightNumber / audioOpusParams*undefined を渡しても messageundefined キーが積まれないように修正しました
  • [FIX] messaging() が呼び出し側に渡された options を破壊しないように修正しました
  • [FIX] ConnectionBase constructor で options を shallow copy に変更し skipIceCandidateEvent の内部代入が呼び出し側 options に漏れないようにしました - 上記 messaging() の修正とあわせて、同一 options を sendrecv() / sendonly() / recvonly()messaging() に渡したときに先行 Connection の options まで書き換わる問題も解消しました
  • [FIX] abend() の abend 分岐で SoraCloseEvent を 2 回生成して timeline と callback に別インスタンスを渡していたのを 1 つのインスタンスを共有するように修正しました
  • [FIX] sendSignalingMessage / sendStatsMessage で送信前に readyState を確認し、 OPEN 以外の状態での送信を防ぐように修正しました

2025.2.0

リリース日:

2025-12-10

変更履歴

  • [ADD] 接続が確立した際に発火する connected コールバックを追加しました
    • RTCPeerConnectionconnectionStateconnected かつシグナリング通知で自身の connection.created が通知されたタイミングで発火します
    • connected コールバックは 一度のみ 発火します
    • connected コールバックはシグナリング通知が無効な場合は発火しません
    • 詳細は connected をご確認ください
  • [ADD] シグナリングが DataChannel 経由に切り替わった際に発火する switched コールバックを追加しました - DataChannel シグナリング機能を利用している場合にのみ発火します - 詳細は switched をご確認ください
  • [ADD] サイマルキャスト機能で初期の rid を指定する simulcast_request_rid オプションを追加しました - デフォルトは未指定です - simulcasttrue で指定する必要があります - sendrecv または recvonly でのみ有効です
  • [ADD] RPC 機能を利用できる rpc メソッドを追加しました
  • [ADD] 利用できる RPC 一覧が取得できる rpcMethods を追加しました

2025.1.0

リリース日:

2025-06-12

レガシーストリーム機能の廃止について

Sora 2025.1.0 のレガシーストリーム機能の廃止に伴い、 Sora JavaScript SDK の 2025.1.0 でレガシーストリーム機能を廃止しました。

今後、レガシーストリーム機能を継続して利用したい場合は、 Sora JavaScript SDK の 2025.1.0 より以前のバージョンを利用してください。

multistream オプションの廃止について

今回 Sora 2025.1.0 でレガシーストリーム機能の廃止に伴い multistream オプションを廃止しました。

もし multistream オプションを指定している場合は、 options から multistream 項目を削除して利用するようにしてください。

multistream オプションを指定しない場合は何もする必要がありません。

sora = Sora.connection(signalingUrl, debug);
connection = sora.sendonly(channelId, undefined, {
   // 廃止された multistream オプションなので、この項目を削除してください
   multistream: true,
});
  • 2017 年にリリースした Sora JavaScript SDK で multistream オプションを追加しました
  • 2022 年にリリースした Sora JavaScript SDK で multistream オプションのデフォルト値を true を変更しました

変更履歴

  • [CHANGE] Sora 2025.1.0 で廃止される、レガシーストリーム機能への対応を終了しました
  • [CHANGE] レガシーストリーム対応の終了に伴い、オプションの multistream 項目を廃止しました
  • [ADD] onIceCandidate を呼ばない skipIceCandidateEvent オプションを追加しました
  • [FIX] シグナリング URL が一つの場合でも配列として扱うようになっていた問題を修正しました
  • [FIX] シグナリング URL が空配列の場合エラーになるように修正しました