CDN

Sentry supports loading its JavaScript SDK via a CDN. Generally we suggest using our npm package (@sentry/browser) as utilizing a CDN create scenarios where Sentry is unable to load due to networking issues or common extensions like ad blockers. If you must use a CDN, take a look at loading Sentry lazily with our JS loader.

Copied
<script
  src="https://browser.sentry-cdn.com/8.24.0/bundle.min.js"
  integrity="sha384-7KtWflhUrm3yHehS4Ve9sFWf2DzaRFe0WHTTKYRPYuaIacyIttUqDxozcoZur4eP"
  crossorigin="anonymous"
></script>

Performance Bundle

To use Sentry's performance tracing an alternative bundle is needed. This allows us to keep the filesize down for users who only need error monitoring.

Copied
<script
  src="https://browser.sentry-cdn.com/8.24.0/bundle.tracing.min.js"
  integrity="sha384-JJJw4DbjOsDg3bP8VddEg9VZRjwjIVHXUGl7vcAdg8EmxN7gvZkov6/1NuH/4YId"
  crossorigin="anonymous"
></script>

The most important thing to note here is that Sentry.Integrations has been made available, and can be referenced in your call to Sentry.init:

Copied
Sentry.init({
  dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
  // this assumes your build process sets "npm_package_version" in the env
  release: "my-project-name@" + process.env.npm_package_version,
  integrations: [new Sentry.Integrations.BrowserTracing()],

  // We recommend adjusting this value in production, or using tracesSampler
  // for finer control
  tracesSampleRate: 1.0,
});

Available Bundles

A variety of bundles are provided which are optimized for Sentry's various integrations.

