By Roxチーム
Rox v2026.5.1 リリース
Rox v2026.5.1 をリリースしました!🎉
このバージョンでは、本番運用に欠かせない エラー追跡 (Error Tracking) を Rox 本体に組み込みました。SaaS の Sentry はもちろん、OSS で API 互換の GlitchTip にもそのまま接続できる構成にしてあります。
ハイライト
🔭 Sentry / GlitchTip 連携 (#205 / #204)
バックエンドとフロントエンドの両方に、エラー追跡 SDK を組み込みました。
- バックエンド:
@sentry/bunを使用。src/instrument.tsを別モジュールとして分離し、src/index.tsの最初のimportで読み込むことで、OpenTelemetry ベースの自動計測が他のモジュールよりも先に走るよう設計しています。 - フロントエンド:
@sentry/reactを使用。クライアント側のモジュールロード時点で初期化されるため、初期レンダー中のエラーも取りこぼしません。 - DSN 未設定なら完全 no-op:
SENTRY_DSN/VITE_SENTRY_DSNが空のときは Sentry 関連の処理を一切行わず、依存もランタイムに残りません。セルフホストで監視サービスを使わないユーザーにも負担をかけません。
🛡️ 厳格な PII スクラブ
ActivityPub サーバーは、リクエストに Authorization ヘッダや OAuth の code / state パラメータなど、機微情報を含むことがあります。これらが誤って外部の監視サービスに送られないよう、Rox の Sentry 連携は 送信前に必ず PII を削除するよう設計しました。
event.request.{cookies, data, headers, query_string}をbeforeSendで削除event.user.{email, username, ip_address}も同様に削除includeServerName: falseでホスト名も除外(デフォルトではos.hostname()がイベントに含まれてしまうため)
⏰ Cron Monitoring (heartbeat) を内蔵
定期実行されるバックエンドサービスに、Sentry の Cron Monitoring (Check-ins) を組み込みました。サービスが死んだまま誰も気付かない状況を防ぎます。
ReceivedActivitiesCleanupService(日次)RemoteInstanceRefreshService(毎時)ScheduledNotePublisher(毎分)
withMonitor という小さなヘルパーで包んでいるため、追加サービスも数行で監視対象に追加できます。こちらも DSN 未設定時はスルーパスです。
🩺 観測しやすい設計
- バックエンドの
errorHandlermiddleware で発生したエラーは、Hono のルートテンプレート (/users/:username等) をタグに付けて Sentry に送信されます。生の URL はextrasにしか入らないため、タグの高カーディナリティ問題を回避しています。 - フロントエンドの
ErrorBoundaryもcomponentStackを含めて捕捉します。
環境変数
# バックエンド
SENTRY_DSN=https://xxxx@sentry.example/xxxx
SENTRY_ENVIRONMENT=production
SENTRY_TRACES_SAMPLE_RATE=0.0
SENTRY_RELEASE=2026.5.1
# フロントエンド (ビルド時に焼き込まれる)
VITE_SENTRY_DSN=https://xxxx@sentry.example/xxxx
VITE_SENTRY_ENVIRONMENT=production
VITE_SENTRY_TRACES_SAMPLE_RATE=0.0
VITE_SENTRY_RELEASE=2026.5.1
周辺の改善
- Dependabot のターゲットを
devブランチへ変更 (#207 / #206) — リリースフローと噛み合うようになり、obsolete な PR が作られなくなりました。 - 既存の TypeScript 6.0.3 / Lingui 6.0.1 へのアップデートも引き続き取り込み済みです。
バージョン情報
| コンポーネント | バージョン |
|---|---|
| Rox (Project) | 2026.5.1 |
| Hono Rox (Backend) | 1.7.0 |
| Waku Rox (Frontend) | 1.7.0 |
| Shared | 1.7.0 |
アップデート方法
最新版へは、リポジトリの pull と依存関係の更新で移行いただけます。
git pull origin main
bun install --frozen-lockfile
bun run build
Sentry / GlitchTip を使う場合は .env に SENTRY_DSN / VITE_SENTRY_DSN を追加してください。使わない場合は何も設定しなくて大丈夫です。
ご質問やフィードバックは GitHub Issues にてお待ちしております。
愛がロックする。Rox。 🚀