Sentry-javascript: [Panggilan untuk Umpan Balik] Roadmap to Sentry JavaScript SDK v7

Dibuat pada 13 Agu 2020  ·  18Komentar  ·  Sumber: getsentry/sentry-javascript

¡Halo teman-teman!

Sentry membantu setiap pengembang mendiagnosis dan memperbaiki kode mereka. Kami berencana untuk mulai mengerjakan versi utama baru dari SDK JavaScript dan kami ingin menjadikannya perangkat lunak terbaik kami hingga saat ini.

Namun, untuk melakukan itu, kami membutuhkan umpan balik dari Anda.

_Apa masalah terbesar saat menggunakan SDK?_
_Fitur apa yang paling Anda lewatkan?_
_Apa yang ingin Anda ubah?_

Kami sudah merencanakan untuk mengatasi beberapa masalah yang tercantum di bawah ini:

  • jatuhkan dukungan untuk IE10 dan versi Node yang tidak digunakan lagi secara resmi
  • secara drastis mengurangi ukuran bundel keseluruhan
  • membuat SDK lebih termodulasi
  • tingkatkan kompatibilitas goyangan pohon
  • mengerjakan ulang integrasi/ekstensi untuk bekerja lebih baik dengan banyak klien

Bantu kami membantu Anda, dan beri tahu kami pendapat Anda! Kami akan memastikan untuk menjawab semua komentar, jadi setiap suara penting.

Bersulang!
kamil

Breaking Discussion

Komentar yang paling membantu

Bagi saya drastically reduce overall bundle size -goal juga yang paling penting.

Semua 18 komentar

Keluhan terbesar saya adalah selalu bahwa perpustakaan pencatatan kesalahan saya adalah salah satu perpustakaan pihak ketiga terbesar saya. Saya sering mempertimbangkan pemuatan lambat Sentry 5-10 detik setelah pemuatan halaman pertama untuk mendapatkan skor kecepatan halaman yang lebih baik, jadi saya sangat senang Anda menangani ini ❤️

Bagi saya drastically reduce overall bundle size -goal juga yang paling penting.

Hai,

secara drastis mengurangi ukuran bundel keseluruhan

Saya memberi ini +1, kalau-kalau ini mengubah apa pun. Dan saya akan menambahkan ini: di aplikasi web saya , inisialisasi Sentry membutuhkan waktu 30 ms (pada komputer yang cepat), yang terlalu banyak untuk pencatat diagnostik, dan di aplikasi React Native, ini jauh lebih buruk, karena bundler-nya (Metro) tidak mampu menggoyang pohon, jadi Sentry mengimpor _78 file_ kekalahan, dan juga berkontribusi secara terukur (beberapa %) untuk waktu startup.

Hai, hanya beberapa data dari React Native:

image

Ini diprofilkan pada iPhone X. Sentry membutuhkan waktu 54 md saat peluncuran - ~40 hanya untuk mengimpor sebagian besar file, ~15 untuk menginisialisasi kode JS. Tambahkan ke ~30ms yang memblokir utas utama untuk menginisialisasi sisi _native_, dan ada beberapa waktu yang tidak terhitung dalam lexing/parsing JS Sentry (yang jumlahnya banyak) - saya menduga 5-15ms, tetapi belum mengukur dengan tepat. Total - 90-100 md - itu adalah 15% dari total waktu untuk meluncurkan aplikasi saya!

Pertanyaan bagus! Saya ingin melihat opsi logging yang lebih fleksibel (atau cara mendokumentasikan) untuk aplikasi produksi di mana Anda tidak ingin mengekspos pengguna ke console.log apa pun, tetapi Anda ingin mereka ditangkap sebagai remah roti. Ini dapat memecahkan masalah seperti https://github.com/getsentry/sentry/issues/12618 dan https://github.com/getsentry/sentry-javascript/issues/1883.

Mungkin remah roti Sentry dapat berintegrasi dengan pustaka logging seperti debug atau loglevel . Ini sepertinya kasus penggunaan umum untuk aplikasi produksi, dan mungkin sudah didukung dengan beberapa pendekatan DIY, tetapi tidak terlalu jelas apakah ini mungkin berdasarkan dokumen saat ini. (Atau jika ya dan entah bagaimana saya melewatkannya, maka saya akan berterima kasih atas tipnya). Terima kasih!

Hai, saya punya rekomendasi tentang inisialisasi SDK.

