@danieljvdm/dev-kit 1.0.2 → 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 (329) hide show
  1. package/README.md +6 -6
  2. package/package.json +1 -1
  3. package/skill-sources.jsonc +2 -33
  4. package/skill-sources.lock.json +15 -117
  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 +10 -70
  45. package/skills/open-pull-request/references/evidence.md +22 -0
  46. package/skills/open-pull-request/references/explanation.md +21 -0
  47. package/skills/open-pull-request/references/publication.md +21 -0
  48. package/skills/sentry/LICENSE +202 -0
  49. package/skills/sentry/LICENSE-UPSTREAM +21 -0
  50. package/skills/sentry/NOTICE +14 -0
  51. package/skills/sentry/SKILL.md +33 -0
  52. package/skills/sentry/references/alert-payloads.md +105 -0
  53. package/skills/sentry/references/alerts.md +17 -0
  54. package/skills/sentry/references/artifacts.md +25 -0
  55. package/skills/sentry/references/auth-token.md +65 -0
  56. package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
  57. package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
  58. package/skills/sentry/references/concepts/crons.md +50 -0
  59. package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
  60. package/skills/sentry/references/concepts/errors.md +40 -0
  61. package/skills/sentry/references/concepts/logging.md +85 -0
  62. package/skills/sentry/references/concepts/metrics.md +49 -0
  63. package/skills/sentry/references/concepts/monitors.md +78 -0
  64. package/skills/sentry/references/concepts/profiling.md +38 -0
  65. package/skills/sentry/references/concepts/reduce-volume.md +49 -0
  66. package/skills/sentry/references/concepts/releases.md +43 -0
  67. package/skills/sentry/references/concepts/session-replay.md +35 -0
  68. package/skills/sentry/references/concepts/tracing.md +54 -0
  69. package/skills/sentry/references/concepts/user-feedback.md +36 -0
  70. package/skills/sentry/references/debug-artifacts/android.md +68 -0
  71. package/skills/sentry/references/debug-artifacts/apple.md +96 -0
  72. package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
  73. package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
  74. package/skills/sentry/references/debug-artifacts/index.md +75 -0
  75. package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
  76. package/skills/sentry/references/debug-artifacts/matching.md +73 -0
  77. package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
  78. package/skills/sentry/references/first-error-setup.md +25 -0
  79. package/skills/sentry/references/instrumentation.md +30 -0
  80. package/skills/sentry/references/issues.md +32 -0
  81. package/skills/sentry/references/new-project.md +17 -0
  82. package/skills/sentry/references/otel-exporter.md +30 -0
  83. package/skills/sentry/references/release-workflow.md +31 -0
  84. package/skills/sentry/references/releases/ci-pipeline.md +214 -0
  85. package/skills/sentry/references/releases/index.md +93 -0
  86. package/skills/sentry/references/releases/suspect-commits.md +155 -0
  87. package/skills/sentry/references/releases/tagging.md +131 -0
  88. package/skills/sentry/references/releases/troubleshooting.md +67 -0
  89. package/skills/sentry/references/sdks/android/crons.md +305 -0
  90. package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
  91. package/skills/sentry/references/sdks/android/index.md +748 -0
  92. package/skills/sentry/references/sdks/android/integrations.md +48 -0
  93. package/skills/sentry/references/sdks/android/logging.md +374 -0
  94. package/skills/sentry/references/sdks/android/metrics.md +288 -0
  95. package/skills/sentry/references/sdks/android/profiling.md +397 -0
  96. package/skills/sentry/references/sdks/android/session-replay.md +406 -0
  97. package/skills/sentry/references/sdks/android/tracing.md +861 -0
  98. package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
  99. package/skills/sentry/references/sdks/browser/index.md +714 -0
  100. package/skills/sentry/references/sdks/browser/logging.md +315 -0
  101. package/skills/sentry/references/sdks/browser/profiling.md +236 -0
  102. package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
  103. package/skills/sentry/references/sdks/browser/tracing.md +561 -0
  104. package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
  105. package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
  106. package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
  107. package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
  108. package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
  109. package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
  110. package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
  111. package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
  112. package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
  113. package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
  114. package/skills/sentry/references/sdks/cocoa/index.md +497 -0
  115. package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
  116. package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
  117. package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
  118. package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
  119. package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
  120. package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
  121. package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
  122. package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
  123. package/skills/sentry/references/sdks/dotnet/index.md +614 -0
  124. package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
  125. package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
  126. package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
  127. package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
  128. package/skills/sentry/references/sdks/elixir/crons.md +371 -0
  129. package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
  130. package/skills/sentry/references/sdks/elixir/index.md +383 -0
  131. package/skills/sentry/references/sdks/elixir/logging.md +239 -0
  132. package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
  133. package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
  134. package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
  135. package/skills/sentry/references/sdks/flutter/index.md +728 -0
  136. package/skills/sentry/references/sdks/flutter/logging.md +387 -0
  137. package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
  138. package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
  139. package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
  140. package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
  141. package/skills/sentry/references/sdks/go/crons.md +270 -0
  142. package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
  143. package/skills/sentry/references/sdks/go/index.md +324 -0
  144. package/skills/sentry/references/sdks/go/logging.md +354 -0
  145. package/skills/sentry/references/sdks/go/metrics.md +273 -0
  146. package/skills/sentry/references/sdks/go/profiling.md +46 -0
  147. package/skills/sentry/references/sdks/go/tracing.md +366 -0
  148. package/skills/sentry/references/sdks/index.md +41 -0
  149. package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
  150. package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
  151. package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
  152. package/skills/sentry/references/sdks/nestjs/index.md +699 -0
  153. package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
  154. package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
  155. package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
  156. package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
  157. package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
  158. package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
  159. package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
  160. package/skills/sentry/references/sdks/nextjs/index.md +491 -0
  161. package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
  162. package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
  163. package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
  164. package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
  165. package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
  166. package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
  167. package/skills/sentry/references/sdks/node/crons.md +432 -0
  168. package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
  169. package/skills/sentry/references/sdks/node/index.md +942 -0
  170. package/skills/sentry/references/sdks/node/logging.md +380 -0
  171. package/skills/sentry/references/sdks/node/metrics.md +278 -0
  172. package/skills/sentry/references/sdks/node/profiling.md +373 -0
  173. package/skills/sentry/references/sdks/node/tracing.md +878 -0
  174. package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
  175. package/skills/sentry/references/sdks/php/crons.md +265 -0
  176. package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
  177. package/skills/sentry/references/sdks/php/index.md +362 -0
  178. package/skills/sentry/references/sdks/php/laravel.md +542 -0
  179. package/skills/sentry/references/sdks/php/logging.md +242 -0
  180. package/skills/sentry/references/sdks/php/metrics.md +193 -0
  181. package/skills/sentry/references/sdks/php/profiling.md +115 -0
  182. package/skills/sentry/references/sdks/php/symfony.md +552 -0
  183. package/skills/sentry/references/sdks/php/tracing.md +516 -0
  184. package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
  185. package/skills/sentry/references/sdks/python/crons.md +218 -0
  186. package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
  187. package/skills/sentry/references/sdks/python/index.md +361 -0
  188. package/skills/sentry/references/sdks/python/logging.md +234 -0
  189. package/skills/sentry/references/sdks/python/metrics.md +154 -0
  190. package/skills/sentry/references/sdks/python/profiling.md +120 -0
  191. package/skills/sentry/references/sdks/python/tracing.md +364 -0
  192. package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
  193. package/skills/sentry/references/sdks/react/index.md +492 -0
  194. package/skills/sentry/references/sdks/react/logging.md +364 -0
  195. package/skills/sentry/references/sdks/react/profiling.md +322 -0
  196. package/skills/sentry/references/sdks/react/react-features.md +1272 -0
  197. package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
  198. package/skills/sentry/references/sdks/react/tracing.md +1415 -0
  199. package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
  200. package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
  201. package/skills/sentry/references/sdks/react-native/index.md +1030 -0
  202. package/skills/sentry/references/sdks/react-native/logging.md +444 -0
  203. package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
  204. package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
  205. package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
  206. package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
  207. package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
  208. package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
  209. package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
  210. package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
  211. package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
  212. package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
  213. package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
  214. package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
  215. package/skills/sentry/references/sdks/ruby/crons.md +184 -0
  216. package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
  217. package/skills/sentry/references/sdks/ruby/index.md +297 -0
  218. package/skills/sentry/references/sdks/ruby/logging.md +168 -0
  219. package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
  220. package/skills/sentry/references/sdks/ruby/migration.md +321 -0
  221. package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
  222. package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
  223. package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
  224. package/skills/sentry/references/sdks/svelte/index.md +467 -0
  225. package/skills/sentry/references/sdks/svelte/logging.md +344 -0
  226. package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
  227. package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
  228. package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
  229. package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
  230. package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
  231. package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
  232. package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
  233. package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
  234. package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
  235. package/skills/sentry/references/search-query-language.md +226 -0
  236. package/skills/sentry/references/semantics/angular.md +7 -0
  237. package/skills/sentry/references/semantics/app.md +28 -0
  238. package/skills/sentry/references/semantics/art.md +17 -0
  239. package/skills/sentry/references/semantics/aws.md +43 -0
  240. package/skills/sentry/references/semantics/browser.md +34 -0
  241. package/skills/sentry/references/semantics/cache.md +12 -0
  242. package/skills/sentry/references/semantics/client.md +8 -0
  243. package/skills/sentry/references/semantics/cloud.md +12 -0
  244. package/skills/sentry/references/semantics/cloudflare.md +23 -0
  245. package/skills/sentry/references/semantics/code.md +11 -0
  246. package/skills/sentry/references/semantics/culture.md +11 -0
  247. package/skills/sentry/references/semantics/db.md +21 -0
  248. package/skills/sentry/references/semantics/device.md +43 -0
  249. package/skills/sentry/references/semantics/error.md +7 -0
  250. package/skills/sentry/references/semantics/event.md +8 -0
  251. package/skills/sentry/references/semantics/exception.md +10 -0
  252. package/skills/sentry/references/semantics/faas.md +19 -0
  253. package/skills/sentry/references/semantics/file.md +8 -0
  254. package/skills/sentry/references/semantics/flag.md +7 -0
  255. package/skills/sentry/references/semantics/gcp.md +16 -0
  256. package/skills/sentry/references/semantics/gen_ai.md +53 -0
  257. package/skills/sentry/references/semantics/general.md +11 -0
  258. package/skills/sentry/references/semantics/graphql.md +9 -0
  259. package/skills/sentry/references/semantics/grpc.md +19 -0
  260. package/skills/sentry/references/semantics/http.md +34 -0
  261. package/skills/sentry/references/semantics/index.md +63 -0
  262. package/skills/sentry/references/semantics/jsonrpc.md +8 -0
  263. package/skills/sentry/references/semantics/jvm.md +12 -0
  264. package/skills/sentry/references/semantics/koa.md +7 -0
  265. package/skills/sentry/references/semantics/logger.md +7 -0
  266. package/skills/sentry/references/semantics/mcp.md +37 -0
  267. package/skills/sentry/references/semantics/mdc.md +7 -0
  268. package/skills/sentry/references/semantics/messaging.md +23 -0
  269. package/skills/sentry/references/semantics/middleware.md +7 -0
  270. package/skills/sentry/references/semantics/navigation.md +9 -0
  271. package/skills/sentry/references/semantics/nel.md +11 -0
  272. package/skills/sentry/references/semantics/network.md +17 -0
  273. package/skills/sentry/references/semantics/os.md +15 -0
  274. package/skills/sentry/references/semantics/otel.md +10 -0
  275. package/skills/sentry/references/semantics/params.md +7 -0
  276. package/skills/sentry/references/semantics/process.md +14 -0
  277. package/skills/sentry/references/semantics/react.md +7 -0
  278. package/skills/sentry/references/semantics/remix.md +7 -0
  279. package/skills/sentry/references/semantics/resource.md +7 -0
  280. package/skills/sentry/references/semantics/rpc.md +10 -0
  281. package/skills/sentry/references/semantics/score.md +10 -0
  282. package/skills/sentry/references/semantics/sentry.md +69 -0
  283. package/skills/sentry/references/semantics/server.md +8 -0
  284. package/skills/sentry/references/semantics/service.md +8 -0
  285. package/skills/sentry/references/semantics/session.md +7 -0
  286. package/skills/sentry/references/semantics/state.md +7 -0
  287. package/skills/sentry/references/semantics/thread.md +8 -0
  288. package/skills/sentry/references/semantics/timber.md +7 -0
  289. package/skills/sentry/references/semantics/trpc.md +8 -0
  290. package/skills/sentry/references/semantics/ui.md +18 -0
  291. package/skills/sentry/references/semantics/url.md +15 -0
  292. package/skills/sentry/references/semantics/user.md +17 -0
  293. package/skills/sentry/references/semantics/user_agent.md +7 -0
  294. package/skills/sentry/references/semantics/vercel.md +42 -0
  295. package/skills/sentry/references/setup-verification.md +39 -0
  296. package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
  297. package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
  298. package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
  299. package/skills/sentry/references/snapshots/index.md +19 -0
  300. package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
  301. package/skills/sentry/references/snapshots/snapshots.md +123 -0
  302. package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
  303. package/skills/testing/LICENSE +21 -0
  304. package/skills/testing/NOTICE +7 -0
  305. package/skills/testing/SKILL.md +13 -19
  306. package/skills/testing/agents/openai.yaml +1 -2
  307. package/skills/testing/references/selection.md +23 -0
  308. package/skills/testing/references/tdd.md +19 -0
  309. package/skills/testing/references/test-design.md +17 -0
  310. package/src/catalog.ts +1 -7
  311. package/skills/build-effect-apis/SKILL.md +0 -81
  312. package/skills/build-effect-apis/agents/openai.yaml +0 -4
  313. package/skills/build-effect-clis/SKILL.md +0 -92
  314. package/skills/build-effect-clis/agents/openai.yaml +0 -4
  315. package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
  316. package/skills/effect-atom-state/SKILL.md +0 -97
  317. package/skills/effect-atom-state/agents/openai.yaml +0 -4
  318. package/skills/effect-ts/SKILL.md +0 -35
  319. package/skills/effect-ts/agents/openai.yaml +0 -4
  320. /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
  321. /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
  322. /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
  323. /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
  324. /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
  325. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
  326. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
  327. /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
  328. /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
  329. /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
