Sentry ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄. ΠΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π½ΠΎΠ²ΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ JavaScript SDK ΠΈ Ρ ΠΎΡΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π΅ Π»ΡΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ.
ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ Π²Π°ΡΠΈ ΠΎΡΠ·ΡΠ²Ρ.
_ΠΠ°ΠΊΠΎΠ²Ρ ΡΠ°ΠΌΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ SDK?_
_ΠΠ°ΠΊΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π΅ Ρ
Π²Π°ΡΠ°Π΅Ρ?_
_Π§ΡΠΎ Π±Ρ Π²Ρ Ρ
ΠΎΡΠ΅Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ?_
ΠΡ ΡΠΆΠ΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ ΡΠ΅ΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π½ΠΈΠΆΠ΅:
ΠΠΎΠΌΠΎΠ³ΠΈΡΠ΅ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ, ΠΈ Π΄Π°ΠΉΡΠ΅ Π½Π°ΠΌ Π·Π½Π°ΡΡ Π²Π°ΡΠΈ ΠΌΡΡΠ»ΠΈ! ΠΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠΈΠΌ Π½Π° Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΆΠ΅Π½ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π³ΠΎΠ»ΠΎΡ.
ΠΠ°ΡΠ΅ Π·Π΄ΠΎΡΠΎΠ²ΡΠ΅!
ΠΠ°ΠΌΠΈΠ»Ρ
ΠΠΎΡ ΡΠ°ΠΌΠ°Ρ Π±ΠΎΠ»ΡΡΠ°Ρ ΠΏΡΠ΅ΡΠ΅Π½Π·ΠΈΡ Π²ΡΠ΅Π³Π΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΌΠΎΠΈΡ ΡΠ°ΠΌΡΡ Π±ΠΎΠ»ΡΡΠΈΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π― ΡΠ°ΡΡΠΎ Π΄ΡΠΌΠ°Π» ΠΎ Π»Π΅Π½ΠΈΠ²ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Sentry ΡΠ΅ΡΠ΅Π· 5-10 ΡΠ΅ΠΊΡΠ½Π΄ ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π»ΡΡΡΠΈΠΉ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΎΡΠ΅Π½Ρ ΡΠ°Π΄, ΡΡΠΎ Π²Ρ ΡΠ΅ΡΠ°Π΅ΡΠ΅ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ β€οΈ
ΠΠ»Ρ ΠΌΠ΅Π½Ρ drastically reduce overall bundle size
-ΡΠ΅Π»Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΠΉ Π²Π°ΠΆΠ½ΠΎΠΉ.
ΠΡΠΈΠ²Π΅Ρ,
ΡΠ΅Π·ΠΊΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΎΠ±ΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°
Π‘ΡΠ°Π²Π»Ρ +1 Π½Π° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΡΠΎ-ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ. Π Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»Ρ: Π² ΠΌΠΎΠ΅ΠΌ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Sentry Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 30 ΠΌΡ (Π½Π° Π±ΡΡΡΡΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅), ΡΡΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ Π»ΠΎΠ³Π³Π΅ΡΠ° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ, Π° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ React Native Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΡΠΆΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ Π±Π°Π½Π΄Π»Π΅Ρ (Metro) Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΡΡΡΡΡΠΈ Π΄Π΅ΡΠ΅Π²ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Sentry ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ»ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ _78 ΡΠ°ΠΉΠ»ΠΎΠ²_, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ (Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ%) Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°.
ΠΡΠΈΠ²Π΅Ρ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½ΡΡ ΠΈΠ· React Native:
ΠΡΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΎ Π½Π° iPhone X. ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Sentry ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΊΠΎΠ»ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ 54 ΠΌΡ β ~ 40 ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ², ~ 15 Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° JS. ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ ΡΡΠΎΠΌΡ ~30 ΠΌΡ, Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ _native_ ΡΡΠΎΡΠΎΠ½Ρ, ΠΈ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΡΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈ Π»Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ/Π°Π½Π°Π»ΠΈΠ·Π΅ JS Sentry (ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ) - Ρ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Ρ, 5-15 ΠΌΡ, Π½ΠΎ ΡΠΎΡΠ½ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅ΡΡΠ». ΠΡΠΎΠ³ΠΎ - 90-100ΠΌΡ - ΡΡΠΎ 15% ΠΎΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ!
ΠΡΠ»ΠΈΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ! Π― Ρ ΠΎΡΠ΅Π» Π±Ρ Π²ΠΈΠ΄Π΅ΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π° (ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ) Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ console.log, Π½ΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ Π·Π°Ρ Π²Π°ΡΠ΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ Ρ Π»Π΅Π±Π½ΡΡ ΠΊΡΠΎΡΠ΅ΠΊ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠ°ΠΊ https://github.com/getsentry/sentry/issues/12618 ΠΈ https://github.com/getsentry/sentry-javascript/issues/1883.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ Π»Π΅Π±Π½ΡΠ΅ ΠΊΡΠΎΡΠΊΠΈ Sentry ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ debug ΠΈΠ»ΠΈ loglevel . ΠΡΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ ΡΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°ΠΌΠΈ DIY, Π½ΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΡΠ½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. (ΠΠ»ΠΈ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, Π° Ρ ΠΊΠ°ΠΊ-ΡΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΠ», ΡΠΎ Π±ΡΠ΄Ρ ΠΏΡΠΈΠ·Π½Π°ΡΠ΅Π»Π΅Π½ Π·Π° Π»ΡΠ±ΡΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ). Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
ΠΡΠΈΠ²Π΅Ρ, Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ ΠΏΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ SDK.
ΠΠΌΠ΅ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Π° Sentry.init Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ SDK ΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ SentryOptions, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° DSN ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠ°ΠΉΠ»Ρ JS, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΈ ΡΡΡΠ΄Π½ΠΎ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° js Π² ΠΌΠ΅ΠΆΠ΄ΠΎΠΌΠ΅Π½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠ°Ρ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ Ρ ΡΠ΅ΡΡΡ. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡΠ»Π° Π±Ρ ΠΏΠΎΠ»Π΅Π·Π½Π° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ, ΠΈ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
_SDK Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΡ_
Π― Ρ
ΠΎΡΠ΅Π» Π±Ρ ΠΈΠΌΠ΅ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ capureEvent
Π½Π΅ ΡΠΌΠΎΠ³ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΏΠΎΠΏΡΡΠΊΡ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΠΎΡΠ»Π°ΠΉΠ½-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ).
ΠΡΠ²Π°ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, Π½ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΈΠ·-Π·Π° Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ/ΡΠ°ΠΉΠΌ-Π°ΡΡΠ° (Ρ. Π΅. ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΡΡΠ°ΡΡΠΊΠ°ΠΌ Ρ ΠΏΠ»ΠΎΡ ΠΈΠΌ ΠΏΠΎΠΊΡΡΡΠΈΠ΅ΠΌ ΡΠ΅ΡΠΈ).
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΡΠ»Π°ΠΉΠ½-ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΎΠ½Π»Π°ΠΉΠ½- ΠΈ ΠΎΡΠ»Π°ΠΉΠ½-ΡΠΎΠ±ΡΡΠΈΠΉ, ΡΠ΅Π³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΠΊΡΡΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ.
Π‘Π΅ΡΠ΅Π²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΊΡΡ ββΡΠΈΡΡΠ°ΡΠΈΡ, Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΡΡ Sentry ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΈΡΡΠ΅Π·Π°ΡΡ Π² ΠΏΡΡΡΠΎΡΠ΅.
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ PWA, ΠΈ Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΈ Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΎΠ½ΠΎΠ²ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π² ΡΠ΅ΡΠ²ΠΈΡ-Π²ΠΎΡΠΊΠ΅ΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π½Π΅ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅Π³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π° ΡΠ°ΡΠΎΠ²ΠΎΠ³ΠΎ.
@ΡΠ΄Π΅Π»ΡΠ²Π°Π»Π»Π΅
ΠΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ 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% ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π°ΡΠ΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° (27 ΠΠ ΠΈΠ· 95 ΠΠ). ΠΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° JS Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎ 90 ΠΠ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΎ Π»ΡΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΌΠ΅ΡΡΠ½ΠΎΡΡΠΈ Ρ ΠΏΠ»ΠΎΡ
ΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Sentry SDK ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΌΠΎΠ³ Π±Ρ.
ΠΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ IE11? ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΡΡΠΏΠ½ΡΠ΅ ΡΠ°ΠΉΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Microsoft, ΠΏΡΠ΅ΠΊΡΠ°ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΡΠΎΠ³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΊ ΠΊΠΎΠ½ΡΡ Π³ΠΎΠ΄Π°. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΠΎΠΏΡΠΎΡ Π² ΡΠΎΠΌ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ ΡΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
@kamilogorek Π΅ΡΡΡ ΠΈΠ΄Π΅ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ v6?
Π― ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ @xr0master ΠΈ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ IE ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ IE11 Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ.
ΠΠ°ΠΊΠΎΠ²Ρ ΡΠ°ΠΌΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ SDK?
// 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'
console.log
ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΈΠ· instruments.js:1
, ΡΡΠΎ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ console.trace
β ΡΡΠΎ ΠΈΠ·Π»ΠΈΡΠ΅ΡΡΠ²ΠΎ, Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π²ΡΡΡΠ½ΡΡ ΠΏΠΈΡΡ Β«Ρ
Π»Π΅Π±Π½ΡΠ΅ ΠΊΡΠΎΡΠΊΠΈΒ» Π² ΡΠ²ΠΎΠ΅ΠΌ console.log
ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ.ΠΠ°ΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²Π°ΠΌ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ?
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π·Π΄ΠΎΡΠΎΠ²ΡΡ .
ΠΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ AsyncLocalStorage Π² Π²Π΅ΡΡΠΈΡΡ Node, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ?
ΠΡΠ°ΠΊ, ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ 6.0.0
Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΡΠΎΠΌΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ
ΡΠ΅Π°Π½ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΊΠΎΠΏΠΈΡ @OmgImAlexis
Π― ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΡΡΠΊΠ° Π½Π° v7, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π»ΡΡΡΠ΅ ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΡΡΠΎ.
ΠΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ Π²ΡΡΡΠ°Π²ΠΈΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ Sentry.init
. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ Π°Π΄ΡΠ΅Ρ #3232 , Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Vue Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π»Π΅Π½ΠΈΠ²ΠΎ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΎΠ²ΠΎΠ³ΠΎ. Π§ΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ Sentry.configureVue(Vue)
ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Vue.
ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠ΅Π°Π³ΠΈΡΡΡΡΠΈΠΌ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠΎΠΌ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π²ΡΠ³ΡΡΠ·ΠΊΠΈ Π²ΡΠΎΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π°Π³ΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ° ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΡΡΡΠΎΠ².
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ»Ρ ΠΌΠ΅Π½Ρ
drastically reduce overall bundle size
-ΡΠ΅Π»Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΠΉ Π²Π°ΠΆΠ½ΠΎΠΉ.