Alih-alih memanggil Sentry.init dengan opsi, SDK dapat secara otomatis memeriksa SentryOptions seperti variabel global bernama untuk mengambil id DSN dan opsi lainnya.

Kami secara dinamis memuat file JS saat diperlukan dan Sulit untuk melacak peristiwa pemuatan bundel js dalam permintaan lintas domain atau masalah jaringan. Secara otomatis memeriksa variabel ini akan membantu untuk ini dan tidak perlu secara eksklusif memanggil fungsi init.

_SDK gagal mengirim indikasi event_

Saya ingin memiliki semacam indikasi bahwa capureEvent gagal mengirim permintaan - sehingga dapat diantrekan dan dicoba lagi nanti.

Ini akan sangat membantu untuk aplikasi offline-first (aplikasi web progresif).

Ada situasi ketika browser dalam keadaan online, tetapi permintaan jaringan gagal karena koneksi yang tidak stabil/waktu habis (mis. bepergian melalui area dengan jangkauan jaringan yang buruk).

Ada integrasi Offline namun bergantung pada acara Online dan Offline yang tidak cukup untuk menutupi kasus itu.

Kesalahan jaringan dapat menyebabkan aplikasi yang tidak mempertimbangkan situasi seperti itu untuk melemparkan kesalahan yang gagal dicatat oleh Sentry dan hilang begitu saja.

Saya memiliki proyek yang merupakan PWA dan saya tidak mendapatkan acara saat aplikasi offline, dan tidak ada cara untuk melakukan sinkronisasi latar belakang di service worker, karena tidak terdaftar untuk domain sentry ingest.

@edelvalle
Ini seharusnya dimungkinkan dengan Workbox dan plugin Background Sync ~, namun saya belum mengujinya~
Tampaknya berfungsi dengan baik, juga tanggal acara pada saat kesalahan terjadi.

// 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'
)

Hai, senang melihat drastically reduce overall bundle size direncanakan. Kami memiliki proyek gatsby+preact dan penjaga mengambil ~28% dari ukuran bundel utama kami (27kb dari 95kb). Kami mencoba membawa bundel js per halaman kami di bawah 90kb sehingga aplikasi kami dapat berkinerja lebih baik di daerah pedesaan dengan koneksi yang buruk. Ukuran SDK penjaga yang lebih kecil secara drastis akan banyak membantu.

Mengapa tidak menjatuhkan dukungan IE11 juga? Banyak situs besar, termasuk Microsoft, akan mengakhiri dukungan untuk browser ini pada akhir tahun. Tentu pertanyaannya adalah apakah ini benar-benar mempengaruhi ukuran perpustakaan.

@kamilogorek ada ide kapan v6 akan datang?

Saya juga setuju dengan @xr0master dan berpikir dukungan IE harus dihentikan seluruhnya termasuk IE11 di versi baru.

Apa masalah terbesar saat menggunakan SDK?

  • Pengimporan. Tapi saya rasa itu sejalan dengan "kegoyahan pohon", atau modularitas.
// 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'
  • Debug tumpukan panggilan. Mungkin terlihat jelas dari perspektif bagaimana Sentry diimplementasikan, tetapi setiap console.log tampaknya berasal dari instruments.js:1 , yang tidak membantu selama debugging. Karena console.trace berlebihan, saya akhirnya menulis remah roti secara manual di console.log untuk mendapatkan informasi tentang apa yang sedang dicatat.

Fitur apa yang paling Anda lewatkan?

Dukungan untuk kesehatan .

Apakah ada rencana untuk menggunakan AsyncLocalStorage pada versi Node yang mendukungnya?

Jadi kami mengirimkan 6.0.0 hari ini, tanpa perubahan besar selain mengirim data sesi secara default. cc @OmgImAlexis
Saya mengubah judul masalah ini menjadi v7 yang seharusnya mencerminkan hal itu dengan lebih baik.

Akan luar biasa untuk mengekspos integrasi kerangka kerja secara terpisah dari Sentry.init . Ini akan membahas #3232 , di mana Vue dimuat dengan malas, dan dengan demikian tidak dijamin ada pada waktu inisialisasi penjaga. Sesuatu seperti Sentry.configureVue(Vue) yang dapat dipanggil pada waktu buka Vue.

integrasi react-router untuk mendukung pemuatan dan pembongkaran aplikasi reaksi sekunder di dalam dokumen yang sama dengan panggilan malas, menggunakan routernya sendiri dan rute yang lebih spesifik

Apakah halaman ini membantu?
0 / 5 - 0 peringkat