@@ -0,0 +1,214 @@
1
+ # Profiling — Sentry Flutter SDK
2
+
3
+ > **Minimum SDK:** `sentry_flutter` ≥ **7.12.0**\
4
+ > **Status:** ⚠️ **Alpha** — API may change without a major version bump\
5
+ > **Platforms:** **iOS and macOS only** — Android, Web, Linux, Windows not supported
6
+
7
+ Profiling samples the Dart and native call stack at regular intervals to surface hot
8
+ code paths and slow functions.
9
+ It requires tracing to be enabled — only transactions that are sampled can be profiled.
10
+
11
+ ---
12
+
13
+ ## Table of Contents
14
+
15
+ 1. [How Profiling Works](#1-how-profiling-works)
16
+ 2. [Basic Setup](#2-basic-setup)
17
+ 3. [What Data Is Captured](#3-what-data-is-captured)
18
+ 4. [Performance Overhead](#4-performance-overhead)
19
+ 5. [Configuration Reference](#5-configuration-reference)
20
+ 6. [Known Limitations](#6-known-limitations)
21
+ 7. [Troubleshooting](#7-troubleshooting)
22
+
23
+ ---
24
+
25
+ ## 1. How Profiling Works
26
+
27
+ When a transaction is sampled for profiling, the SDK starts sampling the call stack at a
28
+ fixed interval for the duration of that transaction.
29
+ The profile is attached to the transaction and uploaded to Sentry alongside it.
30
+
31
+ ### Sampling relationship
32
+
33
+ `profilesSampleRate` is **relative to `tracesSampleRate`**, not to all transactions:
34
+
35
+ ```
36
+ All transactions
37
+ └── × tracesSampleRate → Traced transactions
38
+ └── × profilesSampleRate → Profiled transactions
39
+ ```
40
+
41
+ Example: `tracesSampleRate: 0.2` + `profilesSampleRate: 0.5` → 10% of all transactions
42
+ are profiled.
43
+
44
+ ### Platform constraint
45
+
46
+ The Flutter profiler hooks into the native iOS/macOS profiling infrastructure
47
+ (equivalent to Instruments-style profiling).
48
+ Android, Web, Linux, and Windows do **not** support profiling at the
49
+ `profilesSampleRate` level — setting the option on those platforms has no effect.
50
+
51
+ ---
52
+
53
+ ## 2. Basic Setup
54
+
55
+ ### Minimum configuration
56
+
57
+ ```dart
58
+ import 'package:flutter/widgets.dart';
59
+ import 'package:sentry_flutter/sentry_flutter.dart';
60
+
61
+ Future<void> main() async {
62
+ await SentryFlutter.init(
63
+ (options) {
64
+ options.dsn = 'YOUR_DSN';
65
+
66
+ // Tracing must be enabled — profiling only applies to traced transactions
67
+ options.tracesSampleRate = 1.0;
68
+
69
+ // profilesSampleRate is relative to tracesSampleRate
70
+ // 1.0 = profile every traced transaction (development / testing only)
71
+ options.profilesSampleRate = 1.0;
72
+ },
73
+ appRunner: () => runApp(MyApp()),
74
+ );
75
+ }
76
+ ```
77
+
78
+ ### Recommended production configuration
79
+
80
+ ```dart
81
+ await SentryFlutter.init(
82
+ (options) {
83
+ options.dsn = 'YOUR_DSN';
84
+
85
+ // Trace 20% of transactions
86
+ options.tracesSampleRate = 0.2;
87
+
88
+ // Profile 50% of those → 10% of all transactions profiled
89
+ options.profilesSampleRate = 0.5;
90
+ },
91
+ appRunner: () => runApp(MyApp()),
92
+ );
93
+ ```
94
+
95
+ > **Production guidance:** Profiling adds overhead.
96
+ > Keep `profilesSampleRate` low in production.
97
+ > Values above 0.1 are not recommended without explicit performance validation on your
98
+ > minimum supported device.
99
+
100
+ ### Verifying profiles appear in Sentry
101
+
102
+ 1. Build and run on a **real iOS device** (not Simulator — see
103
+ [Known Limitations](#6-known-limitations))
104
+ 2. Trigger a user interaction that creates a transaction (e.g., navigate between screens
105
+ with `SentryNavigatorObserver`)
106
+ 3. Open Sentry → Performance → find the transaction → look for the **Profiling** tab in
107
+ the transaction detail
108
+
109
+ ---
110
+
111
+ ## 3. What Data Is Captured
112
+
113
+ ### In a profile
114
+
115
+ | Data | Description |
116
+ | ---------------------- | ---------------------------------------------------------- |
117
+ | **Call stack samples** | Sampled Dart + native stack frames at regular intervals |
118
+ | **Flame graph** | Aggregated view of time spent in each function |
119
+ | **Timeline** | Stack samples over time, correlated with transaction spans |
120
+ | **Thread info** | Main isolate thread, background threads, native threads |
121
+ | **Function names** | From Dart debug info + native debug symbols |
122
+
123
+ ### What profiles are linked to
124
+
125
+ Each profile is attached to the transaction that triggered it.
126
+ In the Sentry UI you can:
127
+
128
+ - View the flame graph alongside the transaction’s span waterfall
129
+ - Identify which functions were executing during slow spans
130
+
131
+ ### What is NOT captured
132
+
133
+ - Memory allocations (use Xcode Instruments for that)
134
+ - Network traffic details (captured separately via tracing spans)
135
+ - UI rendering frames (slow/frozen frames are a separate tracing metric via
136
+ `SentryNavigatorObserver`)
137
+
138
+ ---
139
+
140
+ ## 4. Performance Overhead
141
+
142
+ Profiling adds CPU overhead during sampled transactions.
143
+ The sampler uses a fixed-interval approach (not full instrumentation), which limits
144
+ overhead but does not eliminate it.
145
+
146
+ | Factor | Impact |
147
+ | ---------------------------------- | ----------------------------------------------------------------- |
148
+ | `profilesSampleRate: 1.0` | Higher — every traced transaction is profiled |
149
+ | `profilesSampleRate: 0.1` | Low — only 10% of traced transactions profiled |
150
+ | Real device (iPhone 12+) | Minimal visible impact |
151
+ | Older devices (iPhone 8 and below) | Measurable impact — validate before enabling |
152
+ | iOS Simulator | Works but results differ from device — don’t use for benchmarking |
153
+
154
+ **Recommendations:**
155
+
156
+ - Use `profilesSampleRate: 1.0` only in development/testing
157
+ - In production, start at `profilesSampleRate: 0.05` and increase if needed
158
+ - Always validate on your minimum supported iOS device before shipping
159
+
160
+ ---
161
+
162
+ ## 5. Configuration Reference
163
+
164
+ ### `SentryFlutter.init` options
165
+
166
+ | Option | Type | Default | Description |
167
+ | -------------------- | -------------- | ------- | -------------------------------------------------------------------------------------------------- |
168
+ | `profilesSampleRate` | `double` (0–1) | `null` | Fraction of _traced_ transactions to also profile. Relative to `tracesSampleRate`. iOS/macOS only. |
169
+ | `tracesSampleRate` | `double` (0–1) | `null` | Required for profiling. Fraction of transactions to trace. |
170
+ | `tracesSampler` | `function` | `null` | Dynamic trace sampling. Takes precedence over `tracesSampleRate` when set. |
171
+
172
+ ### Minimum version table
173
+
174
+ | Feature | Min SDK | Platforms |
175
+ | -------------------- | -------- | ---------- |
176
+ | `profilesSampleRate` | `7.12.0` | iOS, macOS |
177
+
178
+ ---
179
+
180
+ ## 6. Known Limitations
181
+
182
+ - **iOS and macOS only.** Android, Web, Linux, and Windows are **not supported**. The
183
+ option is silently ignored on unsupported platforms.
184
+ - **Alpha status.** The profiling API and behavior may change in future minor versions.
185
+ Pin your SDK version if stability matters for a critical workflow.
186
+ - **Simulator accuracy.** iOS Simulator profiling does not reflect real device
187
+ characteristics. Always validate performance conclusions on real hardware.
188
+ - **Tracing required.** Setting `profilesSampleRate` without a non-zero
189
+ `tracesSampleRate` has no effect — no transactions are sampled, so no profiles can be
190
+ generated.
191
+ - **Obfuscation.** Dart obfuscated builds (common in release builds) will show
192
+ obfuscated Dart frame names unless you upload Dart symbol files via
193
+ `sentry_dart_plugin`. Configure the plugin to upload `.symbols` files on each release
194
+ build.
195
+ - **No manual profiling API.** You cannot start/stop a profile programmatically —
196
+ profiling is transaction-scoped only and controlled entirely by `profilesSampleRate`.
197
+ - **Background transactions.** If a transaction completes while the app is backgrounded,
198
+ the profile may be truncated or absent.
199
+
200
+ ---
201
+
202
+ ## 7. Troubleshooting
203
+
204
+ | Issue | Likely Cause | Solution |
205
+ | ---------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
206
+ | No profiles appearing in Sentry | `profilesSampleRate` not set, or `tracesSampleRate` is `0` or `null` | Set both to `> 0`. Verify DSN is correct and events appear in Sentry at all. |
207
+ | Option is set but no profiles on Android | Android is not supported | Expected — profiling is iOS/macOS only in the Flutter SDK. |
208
+ | Dart frames show obfuscated names (e.g., `_f`, `_g`) | Release build without symbol upload | Configure `sentry_dart_plugin` to upload Dart symbol files (`--obfuscate` + `--split-debug-info`) |
209
+ | Native frames show as hex addresses | dSYM not uploaded | Configure the Sentry Xcode build phase to upload dSYMs, or use `sentry_dart_plugin` |
210
+ | Profiles appear only for some transactions | Expected behavior | `profilesSampleRate` controls the fraction. Increase if you want broader coverage. |
211
+ | Profile flame graph shows “unknown” functions | Missing both Dart symbols and dSYMs | Upload both via `sentry_dart_plugin` and the Xcode build phase |
212
+ | Profiling not working on iOS Simulator | Known limitation — Simulator profiling may not match device behavior | Validate on a real device. Simulator results are indicative only. |
213
+ | App performance degraded after enabling profiling | `profilesSampleRate` too high | Reduce `profilesSampleRate`; test on your minimum supported device |
214
+ | SDK crashes on startup with profiling enabled | SDK version < 7.12.0 | Upgrade `sentry_flutter` to ≥ 7.12.0 |
@@ -0,0 +1,308 @@
1
+ # Session Replay — Sentry Flutter SDK
2
+
3
+ > **Minimum SDK:** `sentry_flutter` ≥ **9.0.0**\
4
+ > **Platforms:** **iOS and Android only** — Web, macOS, Linux, Windows not supported\
5
+ > **Frame rate:** ~**1 frame per second** (screenshot-based capture, not DOM recording)
6
+
7
+ Flutter Session Replay captures a visual record of user sessions as a compressed
8
+ sequence of screenshots, combined with breadcrumbs, traces, and error context.
9
+ It works differently from web replay — understanding this prevents surprises.
10
+
11
+ ---
12
+
13
+ ## Table of Contents
14
+
15
+ 1. [How Flutter Replay Differs from Web Replay](#1-how-flutter-replay-differs-from-web-replay)
16
+ 2. [Basic Setup](#2-basic-setup)
17
+ 3. [Sample Rates](#3-sample-rates)
18
+ 4. [Privacy and Masking](#4-privacy-and-masking)
19
+ 5. [What the Replay UI Shows](#5-what-the-replay-ui-shows)
20
+ 6. [Session Lifecycle](#6-session-lifecycle)
21
+ 7. [Performance Overhead](#7-performance-overhead)
22
+ 8. [Configuration Reference](#8-configuration-reference)
23
+ 9. [Known Limitations](#9-known-limitations)
24
+ 10. [Troubleshooting](#10-troubleshooting)
25
+
26
+ ---
27
+
28
+ ## 1. How Flutter Replay Differs from Web Replay
29
+
30
+ | Dimension | Web Session Replay | Flutter Session Replay |
31
+ | --------------------- | -------------------------------------- | -------------------------------------------- |
32
+ | **Recording method** | DOM serialization (HTML/CSS snapshots) | **Screenshot-based** (widget tree snapshots) |
33
+ | **Frame rate** | Variable (mutation-driven) | **~1 frame per second** |
34
+ | **Text in replay** | ✅ Selectable, searchable | ❌ Pixel-only — text is in screenshots |
35
+ | **CSS inspection** | ✅ Available | ❌ Not available |
36
+ | **Privacy mechanism** | CSS-based DOM masking | **Widget-level pixel masking** |
37
+ | **Rage clicks** | ✅ Detected | ❌ Not supported |
38
+ | **Touch recording** | Full pointer events | Tap breadcrumbs only |
39
+ | **Scroll positions** | ✅ Precise | ⚠️ Approximate (from screenshots) |
40
+
41
+ ---
42
+
43
+ ## 2. Basic Setup
44
+
45
+ Flutter Session Replay is built into `sentry_flutter` — no separate package is needed.
46
+ Wrap your root widget with `SentryWidget` (required for widget-tree privacy masking):
47
+
48
+ ```dart
49
+ import 'package:flutter/widgets.dart';
50
+ import 'package:sentry_flutter/sentry_flutter.dart';
51
+
52
+ Future<void> main() async {
53
+ await SentryFlutter.init(
54
+ (options) {
55
+ options.dsn = 'YOUR_DSN';
56
+
57
+ // Session replay sampling
58
+ options.replay.sessionSampleRate = 0.1; // 10% of all sessions recorded
59
+ options.replay.onErrorSampleRate = 1.0; // 100% when an error occurs
60
+ },
61
+ appRunner: () => runApp(
62
+ SentryWidget( // required — wraps the app for screenshot capture
63
+ child: MyApp(),
64
+ ),
65
+ ),
66
+ );
67
+ }
68
+ ```
69
+
70
+ > **During development:** Use `options.replay.sessionSampleRate = 1.0` so every session
71
+ > is recorded. Lower it before shipping to production.
72
+
73
+ ---
74
+
75
+ ## 3. Sample Rates
76
+
77
+ ### `replay.sessionSampleRate`
78
+
79
+ Records the **entire user session** from SDK initialization / app foreground entry.
80
+
81
+ - Range: `0.0` – `1.0`
82
+ - Captures everything from session start
83
+
84
+ ### `replay.onErrorSampleRate`
85
+
86
+ Only activates when an **error occurs**. The SDK maintains a rolling pre-error buffer
87
+ and captures that buffer plus everything after the error.
88
+
89
+ - Range: `0.0` – `1.0`
90
+ - Gives you context for what led up to the error
91
+
92
+ ### Recommended production values
93
+
94
+ | Strategy | `sessionSampleRate` | `onErrorSampleRate` |
95
+ | ------------------------------ | ------------------- | ------------------- |
96
+ | Errors-only (minimal overhead) | `0` | `1.0` |
97
+ | Balanced | `0.05` | `1.0` |
98
+ | High visibility | `0.1` | `1.0` |
99
+
100
+ ---
101
+
102
+ ## 4. Privacy and Masking
103
+
104
+ > ⚠️ **Production warning:** Always verify your masking config before enabling in
105
+ > production. The SDK masks aggressively by default, but any customizations require
106
+ > thorough testing with your actual app UI. If you discover unmasked PII, disable
107
+ > Session Replay until resolved.
108
+
109
+ ### Default behavior
110
+
111
+ The SDK **aggressively masks all text, images, and user input by default**:
112
+
113
+ | Widget type | Default behavior |
114
+ | ---------------------------------- | -------------------- |
115
+ | `Text`, `RichText`, `EditableText` | ✅ Masked by default |
116
+ | `Image` (including asset images) | ✅ Masked by default |
117
+ | `TextFormField`, `TextField` | ✅ Masked by default |
118
+
119
+ Masked areas are replaced with a filled block using a neutral color.
120
+
121
+ ### Privacy configuration options
122
+
123
+ Configure masking in `SentryFlutter.init`:
124
+
125
+ ```dart
126
+ await SentryFlutter.init(
127
+ (options) {
128
+ options.dsn = 'YOUR_DSN';
129
+ options.replay.sessionSampleRate = 0.1;
130
+ options.replay.onErrorSampleRate = 1.0;
131
+
132
+ // Masking options — all true by default
133
+ options.privacy.maskAllText = true; // mask Text, RichText, EditableText
134
+ options.privacy.maskAllImages = true; // mask Image widgets
135
+ options.privacy.maskAssetImages = true; // mask asset bundle images
136
+ },
137
+ appRunner: () => runApp(SentryWidget(child: MyApp())),
138
+ );
139
+ ```
140
+
141
+ ### Mask specific widget types
142
+
143
+ ```dart
144
+ // Mask all IconButton widgets (masked by the widget type)
145
+ options.privacy.mask<IconButton>();
146
+
147
+ // Unmask Image widgets (show images in replay)
148
+ options.privacy.unmask<Image>();
149
+ ```
150
+
151
+ ### Custom masking logic per widget instance
152
+
153
+ ```dart
154
+ options.privacy.maskCallback<Text>(
155
+ (Element element, Text widget) {
156
+ // Mask only text containing 'secret'
157
+ if (widget.data?.contains('secret') ?? false) {
158
+ return SentryMaskingDecision.mask;
159
+ }
160
+ return SentryMaskingDecision.continueProcessing;
161
+ },
162
+ );
163
+ ```
164
+
165
+ ### Disable all masking
166
+
167
+ Only do this if your app contains absolutely no sensitive data:
168
+
169
+ ```dart
170
+ options.privacy.maskAllText = false;
171
+ options.privacy.maskAllImages = false;
172
+ options.privacy.maskAssetImages = false;
173
+ ```
174
+
175
+ ### Third-party widget masking
176
+
177
+ The SDK cannot automatically detect or mask third-party widgets.
178
+ You must register them explicitly:
179
+
180
+ ```dart
181
+ // Example: mask a map widget from a third-party package
182
+ options.privacy.mask<FlutterMap>();
183
+
184
+ // Example: mask a video player widget
185
+ options.privacy.mask<VideoPlayer>();
186
+ ```
187
+
188
+ ---
189
+
190
+ ## 5. What the Replay UI Shows
191
+
192
+ | Panel | Content |
193
+ | --------------- | --------------------------------------------------------- |
194
+ | **Video** | Compressed screenshot sequence at ~1 fps |
195
+ | **Breadcrumbs** | User taps, navigation events, app lifecycle transitions |
196
+ | **Timeline** | Scrubbable view with event markers |
197
+ | **Network** | HTTP requests made during the session |
198
+ | **Errors** | All errors in the session linked to Sentry issues |
199
+ | **Tags** | OS version, device specs, release, user info, custom tags |
200
+ | **Trace** | All distributed traces during the replay session |
201
+
202
+ ### Touch / gesture recording
203
+
204
+ Touch interactions are recorded as **breadcrumb events** (discrete tap events), not raw
205
+ gesture streams:
206
+
207
+ - ✅ Captured: Tap position, tapped widget, timestamp
208
+ - ❌ Not captured: Swipe paths, gesture velocity, multi-touch sequences
209
+
210
+ ---
211
+
212
+ ## 6. Session Lifecycle
213
+
214
+ | Event | Effect |
215
+ | ----------------------------------------------- | ----------------------------- |
216
+ | SDK initializes / app enters foreground | New session starts |
217
+ | App goes to background | Session pauses |
218
+ | App returns to foreground within **30 seconds** | Same session continues |
219
+ | App returns to foreground after **30+ seconds** | New session starts |
220
+ | Session reaches **60 minutes** | Session terminates |
221
+ | App crashes / closes in background | Session terminates abnormally |
222
+
223
+ The `onErrorSampleRate` mode keeps a pre-error buffer in memory.
224
+ When an error occurs, this buffer plus the subsequent recording is captured and sent.
225
+
226
+ ---
227
+
228
+ ## 7. Performance Overhead
229
+
230
+ Session Replay adds CPU and memory overhead from periodic screenshot capture and
231
+ compression.
232
+
233
+ | Metric | With Replay | Notes |
234
+ | ----------------- | ------------ | ------------------------------ |
235
+ | CPU | +5–10% | During active recording |
236
+ | Memory | +15–25 MB | Screenshot buffer |
237
+ | FPS impact | -1 to -2 fps | Minimal on modern devices |
238
+ | Network bandwidth | ~7–10 KB/s | Compressed screenshot segments |
239
+
240
+ ### Reducing performance impact
241
+
242
+ ```dart
243
+ options.replay.sessionSampleRate = 0.05; // lower session recording rate
244
+ options.replay.onErrorSampleRate = 1.0; // keep error capture at 100%
245
+ ```
246
+
247
+ Consider using `onErrorSampleRate` only (set `sessionSampleRate` to `0`) for the lowest
248
+ overhead while retaining the most valuable replay data.
249
+
250
+ ---
251
+
252
+ ## 8. Configuration Reference
253
+
254
+ ### `options.replay` settings
255
+
256
+ | Option | Type | Default | Description |
257
+ | -------------------------- | -------------- | ------- | ------------------------------------------------------------ |
258
+ | `replay.sessionSampleRate` | `double` (0–1) | `0` | Fraction of all sessions to record from start |
259
+ | `replay.onErrorSampleRate` | `double` (0–1) | `0` | Fraction of error sessions to record (with pre-error buffer) |
260
+
261
+ ### `options.privacy` settings
262
+
263
+ | Option | Type | Default | Description |
264
+ | --------------------------- | ------ | ------- | ------------------------------------------- |
265
+ | `privacy.maskAllText` | `bool` | `true` | Mask Text, RichText, EditableText widgets |
266
+ | `privacy.maskAllImages` | `bool` | `true` | Mask Image widgets |
267
+ | `privacy.maskAssetImages` | `bool` | `true` | Mask asset bundle images |
268
+ | `privacy.mask<T>()` | method | — | Mask all instances of widget type T |
269
+ | `privacy.unmask<T>()` | method | — | Unmask all instances of widget type T |
270
+ | `privacy.maskCallback<T>()` | method | — | Custom masking decision per widget instance |
271
+
272
+ ### Version requirements
273
+
274
+ | Feature | Min SDK |
275
+ | -------------------------------- | ------- |
276
+ | Session Replay (iOS + Android) | `9.0.0` |
277
+ | `options.replay.*` configuration | `9.0.0` |
278
+ | `options.privacy.*` masking | `9.0.0` |
279
+
280
+ ---
281
+
282
+ ## 9. Known Limitations
283
+
284
+ | Limitation | Details |
285
+ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
286
+ | iOS and Android only | Web, macOS, Linux, and Windows are **not supported**. Replay configuration is silently ignored on unsupported platforms. |
287
+ | ~1 fps frame rate | Not suitable for high-frequency UI debugging. Best for understanding flow and identifying the screen state during errors. |
288
+ | Text is not selectable | Screenshots capture pixels only — you cannot copy text from a replay. |
289
+ | No swipe/gesture paths | Only discrete tap events are recorded as breadcrumbs. Gesture trajectories are not captured. |
290
+ | Third-party widget masking | Must be registered manually via `options.privacy.mask<WidgetType>()` — the SDK cannot auto-detect foreign widget types. |
291
+ | Pre-error buffer is in-memory | Low-memory devices may have a shorter effective pre-error buffer. |
292
+ | No DOM inspection | Unlike web replay, you cannot inspect the widget tree state at a given frame — only the screenshot is available. |
293
+
294
+ ---
295
+
296
+ ## 10. Troubleshooting
297
+
298
+ | Issue | Solution |
299
+ | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
300
+ | Replay not recording at all | Verify `options.replay.sessionSampleRate` or `options.replay.onErrorSampleRate` is `> 0`. Confirm `SentryWidget` wraps your root widget. |
301
+ | Platform not supported | Expected — Flutter Session Replay is iOS and Android only. Check you’re building for a supported platform. |
302
+ | All content masked after disabling masking | Verify you’ve set `options.privacy.maskAllText = false` and `options.privacy.maskAllImages = false` before `appRunner` runs. |
303
+ | Third-party widget content visible despite masking | Register the widget type: `options.privacy.mask<ThirdPartyWidget>()` |
304
+ | High memory usage with replay enabled | Lower `sessionSampleRate`; consider using `onErrorSampleRate` only (set `sessionSampleRate` to `0`) |
305
+ | Replay works in debug but not in production | Verify sample rates are non-zero in your production `SentryFlutter.init()` call; check DSN is correct for the environment |
306
+ | Pre-error buffer empty | Low memory device may have dropped the buffer. No workaround currently. |
307
+ | Replay sessions not linked to errors | Ensure both `onErrorSampleRate > 0` and the SDK is initialized before the error occurs |
308
+ | Tap events missing in replay | Confirm `SentryWidget` is wrapping the widget tree — it intercepts gesture events to record taps |