Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Loader stub silently drops calls outside queued method list, which results in either silent no-ops

未关闭 适合新手
#21,806 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
68/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
冷清
领域
frontend

调研方向

首先阅读 packages/browser-integration-tests/fixtures/loader.js,以追踪加载前的方法队列,然后将其中的条目与 packages/core/src/integration.ts 中的 addIntegration 实现进行比较。确认加载后如何重放队列中的调用,并验证所选的防护机制能够处理 addIntegration,同时不更改队列中现有的方法。

由索引模型根据 Issue 内容生成。

描述

Feature Package-Meta: Loader
Problem Statement

Problem

The CDN loader stub only queues a fixed set of SDK methods pre-load (init, addBreadcrumb, captureMessage, captureException, captureEvent, configureScope, withScope, showReportDialog). Any SDK call outside this list — such as addIntegration — is silently absent on the window.Sentry proxy before the full bundle loads, causing either silent no-ops or runtime crashes depending on timing.

The correct workaround is wrapping such calls in Sentry.onLoad(...), but the loader provides no mechanism to enforce this, making it easy to write code that works in development (where the bundle may already be loaded) but crashes in production.

Current Behavior

  • Unrecognized calls on the pre-load proxy are undefined — calling them throws or silently does nothing
  • addIntegration is a notable gap: it is a common post-init call pattern that the loader stub does not queue

Gap

  • No TypeScript or runtime guardrail prevents calling unqueued methods before onLoad
  • The failure mode is timing-dependent and hard to reproduce locally
Solution Brainstorm

Options

  1. Extend the queued method list — add addIntegration (and other commonly used post-init methods) to the pre-load queue so they are replayed after the bundle loads, consistent with how init is handled
  2. Catch-all no-op proxy — intercept any unrecognized property access pre-load and return a no-op function; prevents crashes but silently swallows calls
  3. Catch-all replay proxy — queue all unrecognized calls (not just the fixed list) and attempt replay post-load; broader coverage but requires more careful handling of methods with return values

Option 1 is the lowest-risk and most targeted fix. Option 3 is the most ergonomic for callers but adds complexity to the replay logic.

Additional Context

References

  • Loader stub source: packages/browser-integration-tests/fixtures/loader.js
  • addIntegration implementation: packages/core/src/integration.ts
Priority

React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it.

主要语言
TypeScript
星标
8.7k
派生
1.9k
平均合并
1 天 16 小时
30 天内合并 PR
576

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

getsentry/sentry-javascript 的其他 Issue

查看 getsentry/sentry-javascript 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。