@danieljvdm/dev-kit 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/README.md +6 -6
  2. package/package.json +1 -1
  3. package/skill-sources.jsonc +6 -29
  4. package/skill-sources.lock.json +23 -109
  5. package/skills/animate/LICENSE +21 -0
  6. package/skills/animate/NOTICE +10 -0
  7. package/skills/animate/SKILL.md +34 -0
  8. package/skills/animate/references/gestures.md +27 -0
  9. package/skills/animate/references/glossary.md +136 -0
  10. package/skills/animate/references/implementation.md +22 -0
  11. package/skills/animate/references/opportunities.md +18 -0
  12. package/skills/animate/references/principles.md +48 -0
  13. package/skills/animate/references/review.md +19 -0
  14. package/skills/cloudflare-workers/LICENSE +202 -0
  15. package/skills/cloudflare-workers/NOTICE +9 -0
  16. package/skills/cloudflare-workers/SKILL.md +26 -0
  17. package/skills/cloudflare-workers/references/durable-objects.md +68 -0
  18. package/skills/cloudflare-workers/references/sandbox.md +48 -0
  19. package/skills/cloudflare-workers/references/workers.md +63 -0
  20. package/skills/cloudflare-workers/references/wrangler.md +56 -0
  21. package/skills/design-ui/LICENSE +21 -0
  22. package/skills/design-ui/NOTICE +8 -0
  23. package/skills/design-ui/SKILL.md +29 -0
  24. package/skills/design-ui/references/appearance.md +22 -0
  25. package/skills/design-ui/references/components.md +33 -0
  26. package/skills/design-ui/references/exploration.md +50 -0
  27. package/skills/design-ui/references/libraries.md +39 -0
  28. package/skills/design-ui/references/themes.md +23 -0
  29. package/skills/dev-kit/SKILL.md +19 -38
  30. package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
  31. package/skills/dev-kit/references/skills.md +2 -2
  32. package/skills/effect-development/SKILL.md +27 -0
  33. package/skills/effect-development/agents/openai.yaml +4 -0
  34. package/skills/effect-development/references/api/index.md +32 -0
  35. package/skills/effect-development/references/api/schema-codecs.md +15 -0
  36. package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
  37. package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
  38. package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
  39. package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
  40. package/skills/effect-development/references/atom/index.md +40 -0
  41. package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
  42. package/skills/effect-development/references/cli/index.md +39 -0
  43. package/skills/effect-development/references/setup.md +15 -0
  44. package/skills/open-pull-request/SKILL.md +11 -115
  45. package/skills/open-pull-request/agents/openai.yaml +3 -3
  46. package/skills/open-pull-request/references/evidence.md +22 -0
  47. package/skills/open-pull-request/references/explanation.md +21 -0
  48. package/skills/open-pull-request/references/publication.md +21 -0
  49. package/skills/sentry/LICENSE +202 -0
  50. package/skills/sentry/LICENSE-UPSTREAM +21 -0
  51. package/skills/sentry/NOTICE +14 -0
  52. package/skills/sentry/SKILL.md +33 -0
  53. package/skills/sentry/references/alert-payloads.md +105 -0
  54. package/skills/sentry/references/alerts.md +17 -0
  55. package/skills/sentry/references/artifacts.md +25 -0
  56. package/skills/sentry/references/auth-token.md +65 -0
  57. package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
  58. package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
  59. package/skills/sentry/references/concepts/crons.md +50 -0
  60. package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
  61. package/skills/sentry/references/concepts/errors.md +40 -0
  62. package/skills/sentry/references/concepts/logging.md +85 -0
  63. package/skills/sentry/references/concepts/metrics.md +49 -0
  64. package/skills/sentry/references/concepts/monitors.md +78 -0
  65. package/skills/sentry/references/concepts/profiling.md +38 -0
  66. package/skills/sentry/references/concepts/reduce-volume.md +49 -0
  67. package/skills/sentry/references/concepts/releases.md +43 -0
  68. package/skills/sentry/references/concepts/session-replay.md +35 -0
  69. package/skills/sentry/references/concepts/tracing.md +54 -0
  70. package/skills/sentry/references/concepts/user-feedback.md +36 -0
  71. package/skills/sentry/references/debug-artifacts/android.md +68 -0
  72. package/skills/sentry/references/debug-artifacts/apple.md +96 -0
  73. package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
  74. package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
  75. package/skills/sentry/references/debug-artifacts/index.md +75 -0
  76. package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
  77. package/skills/sentry/references/debug-artifacts/matching.md +73 -0
  78. package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
  79. package/skills/sentry/references/first-error-setup.md +25 -0
  80. package/skills/sentry/references/instrumentation.md +30 -0
  81. package/skills/sentry/references/issues.md +32 -0
  82. package/skills/sentry/references/new-project.md +17 -0
  83. package/skills/sentry/references/otel-exporter.md +30 -0
  84. package/skills/sentry/references/release-workflow.md +31 -0
  85. package/skills/sentry/references/releases/ci-pipeline.md +214 -0
  86. package/skills/sentry/references/releases/index.md +93 -0
  87. package/skills/sentry/references/releases/suspect-commits.md +155 -0
  88. package/skills/sentry/references/releases/tagging.md +131 -0
  89. package/skills/sentry/references/releases/troubleshooting.md +67 -0
  90. package/skills/sentry/references/sdks/android/crons.md +305 -0
  91. package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
  92. package/skills/sentry/references/sdks/android/index.md +748 -0
  93. package/skills/sentry/references/sdks/android/integrations.md +48 -0
  94. package/skills/sentry/references/sdks/android/logging.md +374 -0
  95. package/skills/sentry/references/sdks/android/metrics.md +288 -0
  96. package/skills/sentry/references/sdks/android/profiling.md +397 -0
  97. package/skills/sentry/references/sdks/android/session-replay.md +406 -0
  98. package/skills/sentry/references/sdks/android/tracing.md +861 -0
  99. package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
  100. package/skills/sentry/references/sdks/browser/index.md +714 -0
  101. package/skills/sentry/references/sdks/browser/logging.md +315 -0
  102. package/skills/sentry/references/sdks/browser/profiling.md +236 -0
  103. package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
  104. package/skills/sentry/references/sdks/browser/tracing.md +561 -0
  105. package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
  106. package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
  107. package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
  108. package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
  109. package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
  110. package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
  111. package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
  112. package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
  113. package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
  114. package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
  115. package/skills/sentry/references/sdks/cocoa/index.md +497 -0
  116. package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
  117. package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
  118. package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
  119. package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
  120. package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
  121. package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
  122. package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
  123. package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
  124. package/skills/sentry/references/sdks/dotnet/index.md +614 -0
  125. package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
  126. package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
  127. package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
  128. package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
  129. package/skills/sentry/references/sdks/elixir/crons.md +371 -0
  130. package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
  131. package/skills/sentry/references/sdks/elixir/index.md +383 -0
  132. package/skills/sentry/references/sdks/elixir/logging.md +239 -0
  133. package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
  134. package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
  135. package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
  136. package/skills/sentry/references/sdks/flutter/index.md +728 -0
  137. package/skills/sentry/references/sdks/flutter/logging.md +387 -0
  138. package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
  139. package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
  140. package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
  141. package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
  142. package/skills/sentry/references/sdks/go/crons.md +270 -0
  143. package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
  144. package/skills/sentry/references/sdks/go/index.md +324 -0
  145. package/skills/sentry/references/sdks/go/logging.md +354 -0
  146. package/skills/sentry/references/sdks/go/metrics.md +273 -0
  147. package/skills/sentry/references/sdks/go/profiling.md +46 -0
  148. package/skills/sentry/references/sdks/go/tracing.md +366 -0
  149. package/skills/sentry/references/sdks/index.md +41 -0
  150. package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
  151. package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
  152. package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
  153. package/skills/sentry/references/sdks/nestjs/index.md +699 -0
  154. package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
  155. package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
  156. package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
  157. package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
  158. package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
  159. package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
  160. package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
  161. package/skills/sentry/references/sdks/nextjs/index.md +491 -0
  162. package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
  163. package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
  164. package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
  165. package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
  166. package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
  167. package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
  168. package/skills/sentry/references/sdks/node/crons.md +432 -0
  169. package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
  170. package/skills/sentry/references/sdks/node/index.md +942 -0
  171. package/skills/sentry/references/sdks/node/logging.md +380 -0
  172. package/skills/sentry/references/sdks/node/metrics.md +278 -0
  173. package/skills/sentry/references/sdks/node/profiling.md +373 -0
  174. package/skills/sentry/references/sdks/node/tracing.md +878 -0
  175. package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
  176. package/skills/sentry/references/sdks/php/crons.md +265 -0
  177. package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
  178. package/skills/sentry/references/sdks/php/index.md +362 -0
  179. package/skills/sentry/references/sdks/php/laravel.md +542 -0
  180. package/skills/sentry/references/sdks/php/logging.md +242 -0
  181. package/skills/sentry/references/sdks/php/metrics.md +193 -0
  182. package/skills/sentry/references/sdks/php/profiling.md +115 -0
  183. package/skills/sentry/references/sdks/php/symfony.md +552 -0
  184. package/skills/sentry/references/sdks/php/tracing.md +516 -0
  185. package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
  186. package/skills/sentry/references/sdks/python/crons.md +218 -0
  187. package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
  188. package/skills/sentry/references/sdks/python/index.md +361 -0
  189. package/skills/sentry/references/sdks/python/logging.md +234 -0
  190. package/skills/sentry/references/sdks/python/metrics.md +154 -0
  191. package/skills/sentry/references/sdks/python/profiling.md +120 -0
  192. package/skills/sentry/references/sdks/python/tracing.md +364 -0
  193. package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
  194. package/skills/sentry/references/sdks/react/index.md +492 -0
  195. package/skills/sentry/references/sdks/react/logging.md +364 -0
  196. package/skills/sentry/references/sdks/react/profiling.md +322 -0
  197. package/skills/sentry/references/sdks/react/react-features.md +1272 -0
  198. package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
  199. package/skills/sentry/references/sdks/react/tracing.md +1415 -0
  200. package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
  201. package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
  202. package/skills/sentry/references/sdks/react-native/index.md +1030 -0
  203. package/skills/sentry/references/sdks/react-native/logging.md +444 -0
  204. package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
  205. package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
  206. package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
  207. package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
  208. package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
  209. package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
  210. package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
  211. package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
  212. package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
  213. package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
  214. package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
  215. package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
  216. package/skills/sentry/references/sdks/ruby/crons.md +184 -0
  217. package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
  218. package/skills/sentry/references/sdks/ruby/index.md +297 -0
  219. package/skills/sentry/references/sdks/ruby/logging.md +168 -0
  220. package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
  221. package/skills/sentry/references/sdks/ruby/migration.md +321 -0
  222. package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
  223. package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
  224. package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
  225. package/skills/sentry/references/sdks/svelte/index.md +467 -0
  226. package/skills/sentry/references/sdks/svelte/logging.md +344 -0
  227. package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
  228. package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
  229. package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
  230. package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
  231. package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
  232. package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
  233. package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
  234. package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
  235. package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
  236. package/skills/sentry/references/search-query-language.md +226 -0
  237. package/skills/sentry/references/semantics/angular.md +7 -0
  238. package/skills/sentry/references/semantics/app.md +28 -0
  239. package/skills/sentry/references/semantics/art.md +17 -0
  240. package/skills/sentry/references/semantics/aws.md +43 -0
  241. package/skills/sentry/references/semantics/browser.md +34 -0
  242. package/skills/sentry/references/semantics/cache.md +12 -0
  243. package/skills/sentry/references/semantics/client.md +8 -0
  244. package/skills/sentry/references/semantics/cloud.md +12 -0
  245. package/skills/sentry/references/semantics/cloudflare.md +23 -0
  246. package/skills/sentry/references/semantics/code.md +11 -0
  247. package/skills/sentry/references/semantics/culture.md +11 -0
  248. package/skills/sentry/references/semantics/db.md +21 -0
  249. package/skills/sentry/references/semantics/device.md +43 -0
  250. package/skills/sentry/references/semantics/error.md +7 -0
  251. package/skills/sentry/references/semantics/event.md +8 -0
  252. package/skills/sentry/references/semantics/exception.md +10 -0
  253. package/skills/sentry/references/semantics/faas.md +19 -0
  254. package/skills/sentry/references/semantics/file.md +8 -0
  255. package/skills/sentry/references/semantics/flag.md +7 -0
  256. package/skills/sentry/references/semantics/gcp.md +16 -0
  257. package/skills/sentry/references/semantics/gen_ai.md +53 -0
  258. package/skills/sentry/references/semantics/general.md +11 -0
  259. package/skills/sentry/references/semantics/graphql.md +9 -0
  260. package/skills/sentry/references/semantics/grpc.md +19 -0
  261. package/skills/sentry/references/semantics/http.md +34 -0
  262. package/skills/sentry/references/semantics/index.md +63 -0
  263. package/skills/sentry/references/semantics/jsonrpc.md +8 -0
  264. package/skills/sentry/references/semantics/jvm.md +12 -0
  265. package/skills/sentry/references/semantics/koa.md +7 -0
  266. package/skills/sentry/references/semantics/logger.md +7 -0
  267. package/skills/sentry/references/semantics/mcp.md +37 -0
  268. package/skills/sentry/references/semantics/mdc.md +7 -0
  269. package/skills/sentry/references/semantics/messaging.md +23 -0
  270. package/skills/sentry/references/semantics/middleware.md +7 -0
  271. package/skills/sentry/references/semantics/navigation.md +9 -0
  272. package/skills/sentry/references/semantics/nel.md +11 -0
  273. package/skills/sentry/references/semantics/network.md +17 -0
  274. package/skills/sentry/references/semantics/os.md +15 -0
  275. package/skills/sentry/references/semantics/otel.md +10 -0
  276. package/skills/sentry/references/semantics/params.md +7 -0
  277. package/skills/sentry/references/semantics/process.md +14 -0
  278. package/skills/sentry/references/semantics/react.md +7 -0
  279. package/skills/sentry/references/semantics/remix.md +7 -0
  280. package/skills/sentry/references/semantics/resource.md +7 -0
  281. package/skills/sentry/references/semantics/rpc.md +10 -0
  282. package/skills/sentry/references/semantics/score.md +10 -0
  283. package/skills/sentry/references/semantics/sentry.md +69 -0
  284. package/skills/sentry/references/semantics/server.md +8 -0
  285. package/skills/sentry/references/semantics/service.md +8 -0
  286. package/skills/sentry/references/semantics/session.md +7 -0
  287. package/skills/sentry/references/semantics/state.md +7 -0
  288. package/skills/sentry/references/semantics/thread.md +8 -0
  289. package/skills/sentry/references/semantics/timber.md +7 -0
  290. package/skills/sentry/references/semantics/trpc.md +8 -0
  291. package/skills/sentry/references/semantics/ui.md +18 -0
  292. package/skills/sentry/references/semantics/url.md +15 -0
  293. package/skills/sentry/references/semantics/user.md +17 -0
  294. package/skills/sentry/references/semantics/user_agent.md +7 -0
  295. package/skills/sentry/references/semantics/vercel.md +42 -0
  296. package/skills/sentry/references/setup-verification.md +39 -0
  297. package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
  298. package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
  299. package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
  300. package/skills/sentry/references/snapshots/index.md +19 -0
  301. package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
  302. package/skills/sentry/references/snapshots/snapshots.md +123 -0
  303. package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
  304. package/skills/testing/LICENSE +21 -0
  305. package/skills/testing/NOTICE +7 -0
  306. package/skills/testing/SKILL.md +13 -19
  307. package/skills/testing/agents/openai.yaml +1 -2
  308. package/skills/testing/references/selection.md +23 -0
  309. package/skills/testing/references/tdd.md +19 -0
  310. package/skills/testing/references/test-design.md +17 -0
  311. package/src/catalog.ts +1 -7
  312. package/skills/build-effect-apis/SKILL.md +0 -81
  313. package/skills/build-effect-apis/agents/openai.yaml +0 -4
  314. package/skills/build-effect-clis/SKILL.md +0 -92
  315. package/skills/build-effect-clis/agents/openai.yaml +0 -4
  316. package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
  317. package/skills/effect-atom-state/SKILL.md +0 -97
  318. package/skills/effect-atom-state/agents/openai.yaml +0 -4
  319. package/skills/effect-ts/SKILL.md +0 -35
  320. package/skills/effect-ts/agents/openai.yaml +0 -4
  321. /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
  322. /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
  323. /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
  324. /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
  325. /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
  326. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
  327. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
  328. /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
  329. /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
  330. /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
