Sentry-javascript: [征集反馈] Sentry JavaScript SDK v7 路线图

创建于 2020-08-13  ·  18评论  ·  资料来源: getsentry/sentry-javascript

¡朋友们!

Sentry 帮助每个开发人员诊断和修复他们的代码。 我们正计划着手开发 JavaScript SDK 的新主要版本,并希望使其成为迄今为止最好的软件。

但是,为此,我们需要您提供一些反馈。

_使用SDK最大的痛点是什么?_
_您最缺少哪些功能?_
_你想改变什么?_

我们已经计划解决下面列出的一些问题:

  • 放弃对 IE10 和官方弃用的 Node 版本的支持
  • 大大减少整体捆绑大小
  • 使SDK更加模块化
  • 提高 tree-shaking 兼容性
  • 返工集成/扩展以更好地与多个客户合作

帮助我们帮助您,让我们知道您的想法! 我们将确保回答所有评论,因此每个声音都很重要。

干杯!
卡米尔

Breaking Discussion

最有用的评论

对我来说, drastically reduce overall bundle size目标也是最重要的目标。

所有18条评论

我最大的抱怨总是我的错误日志库是我最大的第三方库之一。 我经常考虑在第一页加载后 5-10 秒延迟加载 Sentry 以获得更好的页面速度分数,所以我很高兴你正在解决这个问题❤️

对我来说, drastically reduce overall bundle size目标也是最重要的目标。

你好,

大大减少整体捆绑大小

我正在为此 +1,以防万一发生任何变化。 我要补充一点:在我的网络应用程序中,Sentry 初始化需要 30 毫秒(在快速计算机上),这对于诊断记录器来说太长了,而在 React Native 应用程序中,它明显更糟,因为它的捆绑器(Metro)无法进行树摇动,因此 Sentry 导入了高达 _78 个文件_,并且对启动时间也有可观的贡献(几个 %)。

嗨,只是来自 React Native 的一些数据:

image

这是在 iPhone X 上进行分析的。Sentry 在启动时需要高达 54 毫秒——大约 40 毫秒只是为了导入大部分文件,大约 15 毫秒来初始化 JS 代码。 再加上约 30 毫秒阻塞主线程以初始化 _native_ 端,并且在词法分析/解析 Sentry 的 JS(其中有很多)方面有一些时间下落不明 - 我怀疑 5-15 毫秒,但没有精确测量。 总共 - 90-100 毫秒 - 这是启动我的应用程序总时间的 15%!

好问题! 我希望为生产应用程序看到更灵活的日志记录选项(或如何创建文档),在这些应用程序中,您不想将用户暴露给任何 console.log,但您确实希望将它们捕获为面包屑。 这可以解决诸如https://github.com/getsentry/sentry/issues/12618https://github.com/getsentry/sentry-javascript/issues/1883 之类的问题

也许 Sentry 面包屑可以与debugloglevel等日志库集成。 这似乎是生产应用程序的一个常见用例,并且可能已经有一些 DIY 方法支持它,但是根据当前文档,这是否可能还不清楚。 (或者如果它是并且我以某种方式错过了它,那么我将不胜感激任何提示)。 谢谢!

嗨,我有一个关于 SDK 初始化的建议。

无需使用选项调用 Sentry.init,SDK 可以自动检查 SentryOptions,如命名全局变量,以获取 DSN id 和其他选项。

我们在需要时动态加载 JS 文件,并且很难在跨域请求或网络问题中跟踪 bundle js 的加载事件。 自动检查此变量将对此有所帮助,无需专门调用 init 函数。

_SDK未能发送事件_指示

我想有某种迹象表明capureEvent未能发送请求 - 所以它可以排队并稍后重试。

这对于离线优先的应用程序(渐进式网络应用程序)非常有帮助。

在某些情况下,浏览器处于在线状态,但由于连接不稳定/超时(即在网络覆盖较差的低谷地区旅行)而导致网络请求失败。

有一个离线集成,但是它依赖于在线和离线事件,这不足以涵盖这种情况。

网络错误可能会导致不考虑这种情况的应用程序抛出错误,这些错误无法被 Sentry 记录并消失在空白中。

我有一个 PWA 项目,当应用程序离线时我没有收到事件,并且没有办法在服务人员中进行后台同步,因为没有为哨兵摄取域注册。

@edelvalle
这应该可以通过 Workbox 和它的Background Sync 插件来实现~但是我还没有测试过~
它似乎工作正常,事件日期也是发生错误的时间。

// service-worker.js
import { registerRoute } from 'workbox-routing'
import { NetworkOnly } from 'workbox-strategies'
import { BackgroundSyncPlugin } from 'workbox-background-sync'

registerRoute(
  new RegExp('^https://[^\\.]+\\.ingest\\.sentry\\.io/api/.*$'),
  new NetworkOnly({
    plugins: [
      new BackgroundSyncPlugin('project-name/sentry-event-queue', {
        maxRetentionTime: 7 * 24 * 60, // 7 days
      })
    ],
  }),
  'POST'
)

嗨,很高兴看到drastically reduce overall bundle size的计划。 我们有一个 gatsby+preact 项目,并且 sentry 占据了我们主要包大小的约 28%(95kb 中的 27kb)。 我们正在尝试将我们的每页 js 包控制在 90kb 以下,以便我们的应用程序可以在连接不良的农村地区表现更好。 一个非常小的哨兵 SDK 大小将有很大帮助。

为什么不放弃对 IE11 的支持呢? 包括 Microsoft 在内的许多大型网站将在今年年底结束对这款浏览器的支持。 当然,问题是这是否真的会影响图书馆的规模。

@kamilogorek知道 v6 何时到来?

我也同意@xr0master 的观点,认为应该完全放弃对 IE 的支持,包括新版本中的 IE11。

使用 SDK 时最大的痛点是什么?

  • 输入。 但我想这与“tree shakability”或模块化是一致的。
// This is not nice, as it doesn't get auto-completion when importing
import * as Sentry from '@sentry/browser'

// This is better, but has given me problems on Sentry 5.x
import { captureException } from '@sentry/browser'
  • 调用堆栈调试。 从 Sentry 的实现方式来看可能很明显,但是每个console.log似乎都源自instruments.js:1 ,这在调试过程中没有帮助。 由于console.trace太过分了,我最终在console.log手动编写面包屑以获取有关当前记录的信息。

您最缺少哪些功能?

支持健康

是否有计划在支持它的 Node 版本上使用 AsyncLocalStorage?

所以我们今天发布了6.0.0 ,除了默认发送会话数据之外没有什么大的变化。 抄送@OmgImAlexis
我将此问题的标题更改为 v7,它应该更好地反映这一点。

将框架集成与Sentry.init分开公开会很棒。 这将解决 #3232 ,其中 Vue 被延迟加载,因此不能保证在哨兵初始化时存在。 像Sentry.configureVue(Vue)这样的东西可以在 Vue 加载时调用。

react-router 集成支持在同一个文档中加载和卸载辅助反应应用程序,使用延迟调用,使用它自己的路由器和更具体的路由

此页面是否有帮助?
0 / 5 - 0 等级