稼働状況
console.log正常稼働console.clear使用頻度は低めYoga正常稼働Turbolog encoder正常稼働DevTools Throttler遵守textjs.org正常稼働ライブベンチマーク
@textjs/coreパイプラインは、このタブで100×32のダッシュボードを処理し、メモリー内のコンソールにフレームを書き込みます。
- フレーム全体
- —
- レイアウト+描画+エンコード
- 文字入力
- —
- 1行の編集
- アイドル時のフレーム
- —
- 変更なし
- %cスパン
- —
- 3,200セル
ページがアイドル状態になると自動で開始します。
パフォーマンス履歴
各マイルストーンで、同じマシン(Apple M5 Pro · Bun 1.4.4)上でのpackages/core/test/perf.test.tsの結果です。1,000フレームの平均です。
| リリース | フレーム全体 | 文字入力 | アイドル | %cスパン |
|---|---|---|---|---|
0.1.02025年3月 · @textjs/core · 7c91cea | 0.194ms | 0.065ms | 0.043ms | 205 |
0.2.02025年7月 · textjs.org · 92437cc | 0.192ms | 0.067ms | 0.042ms | 205 |
0.3.02025年11月 · 10× input · 8c2d1b1 | 0.205ms | 0.065ms | 0.043ms | 146 |
0.3.02025年11月 · Mobile pass · e2e6e46 | 0.212ms | 0.067ms | 0.045ms | 146 |
0.4.02026年5月 · Zero-flash frames · f007ade | 0.184ms | 0.046ms | 0.028ms | 146 |
1.0.02026年10月 · Text.js 1.0 · 57968b6 | 0.163ms | 0.011ms | 0.000ms | 149 |
DevToolsフロントエンド
Chrome for Testingでのbench/devtools:空白描画、配信フレーム、表示遅延を1回につき5秒測定します。測定方法。
| ドライバー | FPS | 空白描画 | 描画数/出力数 | 遅延p50 |
|---|---|---|---|---|
| 追記(現行版) | 15 | 1.0% | 74 / 75 | 10.4ms |
| フレームごとに消去 | 15 | 70.6% | 70 / 75 | 60.4ms |
| 追記、間隔制御なし | 60 | 0.8% | 67 / 295 | 31.2ms |
| フレームごとに消去 | 60 | 81.1% | 45 / 300 | 9.8ms |
過去のインシデント
新しい順です。時刻はUTCです。
2026年10月
iOS Safariでページがヘッダーの下に固定10月27日 – 2026年10月28日 · 解決済み
- 解決済み
この問題は解決しました。
- 監視中
修正をデプロイしました。スクロールアンカーを無効にしました(
overflow-anchor: none)。監視を続けています。 - 原因特定済み
下にスクロールしてから上に戻ると、ヒーローの見出しが追従ヘッダーの下に固定される問題がまだ残っています。Safariのスクロールアンカーがスクロール位置を調整しています。
- 監視中
修正をデプロイしました。これらの要素は横方向にのみスクロールし、
scrollbar-gutter: stableはマウスを使うデバイスにのみ適用されます。 - 原因特定済み
ファイルタブ、コードブロック、本文中の表には、アクティブなタブの下線による1pxの縦方向のはみ出しがあるため、縦横両方向にスクロールし、iOSがページ向けの縦スワイプをこれらの要素に渡しています。
scrollbar-gutter: stableもiOSで最初のスクロールが飛ぶ原因になっています。 - 調査中
iOS Safariでtextjs.orgのページを先頭までスクロールして戻れないという報告を調査しています。
このインシデントの影響範囲:textjs.org。
事後分析
textjs.orgのページは読み込み中にずれないため、スクロールアンカーによる補正は不要でした。iOS Safariではヒーローが追従ヘッダーの下に固定され、先頭までスクロールして戻れなくなっていました。textjs.orgで
?debug=scrollを指定すると、スクロール、タッチ、リサイズのイベントがリアルタイムで表示され、プログラムによるフォーカスやスクロールの各呼び出し元も確認できます。修正:
297c5d7,55da525,8424fcd· 変更履歴:1.0.0- 解決済み
CIでLintルールのテストが失敗2026年10月23日 · 解決済み
- 解決済み
テスターは、テストが
RuleTester.itOnlyを呼び出したときにit.onlyを遅延読み取りするようになりました。CIは成功しています。 - 原因特定済み
環境変数
CIが設定されていると、Bunはit.onlyの読み取り時に例外を投げます。ルールテスターはインポート時にRuleTester.itOnly = it.onlyを代入するため、読み込みに失敗します。 - 調査中
eslint-plugin-textjsのテストスイートが、ルールのテストを実行する前にCIで失敗します。ローカルでは成功します。
事後分析
@typescript-eslint/rule-testerは、RuleTesterの静的プロパティとしてテスト関数を受け取ります。修正ではit.onlyを関数でラップしています。パッケージやページへの影響はありませんでした。修正:
eca3f78- 解決済み
/playgroundと/opencodeでのレイアウトシフト10月21日 – 2026年10月22日 · 解決済み
- 解決済み
すべてのルートで累積レイアウトシフトが0になりました。
- 監視中
修正をデプロイしました。両ページでパッドのレイアウトを共通化し、「自動サイズ」を動かさずにサイズを追加するようにしました。監視を続けています。
- 原因特定済み
コンソールサイズのコントロールは、ハイドレーション後に測定サイズをラベルに追加するため(
Fit console · 120×36)、「自動サイズ」のテキストノードが動きます。また、パッドの上段と下段の高さが2つのページで異なるため、移動時にパッドの中央位置が変わります。 - 調査中
レイアウトシフト監査で、/playgroundと/opencodeの累積レイアウトシフトが0.0001と報告されています。監査対象のほかのルートはすべて0です。この2つのページ間を移動すると、フォーカスパッドも動きます。
このインシデントの影響範囲:textjs.org。
事後分析
パッドの上下のスロットを固定高にし、すべてのデモで同じ行数を確保したため、ページやデモを切り替えても何も動きません。OpenCodeの接続パネルは、どの状態でもステータスを1行で表示し、ハイドレーションまではスケルトンを表示します。
apps/web/scripts/e2e-layout.mjsは、ルート、デモ、ビューポートサイズ、接続状態が変わってもボックスが同一であることを検証します。修正:
8f22b9b· 変更履歴:1.0.0- 解決済み
npmでパッケージ名textjsが使用不可10月14日 – 2026年10月15日 · 解決済み
- 解決済み
この問題は解決しました。
- 監視中
フレームワークとCLIのパッケージは、
@textjs/coreと@textjs/reactと同じスコープの@textjs/nextになりました。インポート先はtextjsから@textjs/nextに変わります。 - 原因特定済み
textjsという名前は2016年3月25日から別のnpmパッケージが所有しています。 - 調査中
フレームワークのパッケージ
textjsをnpmに公開すると403 Forbiddenで失敗します。
事後分析
Text.js 1.0から、アプリのインポート先は
textjsではなく@textjs/nextになり、OpenCodeブリッジはどのディレクトリーからでも実行できるbunx @textjs/app proxyになります。- 解決済み
2026年9月
改行位置の空の描画レイヤー9月15日 – 2026年9月16日 · 解決済み
- 解決済み
この問題は解決しました。
- 監視中
修正をデプロイしました。連続部分を継続しない改行では、まず
%cを空のスタイルにリセットし、DevToolsが通常の改行を出力するようにしました。各フレームのカーテンは1つです。 - 原因特定済み
スタイル付きの連続部分が改行位置で終わると、
\nはその部分の%cスパン内に書き込まれます。DevToolsは改行位置でスパンを分割し、残った空の部分がcontain: paintを持つdisplay: inline-blockスパンとなり、独自の描画レイヤーを持ちます。 - 調査中
DevToolsのフレームの大半の改行位置に空の
<span>要素があり、一部のフレームでカーテンのスパンが二重になる問題を調査しています。
このインシデントの影響範囲:Turbolog encoder。
事後分析
同じスタイルのスパンは引き続き改行をまたいで結合されます。カーテンも専用の行に移動しました。DevToolsはソースリンク(
VM12:1)をメッセージの最初の行の右側に配置するため、インラインのカーテンではリンクが行0の横に残り、行幅を狭めていました。- 解決済み
2026年8月
console.clear後の表示遅延の増加8月27日 – 2026年8月31日 · 解決済み
- 解決済み
bench/devtoolsでの表示遅延の中央値は10.4msです。この修正はText.js 1.0に含まれます。 - 監視中
修正をデプロイしました。クリアを伴うフレームの後、レンダラーが一度だけ110ms待機し、以降のフレームがDevToolsの前回の更新から50msを超えて到着して、即時処理されるようにしました。
- 原因特定済み
クリア後、DevToolsは「コンソールがクリアされました」という行を挿入します。この行がスロットラーの即時実行枠を使い、次のフレームを50msのタイマーに送ります。フレーム間隔が66msのため、その後のすべてのフレームもこのタイマーに留まります。
- 調査中
bench/devtoolsでは、コンソールをクリアすると表示遅延の中央値が63msになります。その後のすべてのフレームでも遅延はその水準のままです。
このインシデントの影響範囲:DevTools Throttler, console.clear。
- 解決済み
スピナーによるDevToolsコンソールの行のずれ8月11日 – 2026年8月12日 · 解決済み
- 解決済み
このインシデントは解決しました。この修正はText.js 1.0に含まれます。
- 監視中
修正をデプロイしました。デフォルトの
dotsスピナーは、Menloでそれぞれ1セルの四分円ブロック(▘ ▝ ▗ ▖)を描画するようになりました。点字フレームはターミナル向けにvariant="braille"で利用できます。 - 原因特定済み
デフォルトのスピナーは点字パターン(U+2800〜U+28FF)を描画します。Text.jsはそれぞれを1セルとして計測しますが、macOSのDevToolsコンソールのフォントであるMenloには点字グリフがありません。代替グリフはセルより幅が広く、行の残りを右に押し出します。
- 調査中
macOSでは、
<Spinner>を含む行がDevToolsでずれます。スピナーの右側のセルがグリッドから外れます。
このインシデントの影響範囲:console.log。
- 解決済み
2026年5月
DevToolsコンソールで空白の描画が増加5月5日 – 2026年5月19日 · 解決済み
- 解決済み
修正はText.js 0.4.0でリリースされました。空白の描画は1.0%で、すべて最初のフレームで発生しています。
- 監視中
textjs.orgでは、クリアする代わりにフレームを追記するようになりました。幅ゼロのカーテンスパンで過去のフレームを隠し、フレーム間隔を最低66msに調整しています。
- 原因特定済み
DevToolsは
console.clear()を同期的に適用しますが、新しいメッセージの描画は50ms間隔に制限します。各フレームは前のフレームを即座に削除し、最大50ms後に描画されます。bench/devtoolsでは、100×32のダッシュボードがDevToolsの描画のうち15fpsで70.6%、60fpsで81.1%の割合で空白になりました。 - 調査中
負荷がかかるとDevToolsコンソールがフレーム間で一瞬空白になるという報告を調査しています。
このインシデントの影響範囲:console.clear, DevTools Throttler。
事後分析
0.1.0以降、Turbologは変更されたフレームごとに
console.clear()とconsole.log()を1回ずつ送っていました。Chrome for Testingで実際のDevToolsフロントエンドを動かすbench/devtoolsは、このインシデントを計測するために作られ、上のDevToolsフロントエンドの表の数値を算出しました。修正:
f007ade· Turbolog:ちらつきの解消 · 変更履歴:0.4.0- 解決済み
2026年4月
コンソールのフレーム内のファイルパスにリンクのスタイルが適用4月14日 – 2026年4月15日 · 解決済み
- 解決済み
この問題は解決しました。
- 監視中
修正をデプロイしました。セルでリンクを許可していない限り、エンコーダーは
path:line、//host:port、data:のテキストにワードジョイナー(U+2060)を挿入します。 - 原因特定済み
DevToolsはコンソールメッセージ内のURL、
path:line、//host:portのテキストをリンクに変換し、テーマの色を強制的に適用します。エンコーダーはすでに://とwww.を分割していましたが、path:lineとスキームに続く//host:portは依然として一致します。 - 調査中
src/app.tsx:12やhttp://localhost:3000などのテキストが、%cのスタイルではなくDevToolsのリンク色で描画されます。
このインシデントの影響範囲:Turbolog encoder。
- 解決済み
2025年11月
コンソールアプリでのキー入力の遅延11月4日 – 2025年11月18日 · 解決済み
- 解決済み
修正はText.js 0.3.0でリリースされました。
- 監視中
修正をデプロイしました。キー入力や貼り付けなどの個別の入力は、同じタスク内で同期的に描画されるようになりました。他の更新は引き続き
requestAnimationFrameでコミットされます。 - 原因特定済み
キー入力を含むすべての更新は、次の
requestAnimationFrameを待ってからReactがコミットし、フレームがログに出力されます。 - 調査中
コンソールアプリへの文字入力がキーボード操作より遅れ、特にtextjs.orgのOpenCodeで目立ちます。
このインシデントの影響範囲:textjs.org。
事後分析
キー入力が次のアニメーションフレームを待たなくなりました。タイマーやストリーミングデータなど、入力以外に由来するコミットは、引き続きアニメーションフレームごとにまとめられます。
修正:
8c2d1b1· 変更履歴:0.3.0- 解決済み