FileIntegrity Checksum
browserprofiling.debug.min.jssha384-TUfLPous++FH2QVqSNuYXHLt9kCDrUWYOwQRV72RBzk6L9B4SDdUxc1EegdkHi1s
browserprofiling.jssha384-GT9kzD2XZDKwgcRLRdKw8+OIgD2n9b0McSbHpW071VIqOkVYSqENzsKAyMwWA2dJ
browserprofiling.min.jssha384-uE6YxRSn/bwiYPaf9HB1/3ASAwurdsD5sE0eb2fkM9bYvXLzbBNgrSnfvoqQAC2H
bundle.debug.min.jssha384-CKfJscj59JhneFA4ej1KnPPfvvLQjAjF9KWGdB+66dl+LkPjLBccledq3bt8IZva
bundle.feedback.debug.min.jssha384-3cAKygA7StcTPmpbNiVoY+fUCZ//K1tmvm4Z+Ha8z22KS1+rbXdr9H4C7OFwpzQY
bundle.feedback.jssha384-rJBjNA8FipN7KmfhfKFPNSsjgjD/DLt9LoCPsa1N7vqZNySwiRuysqkk2pDOxJ8D
bundle.feedback.min.jssha384-PUl1CMVjEjIkoI0q7J8VJSysvMxmhtAXlDa3szryxA2joNlgeICOZ4gnVeFI80yA
bundle.jssha384-JOSfVR5KLe0FBlgIVmEZ/5C96sPB+SyZ2MGXNBbu7wGs08r9/JDiD9BYvdgm0YYy
bundle.min.jssha384-7KtWflhUrm3yHehS4Ve9sFWf2DzaRFe0WHTTKYRPYuaIacyIttUqDxozcoZur4eP
bundle.replay.debug.min.jssha384-HxMK4PdMo4/xVDAVZywFkwWDVRE9RzBGV1PaAt5pfDb+PKK+9tIIrVu8TXE1wsjs
bundle.replay.jssha384-ckFTiDA5fhza/xR8t4FWiqa9NjPxKrFKmyVcH98tpbiwnQcZ/2c2x0KnLKuvuZ42
bundle.replay.min.jssha384-hcJkA6udaEjcWRsHYWrFHXrfI90QSz3JTrrHii9qp2wnCdXXbLX+olBVILsTlVqf
bundle.tracing.debug.min.jssha384-faYTz1Lsp5RWbB07Dvq+4Rd0d53zKIJ8qHO63NQJBkZazCiLzd+hd+Q7aa244v9d
bundle.tracing.jssha384-/lxoQOjDofRm8/8zXpHJfQ5+okp1fAjJZmWy1bCtsrytOjqbKCdF0wPWhRIK4gkf
bundle.tracing.min.jssha384-JJJw4DbjOsDg3bP8VddEg9VZRjwjIVHXUGl7vcAdg8EmxN7gvZkov6/1NuH/4YId
bundle.tracing.replay.debug.min.jssha384-2ICw40DwWC3OvKlxCKv3HolEBALefWbkfqO+SUa70bjXPngqm0OrXWIzpjiIGDlU
bundle.tracing.replay.feedback.debug.min.jssha384-X1/IsMwInf0phel16h4N/f19bGTCleIRA4FemHxszk3XvbXA/cDBhtnxPxKZgVIk
bundle.tracing.replay.feedback.jssha384-tFDxX87Zb4rTwWmimzqjOyyZtKc/+4PC811rRvHTF2BKkc6cEj7WYbHUNdjTZ3v9
bundle.tracing.replay.feedback.min.jssha384-0GCkAsgDcjK2qiRpdp8xjGvE2OljdeGBDOilJ2s72zzeUSjiT5pA/WkX0yNv/poA
bundle.tracing.replay.jssha384-c1b1m3T24FdPd7GSp8JmShbnQRZZQIIDM8Eg+Jeud9hlwKj64h2ivTuVmIZhsx/X
bundle.tracing.replay.min.jssha384-eEn/WSvcP5C2h5g0AGe5LCsheNNlNkn/iV8y5zOylmPoOfSyvZ23HBDnOhoB0sdL
captureconsole.debug.min.jssha384-J4sG3YL7oHEN8yUvrISUoKI6RZ1hSmpjuo/5/fTgjesMFfOSvOnARJcBHTWPzeFS
captureconsole.jssha384-jP7SjF11v34Ee+SRL8UweZaTeaCfsJKOLNXtkPB3RbMlWj3dRumCBSn2tijQyL4x
captureconsole.min.jssha384-4ytgn9U5jlII3rnKqQ2zJClGV0p5IrUFjXoT2PD+4Vxw9WJA6uDQuFUE7/nwnzpk
contextlines.debug.min.jssha384-t4TJRLovdyoO9VA73mCRmowleVS2Fc+Jil8955Wy6K5NgFas+cRQVmrnsLEYHg+k
contextlines.jssha384-M3TAAek5nCnnDkvgk34owt/5xbXAD1ONuPQRYpd+6QIDPTUIr4RL/B7DacX2p//G
contextlines.min.jssha384-oXfyKTI/CEyIK54FrOwlY6Qe/8R/rY+YTp1/rTbksffoxG+SCX6un348dlQp+Jw9
debug.debug.min.jssha384-VaG02FDHTNfo3ev1CA2xfC0+HO6+T6grwbWtgZb7QSC3Iw7Hd9tokp1YY/x7o0H4
debug.jssha384-Rx+OvfKCQicrpxXoQhxzcD1su/3DLnPWSgDbrupfQxc59+K9r7m/DNyk78hMFCcY
debug.min.jssha384-suNrCeMTanaOdmvpSYB0VAgQXeXNXHHBHPkMIKdrR+b5e2/0LHPrdvsMPElCd+El
dedupe.debug.min.jssha384-UIq5WmxtkgcYlmGgbcu6eb8cjqayCahxqcDUdhpIu1yE4tfej1e0ehtliAPRYqEM
dedupe.jssha384-hP7ubDu5P3IdhyWwvlKVvSb6/+y/OIy9G63mBIAC31Mdpij8h6pQ8tsZUgO/tZUV
dedupe.min.jssha384-LSKW0//bDBMhg+S7dCCRg0yC2VfeP4sOIgajkxXUOvswrZC9xlv7ocFFOze4mi8s
extraerrordata.debug.min.jssha384-B5xs9uiEMX/fJtvrhQbLS98IDyc7yBHIkRvw+Nltig5kWhFhkxSHbERrDFyBYqTi
extraerrordata.jssha384-Y8/SfInouv22LLAnvEw30Ov9ydDcqDs8hJ4T0VpmPyJKj4Xw33nbqKSLZ7rvznyd
extraerrordata.min.jssha384-SQHNqOvHjY88Viee1ZI4+i47aWxrsNPyFIP4Lm32whMYVVzog2jUgohHe+n8NN1A
feedback-modal.debug.min.jssha384-t4Am4JDI4h0kTRj07TTSh8wrVKnXY79RY19755WokKqeSdFiCfhaA52bCYpPm80I
feedback-modal.jssha384-4uYYn8br8JJXUtSEmO5ZPOCOJsNjEy/MYDL21QOWPXcMbka5skjcycT0qEsOyxnn
feedback-modal.min.jssha384-YLfJNNYpsEL74Mi+vHihMaKob8vnwRpy31sfIYbvjbkkyqXT6mTXYELfq0Uu9WfA
feedback-screenshot.debug.min.jssha384-VfnfnnjYWFElHRaass2N6LPS5SHdUnvRAuEnp4JT297uutYXs/7F+pfLRVEEM9Z6
feedback-screenshot.jssha384-SXFjcUqmvcbiaTuLaczTs6Z0+QO10pIhYRUREw3Z71q8kWBuhFIXGeOPJPtCycJ6
feedback-screenshot.min.jssha384-hw0cQwmc21grbO40bkiA6KZKNMUIFfdi4wkhX9yaTC45DlrJQyeL+xeS+sl7Ep7R
feedback.debug.min.jssha384-7kknhcpA4Mk3fyeEoAxiYSjHHIyXFAisx805uZC7htvWSs7fFY6pGZBva0vgGN6r
feedback.jssha384-S77CQCB0kgszkKv78oDt+D/E/r+zwdboMJX5EXVRHzABCJ/KIXHimiaKPJ3ng7Ia
feedback.min.jssha384-CJbhBQgYVsNWUJUP+ghML0/+btEgH3lpypTNNoi27qGxcUlM+nB4AJvE4ONbH5TB
httpclient.debug.min.jssha384-xGN/WXgplQ1hr/4OCXz9va55aoJ9XlCwD9UFj0+v/jTKtqQ3H5oBssaIhRH66NNy
httpclient.jssha384-tVg/g5q6g/yRiQSErdO3F1+LTYZUaYAnsFO6O9Qfmn4DuGTZOHD0Cjs+2lmLPDGk
httpclient.min.jssha384-kJ5a5V6pxQiqp3ndD453TnifwRykUObAjwb4lol/YAPIVCUvoNFvutB6Egu/X+ZD
replay-canvas.debug.min.jssha384-EXU4aZZa9AVYg5R0ra3htMOXMw8SC5reQXvO6ImlnnePZsIjjF/7kNnYQaYB4cA8
replay-canvas.jssha384-azZS68ozqkCSOFj2qhXG+WVAstR9+xRoemRGDU+M9+wPM8jK4mHdJ7Gid19QiKRP
replay-canvas.min.jssha384-gSFCG8IdZobb6PWs7SwuaES/R5PPt+gw4y6N/Kkwlic+1Hzf21EUm5Dg/WbYMxTE
reportingobserver.debug.min.jssha384-Ht5gjKOe6LC5T3me4Z4+IqwVyGAZQdTxHgLXToWHd7WSPIuDAw9hVPLKYvD3OGMf
reportingobserver.jssha384-/kd34ZIpA02A6GFgqfIfoBt25bmxMIb3SoupDbByc+dcvWvLMaRtsab7PjbgSbU6
reportingobserver.min.jssha384-ougIQfYzNROAzzLgI78hhYXSZGdPu0/y7mQcE+mb/mLjIWFnP6g984hyK44bbal3
rewriteframes.debug.min.jssha384-InSqT4Wpb9oTnC5TH+iZLmKqqBIO8O02B4Oh9zakquT40TYle4r/dG8pUiy8NeDO
rewriteframes.jssha384-6520WZbuILRpWh0juvnUknaSjPXKM2Kq4gkajceiA3vCHBo4vE/94pyR2EXJG2D+
rewriteframes.min.jssha384-XjG1/Z/D35Re0eOor97i/Y6urMz5CAoEVPfJHo8q3QXueY1sTnX4ac3M263jZRte
sessiontiming.debug.min.jssha384-ZMK3yCUXrlhX1gcpJXPsorVPMdnofuPCrCh1FZdL616G8J7b6d6O7r9DwvdgE/1c
sessiontiming.jssha384-ojc0GAWD/wTcCqwnndOT/ZHkBYBQ7nidauyXXSCaQl2emSaX8xOIYlg/UnWGP55d
sessiontiming.min.jssha384-JK5DgGVAFhJGnmMPYOHQHO53QtE4YjlzZzYiz1wsyrlL/X1C8VGmJF5QXgOKQsGQ

Additional Configuration

Using defer

If you use the defer script attribute, we strongly recommend that you place the script tag for the browser SDK first and mark all of your other scripts with defer (but not async). This will guarantee that that the Sentry SDK is executed before any of the others.

Without doing this you will find that it's possible for errors to occur before Sentry is loaded, which means you'll be flying blind to those issues.

Content Security Policy

If you have a Content Security Policy (CSP) set up on your site, you will need to add the script-src of wherever you're loading the SDK from, and the origin of your DSN. For example:

  • script-src: https://browser.sentry-cdn.com
  • connect-src: *.sentry.io