@@ -0,0 +1,586 @@
1
+ # Session Replay — Sentry Browser SDK
2
+
3
+ > Minimum SDK: `@sentry/browser` ≥7.27.0\
4
+ > `replayCanvasIntegration` available since SDK ≥7.50.0\
5
+ > `beforeAddRecordingEvent` available since SDK ≥7.53.0\
6
+ > `beforeErrorSampling` available since SDK ≥7.56.0\
7
+ > Node 12+ required; browsers newer than IE11
8
+
9
+ ---
10
+
11
+ ## Basic Setup
12
+
13
+ ```javascript
14
+ import * as Sentry from "@sentry/browser";
15
+
16
+ Sentry.init({
17
+ dsn: "___PUBLIC_DSN___",
18
+ replaysSessionSampleRate: 0.1, // 10% of all sessions recorded in full
19
+ replaysOnErrorSampleRate: 1.0, // 100% of sessions with errors buffered and sent
20
+ integrations: [Sentry.replayIntegration()],
21
+ });
22
+ ```
23
+
24
+ ---
25
+
26
+ ## Sampling Rates
27
+
28
+ ### `replaysSessionSampleRate` vs. `replaysOnErrorSampleRate`
29
+
30
+ | Option | Default | Behavior |
31
+ | -------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
32
+ | `replaysSessionSampleRate` | `0` | Percentage of sessions to record **in full** from start to end. `1.0` = 100%, `0` = none. |
33
+ | `replaysOnErrorSampleRate` | `0` | Percentage of sessions to record **when an error occurs**. Buffers up to 60 seconds before the error, then continues until the session ends. |
34
+
35
+ ### How Sampling Works
36
+
37
+ 1. `replaysSessionSampleRate` is checked first at session start.
38
+ - If sampled → full session recording starts immediately, sent to Sentry in real-time
39
+ chunks (**Session mode**).
40
+ - If not sampled → recording is buffered in memory (last 60 seconds only) (**Buffer
41
+ mode**).
42
+ 2. If an error occurs in a buffered session:
43
+ - `replaysOnErrorSampleRate` is checked.
44
+ - If sampled → 60-second buffer + rest of session is sent to Sentry.
45
+ - If not sampled → buffer is discarded.
46
+
47
+ **When data leaves the browser:**
48
+
49
+ | Scenario | Data Sent |
50
+ | -------------------------------------- | ------------------------------------------- |
51
+ | Selected for session sampling | Immediately (real-time chunks) |
52
+ | Not selected, no error | Never (buffer discarded) |
53
+ | Not selected, error occurs and sampled | After error (60s buffer + everything after) |
54
+
55
+ **Recommended rates by traffic volume:**
56
+
57
+ | Traffic | `replaysSessionSampleRate` | `replaysOnErrorSampleRate` |
58
+ | --------------------- | -------------------------- | -------------------------- |
59
+ | High (100k+/day) | `0.01` (1%) | `1.0` |
60
+ | Medium (10k–100k/day) | `0.1` (10%) | `1.0` |
61
+ | Low (<10k/day) | `0.25` (25%) | `1.0` |
62
+
63
+ > **Tip:** Keep `replaysOnErrorSampleRate` at `1.0` — error sessions provide the most
64
+ > debugging value.\
65
+ > **Dev tip:** Set `replaysSessionSampleRate: 1.0` during development to capture every
66
+ > session.
67
+
68
+ ---
69
+
70
+ ## `replayIntegration()` — Configuration Reference
71
+
72
+ ### General Options
73
+
74
+ | Option | Type | Default | Description |
75
+ | -------------------------- | -------------------------- | --------------------- | -------------------------------------------------------------------------------------------------------- |
76
+ | `stickySession` | `boolean` | `true` | Track the user across page refreshes. Closing a tab ends the session; multiple tabs = multiple sessions. |
77
+ | `mutationLimit` | `number` | `10000` | Upper bound of DOM mutations before replay stops recording (protects performance). |
78
+ | `mutationBreadcrumbLimit` | `number` | `750` | Threshold at which a breadcrumb warning is emitted for large mutations. |
79
+ | `minReplayDuration` | `number` | `5000` (ms) | Minimum replay length before sending. Max configurable: 15000ms. |
80
+ | `maxReplayDuration` | `number` | `3600000` (ms = 1 hr) | Maximum replay length. Max value: 3600000ms. |
81
+ | `workerUrl` | `string` | `undefined` | URL for a self-hosted compression worker (avoids CSP issues, reduces bundle size). |
82
+ | `beforeAddRecordingEvent` | `(event) => event \| null` | identity fn | Filter or modify console log and network recording events before they are sent. Return `null` to drop. |
83
+ | `beforeErrorSampling` | `(event) => boolean` | `() => true` | In buffer mode only — return `false` to skip error-based sampling for a specific error event. |
84
+ | `slowClickIgnoreSelectors` | `string[]` | `[]` | CSS selectors for elements where slow/rage click detection should be disabled. |
85
+
86
+ ### Privacy Options
87
+
88
+ | Option | Type | Default | Description |
89
+ | --------------- | -------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------- |
90
+ | `maskAllText` | `boolean` | `true` | Mask all text content (replaced with `*` characters). |
91
+ | `maskAllInputs` | `boolean` | `true` | Mask all `<input>` element values. |
92
+ | `blockAllMedia` | `boolean` | `true` | Block all media: `img`, `svg`, `video`, `object`, `picture`, `embed`, `map`, `audio`. |
93
+ | `mask` | `string[]` | `[".sentry-mask", "[data-sentry-mask]"]` | Additional CSS selectors to mask. Appended to defaults. |
94
+ | `unmask` | `string[]` | `[]` | CSS selectors to unmask (overrides `maskAllText`). |
95
+ | `block` | `string[]` | `[".sentry-block", "[data-sentry-block]"]` | Additional CSS selectors to block (replaced with same-size empty placeholder). |
96
+ | `unblock` | `string[]` | `[]` | CSS selectors to unblock (overrides `blockAllMedia`). |
97
+ | `ignore` | `string[]` | `[".sentry-ignore", "[data-sentry-ignore]"]` | Input fields whose events are ignored (no keystroke recording). |
98
+ | `maskFn` | `(text: string) => string` | `(s) => "*".repeat(s.length)` | Custom text masking function. |
99
+
100
+ ### Network Options
101
+
102
+ | Option | Type | Default | Description |
103
+ | ------------------------ | ---------------------- | ------- | ---------------------------------------------------------------------------------------------------- |
104
+ | `networkDetailAllowUrls` | `(string \| RegExp)[]` | `[]` | URLs/patterns for which request/response details are captured (opt-in, SDK ≥7.50.0). |
105
+ | `networkDetailDenyUrls` | `(string \| RegExp)[]` | `[]` | URLs/patterns to exclude from network capture. Takes precedence over `networkDetailAllowUrls`. |
106
+ | `networkCaptureBodies` | `boolean` | `true` | Whether to capture request/response bodies for allowed URLs. |
107
+ | `networkRequestHeaders` | `string[]` | `[]` | Additional request headers to capture. Default captured: `Content-Type`, `Content-Length`, `Accept`. |
108
+ | `networkResponseHeaders` | `string[]` | `[]` | Additional response headers to capture. |
109
+
110
+ ---
111
+
112
+ ## Privacy & Masking
113
+
114
+ ### Three Privacy Methods
115
+
116
+ | Method | Effect | Default Trigger |
117
+ | ---------- | -------------------------------------------------------- | ---------------------------------------- |
118
+ | **Mask** | Replaces text with `*` characters (preserving length) | `.sentry-mask`, `[data-sentry-mask]` |
119
+ | **Block** | Replaces entire element with same-size empty placeholder | `.sentry-block`, `[data-sentry-block]` |
120
+ | **Ignore** | Stops recording input events on matched fields | `.sentry-ignore`, `[data-sentry-ignore]` |
121
+
122
+ ### HTML Attribute Usage
123
+
124
+ ```html
125
+ <!-- Mask text content -->
126
+ <p class="sentry-mask">Sensitive user data</p>
127
+ <p data-sentry-mask>Sensitive user data</p>
128
+
129
+ <!-- Block entire element (credit card form, PII section) -->
130
+ <div class="sentry-block">
131
+ <input type="text" placeholder="Credit card number" />
132
+ </div>
133
+ <div data-sentry-block>Blocked content</div>
134
+
135
+ <!-- Ignore input events (no keystrokes recorded) -->
136
+ <input class="sentry-ignore" type="password" />
137
+ <input data-sentry-ignore type="text" placeholder="SSN" />
138
+
139
+ <!-- Unmask when maskAllText=true -->
140
+ <p class="sentry-unmask">Safe to show in replay</p>
141
+ <p data-sentry-unmask>Safe to show</p>
142
+
143
+ <!-- Unblock media when blockAllMedia=true -->
144
+ <img class="sentry-unblock" src="product-image.png" alt="Product" />
145
+ <img data-sentry-unblock src="logo.svg" alt="Logo" />
146
+ ```
147
+
148
+ ### Configuration Examples
149
+
150
+ **Disable all default masking (show everything):**
151
+
152
+ ```javascript
153
+ Sentry.replayIntegration({
154
+ maskAllText: false,
155
+ blockAllMedia: false,
156
+ });
157
+ ```
158
+
159
+ **Mask and block specific selectors:**
160
+
161
+ ```javascript
162
+ Sentry.replayIntegration({
163
+ mask: [".user-pii", "[data-sensitive]", "#account-details"],
164
+ unmask: [".replay-safe"],
165
+ block: ["#payment-form", ".credit-card-widget"],
166
+ unblock: [".product-image"],
167
+ ignore: [".password-field", "[type='password']"],
168
+ });
169
+ ```
170
+
171
+ **Custom masking function:**
172
+
173
+ ```javascript
174
+ Sentry.replayIntegration({
175
+ maskFn: (text) => text.replace(/\S/g, "X"), // Replace non-whitespace with X
176
+ });
177
+ ```
178
+
179
+ **Custom recording event filter:**
180
+
181
+ ```javascript
182
+ Sentry.replayIntegration({
183
+ beforeAddRecordingEvent: (event) => {
184
+ // Drop any event tagged "foo"
185
+ if (event.data.tag === "foo") return null;
186
+
187
+ // Only capture network events for 500 errors
188
+ if (
189
+ event.data.tag === "performanceSpan" &&
190
+ (event.data.payload.op === "resource.fetch" || event.data.payload.op === "resource.xhr") &&
191
+ event.data.payload.data.statusCode !== 500
192
+ ) {
193
+ return null;
194
+ }
195
+
196
+ return event;
197
+ },
198
+ });
199
+ ```
200
+
201
+ ---
202
+
203
+ ## Network Capture
204
+
205
+ By default, Session Replay captures basic information about all outgoing fetch and XHR
206
+ requests (URL, size, method, status code).
207
+
208
+ Request/response **bodies and additional headers require explicit opt-in** (SDK
209
+ ≥7.50.0):
210
+
211
+ ```javascript
212
+ Sentry.replayIntegration({
213
+ networkDetailAllowUrls: [window.location.origin],
214
+ });
215
+ ```
216
+
217
+ **Advanced — multiple patterns with custom headers:**
218
+
219
+ ```javascript
220
+ Sentry.replayIntegration({
221
+ networkDetailAllowUrls: [
222
+ window.location.origin,
223
+ "api.example.com",
224
+ /^https:\/\/api\.example\.com/,
225
+ ],
226
+ networkCaptureBodies: true, // default: true — capture request/response bodies
227
+ networkRequestHeaders: ["Cache-Control", "X-Request-ID"],
228
+ networkResponseHeaders: ["Referrer-Policy", "X-Trace-ID"],
229
+ });
230
+ ```
231
+
232
+ **Constraints:**
233
+
234
+ - Bodies are truncated to **150,000 characters** maximum
235
+ - `networkDetailDenyUrls` takes precedence over `networkDetailAllowUrls`
236
+ - Set `networkCaptureBodies: false` to keep header capture while disabling body capture
237
+
238
+ ---
239
+
240
+ ## Canvas Recording
241
+
242
+ Canvas elements are not captured by default.
243
+ Add `replayCanvasIntegration()` to enable:
244
+
245
+ ```javascript
246
+ import * as Sentry from "@sentry/browser";
247
+
248
+ Sentry.init({
249
+ dsn: "___PUBLIC_DSN___",
250
+ replaysSessionSampleRate: 0.1,
251
+ replaysOnErrorSampleRate: 1.0,
252
+ integrations: [Sentry.replayIntegration(), Sentry.replayCanvasIntegration()],
253
+ });
254
+ ```
255
+
256
+ > ⚠️ **There is currently no PII scrubbing in canvas recordings.** Review canvas content
257
+ > carefully before enabling.
258
+
259
+ ### 3D / WebGL Canvases — Manual Snapshot Mode
260
+
261
+ For WebGL or 3D canvases, use manual snapshotting to optimize performance:
262
+
263
+ ```javascript
264
+ Sentry.replayCanvasIntegration({
265
+ enableManualSnapshot: true,
266
+ });
267
+
268
+ // Call in your render loop to capture the canvas
269
+ function paint() {
270
+ const canvasRef = document.querySelector("#my-canvas");
271
+ Sentry.getClient()?.getIntegrationByName("ReplayCanvas")?.snapshot(canvasRef);
272
+ }
273
+ ```
274
+
275
+ ### WebGPU Canvases
276
+
277
+ ```javascript
278
+ Sentry.replayCanvasIntegration({
279
+ enableManualSnapshot: true,
280
+ });
281
+
282
+ function paint() {
283
+ const canvasRef = document.querySelector("#my-canvas");
284
+ const canvasIntegration = Sentry.getClient()?.getIntegrationByName("ReplayCanvas");
285
+
286
+ canvasIntegration?.snapshot(canvasRef, {
287
+ skipRequestAnimationFrame: true,
288
+ });
289
+ }
290
+ ```
291
+
292
+ ---
293
+
294
+ ## Lazy Loading
295
+
296
+ Defer loading the Replay bundle to avoid impacting initial page load:
297
+
298
+ ```javascript
299
+ // Initialize Sentry without Replay
300
+ Sentry.init({
301
+ dsn: "___PUBLIC_DSN___",
302
+ integrations: [],
303
+ });
304
+
305
+ // Lazy-load Replay later (e.g., after user interaction or route change)
306
+ import("@sentry/browser").then((lazySentry) => {
307
+ Sentry.addIntegration(
308
+ lazySentry.replayIntegration({
309
+ maskAllText: true,
310
+ blockAllMedia: true,
311
+ }),
312
+ );
313
+ });
314
+ ```
315
+
316
+ **For Loader Script users** (CDN), use `lazyLoadIntegration`:
317
+
318
+ ```javascript
319
+ window.sentryOnLoad = function () {
320
+ Sentry.init({ dsn: "___PUBLIC_DSN___" });
321
+
322
+ Sentry.lazyLoadIntegration("replayIntegration")
323
+ .then((replayIntegration) => {
324
+ Sentry.addIntegration(replayIntegration());
325
+ })
326
+ .catch(() => {
327
+ // Network error — Replay not enabled
328
+ });
329
+ };
330
+ ```
331
+
332
+ ---
333
+
334
+ ## Session Modes & Manual Control
335
+
336
+ ### Session Initialization Modes
337
+
338
+ | Configuration | Mode | Behavior |
339
+ | ---------------------------------------------------- | ---------------- | ---------------------------------------------------------- |
340
+ | `replaysSessionSampleRate > 0` and sampled | **Session mode** | Records continuously; uploads data in real time |
341
+ | Not sampled, `replaysOnErrorSampleRate > 0` | **Buffer mode** | Records but keeps only last 60 seconds in memory (~2–5 MB) |
342
+ | Both rates = `0`, or integration added without rates | **Inactive** | Nothing recorded until manually started |
343
+
344
+ **Session mode:** sessions end after **15 minutes of inactivity** or **60 minutes
345
+ maximum duration**, then reinitialize.
346
+
347
+ **Buffer mode:** stores ~2–5 MB in memory (lightweight DOM event logs: clicks, scrolls,
348
+ mutations — not video files).
349
+ On sampled error, the 60-second buffer + subsequent recording are uploaded.
350
+
351
+ ---
352
+
353
+ ### Manual Session Control API
354
+
355
+ ```javascript
356
+ Sentry.init({
357
+ dsn: "___PUBLIC_DSN___",
358
+ replaysSessionSampleRate: 0,
359
+ replaysOnErrorSampleRate: 0,
360
+ integrations: [Sentry.replayIntegration()],
361
+ });
362
+
363
+ const replay = Sentry.getReplay();
364
+
365
+ replay.start(); // Start recording in session mode
366
+ replay.startBuffering(); // Start recording in buffer mode
367
+
368
+ await replay.flush(); // Upload pending data (keeps recording active)
369
+ await replay.stop(); // Flush data and end session permanently
370
+
371
+ const replayId = replay.getReplayId(); // Get current replay ID for external linking
372
+ ```
373
+
374
+ ---
375
+
376
+ ### Deferred Initialization (External Sampling Service)
377
+
378
+ Use when you want to determine sampling rates via an external feature flag service
379
+ before starting the SDK:
380
+
381
+ ```javascript
382
+ async function initReplay(sessionSampleRate, errorSampleRate) {
383
+ const client = Sentry.getClient();
384
+ const options = client.getOptions();
385
+ options.replaysSessionSampleRate = sessionSampleRate;
386
+ options.replaysOnErrorSampleRate = errorSampleRate;
387
+
388
+ const replay = Sentry.replayIntegration({
389
+ maskAllText: true,
390
+ blockAllMedia: true,
391
+ });
392
+
393
+ client.addIntegration(replay);
394
+ }
395
+
396
+ // Call after fetching remote config
397
+ fetchFeatureFlags().then((flags) => {
398
+ initReplay(flags.replaySessionRate, flags.replayErrorRate);
399
+ });
400
+ ```
401
+
402
+ ---
403
+
404
+ ### Custom Sampling Patterns
405
+
406
+ **Employee-only recordings:**
407
+
408
+ Force a full recording for a specific cohort (e.g. internal employees) after they
409
+ authenticate. Because `flush()` only uploads _already-active_ recording data, guard on
410
+ `replay.getReplayId()`: if a replay is already active (session mode, or buffer mode when
411
+ `replaysOnErrorSampleRate > 0`) flush it to send immediately and keep recording;
412
+ otherwise call `replay.start()` to begin a new session-mode recording.
413
+ `replay.start()` records regardless of sample rate and is a safe no-op if a session is
414
+ already running.
415
+
416
+ ```javascript
417
+ Sentry.init({
418
+ dsn: "___PUBLIC_DSN___",
419
+ replaysSessionSampleRate: 0.1,
420
+ replaysOnErrorSampleRate: 1.0,
421
+ integrations: [Sentry.replayIntegration()],
422
+ });
423
+
424
+ // After authentication, always record a replay for internal employees
425
+ if (loggedInUser.isEmployee) {
426
+ const replay = Sentry.getReplay();
427
+
428
+ if (replay.getReplayId()) {
429
+ // A replay is already active (session or buffer mode):
430
+ // flush uploads the pending data and continues recording.
431
+ replay.flush();
432
+ } else {
433
+ // Nothing recording yet: start a full session-mode recording.
434
+ replay.start();
435
+ }
436
+ }
437
+ ```
438
+
439
+ **URL-specific recording:**
440
+
441
+ ```javascript
442
+ Sentry.init({
443
+ dsn: "___PUBLIC_DSN___",
444
+ replaysSessionSampleRate: 0,
445
+ replaysOnErrorSampleRate: 0,
446
+ integrations: [Sentry.replayIntegration()],
447
+ });
448
+
449
+ navigation.addEventListener("navigate", (event) => {
450
+ const url = new URL(event.destination.url);
451
+ const replay = Sentry.getReplay();
452
+ if (url.pathname.startsWith("/checkout/")) {
453
+ replay.start();
454
+ } else {
455
+ replay.stop();
456
+ }
457
+ });
458
+ ```
459
+
460
+ **Error filtering in buffer mode:**
461
+
462
+ ```javascript
463
+ Sentry.replayIntegration({
464
+ beforeErrorSampling: (event) => {
465
+ // Skip replay capture for this specific error type
466
+ return !event.exception?.values?.[0]?.value?.includes("drop me");
467
+ },
468
+ });
469
+ ```
470
+
471
+ ---
472
+
473
+ ### Support Widget Integration
474
+
475
+ Link replay sessions to support tickets:
476
+
477
+ ```javascript
478
+ Sentry.init({
479
+ dsn: "___PUBLIC_DSN___",
480
+ replaysSessionSampleRate: 0.1,
481
+ replaysOnErrorSampleRate: 0.5,
482
+ integrations: [Sentry.replayIntegration()],
483
+ });
484
+
485
+ MySupportWidget.on("open", async () => {
486
+ const replay = Sentry.getReplay();
487
+ await replay.flush();
488
+ const replayId = replay.getReplayId();
489
+
490
+ MySupportWidget.setTag("replayId", replayId);
491
+ // Replay URL format:
492
+ // https://<org-slug>.sentry.io/replays/<replay-id>/
493
+ });
494
+ ```
495
+
496
+ ---
497
+
498
+ ## Performance Impact
499
+
500
+ ### Buffer Mode is Lightweight
501
+
502
+ Buffer mode stores ~2–5 MB in memory — these are DOM event logs (clicks, scrolls,
503
+ mutations), not video files.
504
+ The real-time encoding is handled by a WebWorker.
505
+
506
+ ### Mutation Limits
507
+
508
+ Protect against performance degradation from excessive DOM mutations:
509
+
510
+ ```javascript
511
+ Sentry.replayIntegration({
512
+ mutationBreadcrumbLimit: 1000, // Emit breadcrumb warning at this threshold
513
+ mutationLimit: 1500, // Stop recording at this threshold
514
+ });
515
+ ```
516
+
517
+ ### Custom Compression Worker
518
+
519
+ Reduces bundle size and avoids CSP violations by self-hosting the compression worker:
520
+
521
+ ```javascript
522
+ Sentry.replayIntegration({
523
+ workerUrl: "/assets/sentry-replay-worker.min.js",
524
+ });
525
+ ```
526
+
527
+ **Bundler plugin optimization** (excludes worker from main bundle):
528
+
529
+ ```javascript
530
+ sentryVitePlugin({
531
+ bundleSizeOptimizations: {
532
+ excludeReplayWorker: true,
533
+ },
534
+ });
535
+ ```
536
+
537
+ ### Content Security Policy
538
+
539
+ Session Replay uses a WebWorker for compression.
540
+ Add to your CSP:
541
+
542
+ ```
543
+ worker-src 'self' blob:;
544
+ child-src 'self' blob:;
545
+ ```
546
+
547
+ > Safari ≤15.4 requires `child-src`. Use a self-hosted `workerUrl` as an alternative.
548
+
549
+ ---
550
+
551
+ ## Best Practices
552
+
553
+ - **Keep `replaysOnErrorSampleRate` at `1.0`** — error sessions are the highest value
554
+ for debugging.
555
+ - **Use `maskAllText: true` in production** — default behavior, protects PII. Only
556
+ disable for internal tools.
557
+ - **Opt-in to network details explicitly** — set `networkDetailAllowUrls` only for your
558
+ own API origins, not third-party services.
559
+ - **Never enable `replayCanvasIntegration` without reviewing canvas content** — there is
560
+ no automatic PII scrubbing for canvas.
561
+ - **Test masking before deploying** — use `replaysSessionSampleRate: 1.0` in staging and
562
+ review replays to verify PII is hidden.
563
+ - **Use `workerUrl` to self-host the compression worker** if you have strict CSP or want
564
+ to reduce bundle size.
565
+ - **Use `beforeAddRecordingEvent`** to filter out high-frequency recording events that
566
+ don’t add debugging value.
567
+ - **Set `minReplayDuration`** to avoid sending trivially short sessions (default: 5s is
568
+ usually fine).
569
+
570
+ ---
571
+
572
+ ## Troubleshooting
573
+
574
+ | Issue | Solution |
575
+ | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- |
576
+ | Replay not recording | Check that `replaysSessionSampleRate` or `replaysOnErrorSampleRate` is > 0. Confirm `replayIntegration()` is in the `integrations` array. |
577
+ | CSP errors blocking worker | Add `worker-src 'self' blob:; child-src 'self' blob:;` to your CSP, or use `workerUrl` to self-host the worker. |
578
+ | Replay stops after mutation spike | The `mutationLimit` (default: 10000) was hit. Increase it or reduce DOM mutation frequency in your app. |
579
+ | Sensitive data visible in replays | Add `.sentry-mask` / `.sentry-block` to elements, or use `mask`/`block` selector options. Verify with `replaysSessionSampleRate: 1.0` in staging. |
580
+ | Canvas not recorded | Add `replayCanvasIntegration()` alongside `replayIntegration()`. Requires SDK ≥7.50.0. |
581
+ | Network request bodies not captured | Set `networkDetailAllowUrls` to include your API origin. Bodies are opt-in by default. |
582
+ | Replay ID unavailable | Call `replay.getReplayId()` only after `replay.start()` or `replay.startBuffering()` has been called. |
583
+ | Error replays missing the 60-second buffer | Ensure `replaysOnErrorSampleRate > 0` and the replay integration is initialized before the error occurs. |
584
+ | Large bundle size from replay | Use the bundler plugin option `excludeReplayWorker: true` and self-host the worker via `workerUrl`. |
585
+ | `beforeErrorSampling` not firing | Only runs in **buffer mode** (when the session was not selected for full session recording). |
586
+ | Safari CSP issues | Safari ≤15.4 requires `child-src` in addition to `worker-src`. Use `workerUrl` as an alternative. |