@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.
- package/README.md +6 -6
- package/package.json +1 -1
- package/skill-sources.jsonc +6 -29
- package/skill-sources.lock.json +23 -109
- package/skills/animate/LICENSE +21 -0
- package/skills/animate/NOTICE +10 -0
- package/skills/animate/SKILL.md +34 -0
- package/skills/animate/references/gestures.md +27 -0
- package/skills/animate/references/glossary.md +136 -0
- package/skills/animate/references/implementation.md +22 -0
- package/skills/animate/references/opportunities.md +18 -0
- package/skills/animate/references/principles.md +48 -0
- package/skills/animate/references/review.md +19 -0
- package/skills/cloudflare-workers/LICENSE +202 -0
- package/skills/cloudflare-workers/NOTICE +9 -0
- package/skills/cloudflare-workers/SKILL.md +26 -0
- package/skills/cloudflare-workers/references/durable-objects.md +68 -0
- package/skills/cloudflare-workers/references/sandbox.md +48 -0
- package/skills/cloudflare-workers/references/workers.md +63 -0
- package/skills/cloudflare-workers/references/wrangler.md +56 -0
- package/skills/design-ui/LICENSE +21 -0
- package/skills/design-ui/NOTICE +8 -0
- package/skills/design-ui/SKILL.md +29 -0
- package/skills/design-ui/references/appearance.md +22 -0
- package/skills/design-ui/references/components.md +33 -0
- package/skills/design-ui/references/exploration.md +50 -0
- package/skills/design-ui/references/libraries.md +39 -0
- package/skills/design-ui/references/themes.md +23 -0
- package/skills/dev-kit/SKILL.md +19 -38
- package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
- package/skills/dev-kit/references/skills.md +2 -2
- package/skills/effect-development/SKILL.md +27 -0
- package/skills/effect-development/agents/openai.yaml +4 -0
- package/skills/effect-development/references/api/index.md +32 -0
- package/skills/effect-development/references/api/schema-codecs.md +15 -0
- package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
- package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
- package/skills/effect-development/references/atom/index.md +40 -0
- package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
- package/skills/effect-development/references/cli/index.md +39 -0
- package/skills/effect-development/references/setup.md +15 -0
- package/skills/open-pull-request/SKILL.md +11 -115
- package/skills/open-pull-request/agents/openai.yaml +3 -3
- package/skills/open-pull-request/references/evidence.md +22 -0
- package/skills/open-pull-request/references/explanation.md +21 -0
- package/skills/open-pull-request/references/publication.md +21 -0
- package/skills/sentry/LICENSE +202 -0
- package/skills/sentry/LICENSE-UPSTREAM +21 -0
- package/skills/sentry/NOTICE +14 -0
- package/skills/sentry/SKILL.md +33 -0
- package/skills/sentry/references/alert-payloads.md +105 -0
- package/skills/sentry/references/alerts.md +17 -0
- package/skills/sentry/references/artifacts.md +25 -0
- package/skills/sentry/references/auth-token.md +65 -0
- package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
- package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
- package/skills/sentry/references/concepts/crons.md +50 -0
- package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
- package/skills/sentry/references/concepts/errors.md +40 -0
- package/skills/sentry/references/concepts/logging.md +85 -0
- package/skills/sentry/references/concepts/metrics.md +49 -0
- package/skills/sentry/references/concepts/monitors.md +78 -0
- package/skills/sentry/references/concepts/profiling.md +38 -0
- package/skills/sentry/references/concepts/reduce-volume.md +49 -0
- package/skills/sentry/references/concepts/releases.md +43 -0
- package/skills/sentry/references/concepts/session-replay.md +35 -0
- package/skills/sentry/references/concepts/tracing.md +54 -0
- package/skills/sentry/references/concepts/user-feedback.md +36 -0
- package/skills/sentry/references/debug-artifacts/android.md +68 -0
- package/skills/sentry/references/debug-artifacts/apple.md +96 -0
- package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
- package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
- package/skills/sentry/references/debug-artifacts/index.md +75 -0
- package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
- package/skills/sentry/references/debug-artifacts/matching.md +73 -0
- package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
- package/skills/sentry/references/first-error-setup.md +25 -0
- package/skills/sentry/references/instrumentation.md +30 -0
- package/skills/sentry/references/issues.md +32 -0
- package/skills/sentry/references/new-project.md +17 -0
- package/skills/sentry/references/otel-exporter.md +30 -0
- package/skills/sentry/references/release-workflow.md +31 -0
- package/skills/sentry/references/releases/ci-pipeline.md +214 -0
- package/skills/sentry/references/releases/index.md +93 -0
- package/skills/sentry/references/releases/suspect-commits.md +155 -0
- package/skills/sentry/references/releases/tagging.md +131 -0
- package/skills/sentry/references/releases/troubleshooting.md +67 -0
- package/skills/sentry/references/sdks/android/crons.md +305 -0
- package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
- package/skills/sentry/references/sdks/android/index.md +748 -0
- package/skills/sentry/references/sdks/android/integrations.md +48 -0
- package/skills/sentry/references/sdks/android/logging.md +374 -0
- package/skills/sentry/references/sdks/android/metrics.md +288 -0
- package/skills/sentry/references/sdks/android/profiling.md +397 -0
- package/skills/sentry/references/sdks/android/session-replay.md +406 -0
- package/skills/sentry/references/sdks/android/tracing.md +861 -0
- package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
- package/skills/sentry/references/sdks/browser/index.md +714 -0
- package/skills/sentry/references/sdks/browser/logging.md +315 -0
- package/skills/sentry/references/sdks/browser/profiling.md +236 -0
- package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
- package/skills/sentry/references/sdks/browser/tracing.md +561 -0
- package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
- package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
- package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
- package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
- package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
- package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
- package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
- package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
- package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
- package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
- package/skills/sentry/references/sdks/cocoa/index.md +497 -0
- package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
- package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
- package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
- package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
- package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
- package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
- package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
- package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
- package/skills/sentry/references/sdks/dotnet/index.md +614 -0
- package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
- package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
- package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
- package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
- package/skills/sentry/references/sdks/elixir/crons.md +371 -0
- package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
- package/skills/sentry/references/sdks/elixir/index.md +383 -0
- package/skills/sentry/references/sdks/elixir/logging.md +239 -0
- package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
- package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
- package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
- package/skills/sentry/references/sdks/flutter/index.md +728 -0
- package/skills/sentry/references/sdks/flutter/logging.md +387 -0
- package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
- package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
- package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
- package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
- package/skills/sentry/references/sdks/go/crons.md +270 -0
- package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
- package/skills/sentry/references/sdks/go/index.md +324 -0
- package/skills/sentry/references/sdks/go/logging.md +354 -0
- package/skills/sentry/references/sdks/go/metrics.md +273 -0
- package/skills/sentry/references/sdks/go/profiling.md +46 -0
- package/skills/sentry/references/sdks/go/tracing.md +366 -0
- package/skills/sentry/references/sdks/index.md +41 -0
- package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
- package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
- package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
- package/skills/sentry/references/sdks/nestjs/index.md +699 -0
- package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
- package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
- package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
- package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
- package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
- package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
- package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
- package/skills/sentry/references/sdks/nextjs/index.md +491 -0
- package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
- package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
- package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
- package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
- package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
- package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
- package/skills/sentry/references/sdks/node/crons.md +432 -0
- package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
- package/skills/sentry/references/sdks/node/index.md +942 -0
- package/skills/sentry/references/sdks/node/logging.md +380 -0
- package/skills/sentry/references/sdks/node/metrics.md +278 -0
- package/skills/sentry/references/sdks/node/profiling.md +373 -0
- package/skills/sentry/references/sdks/node/tracing.md +878 -0
- package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
- package/skills/sentry/references/sdks/php/crons.md +265 -0
- package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
- package/skills/sentry/references/sdks/php/index.md +362 -0
- package/skills/sentry/references/sdks/php/laravel.md +542 -0
- package/skills/sentry/references/sdks/php/logging.md +242 -0
- package/skills/sentry/references/sdks/php/metrics.md +193 -0
- package/skills/sentry/references/sdks/php/profiling.md +115 -0
- package/skills/sentry/references/sdks/php/symfony.md +552 -0
- package/skills/sentry/references/sdks/php/tracing.md +516 -0
- package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
- package/skills/sentry/references/sdks/python/crons.md +218 -0
- package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
- package/skills/sentry/references/sdks/python/index.md +361 -0
- package/skills/sentry/references/sdks/python/logging.md +234 -0
- package/skills/sentry/references/sdks/python/metrics.md +154 -0
- package/skills/sentry/references/sdks/python/profiling.md +120 -0
- package/skills/sentry/references/sdks/python/tracing.md +364 -0
- package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
- package/skills/sentry/references/sdks/react/index.md +492 -0
- package/skills/sentry/references/sdks/react/logging.md +364 -0
- package/skills/sentry/references/sdks/react/profiling.md +322 -0
- package/skills/sentry/references/sdks/react/react-features.md +1272 -0
- package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
- package/skills/sentry/references/sdks/react/tracing.md +1415 -0
- package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
- package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
- package/skills/sentry/references/sdks/react-native/index.md +1030 -0
- package/skills/sentry/references/sdks/react-native/logging.md +444 -0
- package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
- package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
- package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
- package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
- package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
- package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
- package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
- package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
- package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
- package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
- package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
- package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
- package/skills/sentry/references/sdks/ruby/crons.md +184 -0
- package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
- package/skills/sentry/references/sdks/ruby/index.md +297 -0
- package/skills/sentry/references/sdks/ruby/logging.md +168 -0
- package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
- package/skills/sentry/references/sdks/ruby/migration.md +321 -0
- package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
- package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
- package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
- package/skills/sentry/references/sdks/svelte/index.md +467 -0
- package/skills/sentry/references/sdks/svelte/logging.md +344 -0
- package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
- package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
- package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
- package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
- package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
- package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
- package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
- package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
- package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
- package/skills/sentry/references/search-query-language.md +226 -0
- package/skills/sentry/references/semantics/angular.md +7 -0
- package/skills/sentry/references/semantics/app.md +28 -0
- package/skills/sentry/references/semantics/art.md +17 -0
- package/skills/sentry/references/semantics/aws.md +43 -0
- package/skills/sentry/references/semantics/browser.md +34 -0
- package/skills/sentry/references/semantics/cache.md +12 -0
- package/skills/sentry/references/semantics/client.md +8 -0
- package/skills/sentry/references/semantics/cloud.md +12 -0
- package/skills/sentry/references/semantics/cloudflare.md +23 -0
- package/skills/sentry/references/semantics/code.md +11 -0
- package/skills/sentry/references/semantics/culture.md +11 -0
- package/skills/sentry/references/semantics/db.md +21 -0
- package/skills/sentry/references/semantics/device.md +43 -0
- package/skills/sentry/references/semantics/error.md +7 -0
- package/skills/sentry/references/semantics/event.md +8 -0
- package/skills/sentry/references/semantics/exception.md +10 -0
- package/skills/sentry/references/semantics/faas.md +19 -0
- package/skills/sentry/references/semantics/file.md +8 -0
- package/skills/sentry/references/semantics/flag.md +7 -0
- package/skills/sentry/references/semantics/gcp.md +16 -0
- package/skills/sentry/references/semantics/gen_ai.md +53 -0
- package/skills/sentry/references/semantics/general.md +11 -0
- package/skills/sentry/references/semantics/graphql.md +9 -0
- package/skills/sentry/references/semantics/grpc.md +19 -0
- package/skills/sentry/references/semantics/http.md +34 -0
- package/skills/sentry/references/semantics/index.md +63 -0
- package/skills/sentry/references/semantics/jsonrpc.md +8 -0
- package/skills/sentry/references/semantics/jvm.md +12 -0
- package/skills/sentry/references/semantics/koa.md +7 -0
- package/skills/sentry/references/semantics/logger.md +7 -0
- package/skills/sentry/references/semantics/mcp.md +37 -0
- package/skills/sentry/references/semantics/mdc.md +7 -0
- package/skills/sentry/references/semantics/messaging.md +23 -0
- package/skills/sentry/references/semantics/middleware.md +7 -0
- package/skills/sentry/references/semantics/navigation.md +9 -0
- package/skills/sentry/references/semantics/nel.md +11 -0
- package/skills/sentry/references/semantics/network.md +17 -0
- package/skills/sentry/references/semantics/os.md +15 -0
- package/skills/sentry/references/semantics/otel.md +10 -0
- package/skills/sentry/references/semantics/params.md +7 -0
- package/skills/sentry/references/semantics/process.md +14 -0
- package/skills/sentry/references/semantics/react.md +7 -0
- package/skills/sentry/references/semantics/remix.md +7 -0
- package/skills/sentry/references/semantics/resource.md +7 -0
- package/skills/sentry/references/semantics/rpc.md +10 -0
- package/skills/sentry/references/semantics/score.md +10 -0
- package/skills/sentry/references/semantics/sentry.md +69 -0
- package/skills/sentry/references/semantics/server.md +8 -0
- package/skills/sentry/references/semantics/service.md +8 -0
- package/skills/sentry/references/semantics/session.md +7 -0
- package/skills/sentry/references/semantics/state.md +7 -0
- package/skills/sentry/references/semantics/thread.md +8 -0
- package/skills/sentry/references/semantics/timber.md +7 -0
- package/skills/sentry/references/semantics/trpc.md +8 -0
- package/skills/sentry/references/semantics/ui.md +18 -0
- package/skills/sentry/references/semantics/url.md +15 -0
- package/skills/sentry/references/semantics/user.md +17 -0
- package/skills/sentry/references/semantics/user_agent.md +7 -0
- package/skills/sentry/references/semantics/vercel.md +42 -0
- package/skills/sentry/references/setup-verification.md +39 -0
- package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
- package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
- package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
- package/skills/sentry/references/snapshots/index.md +19 -0
- package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
- package/skills/sentry/references/snapshots/snapshots.md +123 -0
- package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
- package/skills/testing/LICENSE +21 -0
- package/skills/testing/NOTICE +7 -0
- package/skills/testing/SKILL.md +13 -19
- package/skills/testing/agents/openai.yaml +1 -2
- package/skills/testing/references/selection.md +23 -0
- package/skills/testing/references/tdd.md +19 -0
- package/skills/testing/references/test-design.md +17 -0
- package/src/catalog.ts +1 -7
- package/skills/build-effect-apis/SKILL.md +0 -81
- package/skills/build-effect-apis/agents/openai.yaml +0 -4
- package/skills/build-effect-clis/SKILL.md +0 -92
- package/skills/build-effect-clis/agents/openai.yaml +0 -4
- package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
- package/skills/effect-atom-state/SKILL.md +0 -97
- package/skills/effect-atom-state/agents/openai.yaml +0 -4
- package/skills/effect-ts/SKILL.md +0 -35
- package/skills/effect-ts/agents/openai.yaml +0 -4
- /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
- /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Integration Reference — Sentry Android SDK
|
|
2
|
+
|
|
3
|
+
### Built-in (Auto-Enabled)
|
|
4
|
+
|
|
5
|
+
These integrations activate automatically when `SentryAndroid.init()` is called:
|
|
6
|
+
|
|
7
|
+
| Integration | What it does |
|
|
8
|
+
| ------------------------------------- | ---------------------------------------------------------------------- |
|
|
9
|
+
| `UncaughtExceptionHandlerIntegration` | Captures all uncaught Java/Kotlin exceptions |
|
|
10
|
+
| `AnrIntegration` | ANR detection via watchdog thread (5s) + ApplicationExitInfo (API 30+) |
|
|
11
|
+
| `NdkIntegration` | Native (C/C++) crash capture via `sentry-native` |
|
|
12
|
+
| `ActivityLifecycleIntegration` | Auto-instruments Activity create/resume/pause for TTID/TTFD |
|
|
13
|
+
| `AppStartMetrics` | Measures cold/warm/hot app start time |
|
|
14
|
+
| `NetworkBreadcrumbsIntegration` | Records connectivity changes as breadcrumbs |
|
|
15
|
+
| `SystemEventsBreadcrumbsIntegration` | Records battery, screen on/off, etc. |
|
|
16
|
+
| `AppLifecycleIntegration` | Records foreground/background transitions |
|
|
17
|
+
| `UserInteractionIntegration` | Breadcrumbs for taps, swipes, input events |
|
|
18
|
+
| `CurrentActivityIntegration` | Tracks active Activity for context |
|
|
19
|
+
|
|
20
|
+
### Optional Integrations
|
|
21
|
+
|
|
22
|
+
Add the artifact to your `dependencies {}` block (versions managed by BOM):
|
|
23
|
+
|
|
24
|
+
| Integration | Artifact | When to add |
|
|
25
|
+
| --------------------- | --------------------------------------- | ----------------------------------------------- |
|
|
26
|
+
| **Timber** | `io.sentry:sentry-android-timber` | App uses Timber for logging |
|
|
27
|
+
| **Fragment** | `io.sentry:sentry-android-fragment` | App uses Jetpack Fragments (lifecycle tracing) |
|
|
28
|
+
| **Compose** | `io.sentry:sentry-compose-android` | App uses Jetpack Compose (navigation + masking) |
|
|
29
|
+
| **Navigation** | `io.sentry:sentry-android-navigation` | App uses Jetpack Navigation Component |
|
|
30
|
+
| **OkHttp** | `io.sentry:sentry-okhttp` | App uses OkHttp or Retrofit |
|
|
31
|
+
| **Room/SQLite** | `io.sentry:sentry-android-sqlite` | App uses Room or raw SQLite |
|
|
32
|
+
| **Apollo 3** | `io.sentry:sentry-apollo-3` | App uses Apollo GraphQL v3 |
|
|
33
|
+
| **Apollo 4** | `io.sentry:sentry-apollo-4` | App uses Apollo GraphQL v4 |
|
|
34
|
+
| **Kotlin Extensions** | `io.sentry:sentry-kotlin-extensions` | Kotlin coroutines context propagation |
|
|
35
|
+
| **Ktor Client** | `io.sentry:sentry-ktor-client` | App uses Ktor HTTP client |
|
|
36
|
+
| **LaunchDarkly** | `io.sentry:sentry-launchdarkly-android` | App uses LaunchDarkly feature flags |
|
|
37
|
+
|
|
38
|
+
### Gradle Plugin Bytecode Instrumentation
|
|
39
|
+
|
|
40
|
+
The plugin can inject instrumentation automatically (no source changes):
|
|
41
|
+
|
|
42
|
+
| Feature | Instruments | Enable via |
|
|
43
|
+
| ---------- | -------------------------------------- | --------------------------------- |
|
|
44
|
+
| `DATABASE` | Room DAO, SupportSQLiteOpenHelper | `tracingInstrumentation.features` |
|
|
45
|
+
| `FILE_IO` | FileInputStream, FileOutputStream | `tracingInstrumentation.features` |
|
|
46
|
+
| `OKHTTP` | OkHttpClient.Builder automatically | `tracingInstrumentation.features` |
|
|
47
|
+
| `COMPOSE` | NavHostController auto-instrumentation | `tracingInstrumentation.features` |
|
|
48
|
+
| `LOGCAT` | `android.util.Log` capturing | `tracingInstrumentation.features` |
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
# Logging — Sentry Android SDK
|
|
2
|
+
|
|
3
|
+
> **Minimum SDK:** `io.sentry:sentry-android:8.12.0`\
|
|
4
|
+
> **Status:** Stable\
|
|
5
|
+
> **Enabled by default:** No — must opt in explicitly\
|
|
6
|
+
> **Docs:** https://docs.sentry.io/platforms/android/logs/
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
Sentry Structured Logs capture application log events as searchable, filterable records
|
|
13
|
+
in the Sentry Logs UI. Unlike breadcrumbs (which are attached to errors), structured
|
|
14
|
+
logs are standalone events with typed attributes and are queryable independently.
|
|
15
|
+
|
|
16
|
+
Logging is **opt-in** — the feature is entirely inert until
|
|
17
|
+
`options.logs.isEnabled = true` is set.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Enabling Logs
|
|
22
|
+
|
|
23
|
+
**Code (preferred — allows dynamic configuration):**
|
|
24
|
+
|
|
25
|
+
```kotlin
|
|
26
|
+
SentryAndroid.init(this) { options ->
|
|
27
|
+
options.dsn = "https://YOUR_KEY@sentry.io/YOUR_PROJECT_ID"
|
|
28
|
+
options.logs.isEnabled = true
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**AndroidManifest.xml:**
|
|
33
|
+
|
|
34
|
+
```xml
|
|
35
|
+
<application>
|
|
36
|
+
<meta-data
|
|
37
|
+
android:name="io.sentry.logs.enabled"
|
|
38
|
+
android:value="true" />
|
|
39
|
+
</application>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Configuration
|
|
45
|
+
|
|
46
|
+
```kotlin
|
|
47
|
+
SentryAndroid.init(this) { options ->
|
|
48
|
+
options.logs.isEnabled = true
|
|
49
|
+
|
|
50
|
+
// Optional: filter or mutate logs before they are sent
|
|
51
|
+
options.logs.setBeforeSend { event ->
|
|
52
|
+
// Drop TRACE logs in production
|
|
53
|
+
if (!BuildConfig.DEBUG && event.level == SentryLogLevel.TRACE) {
|
|
54
|
+
return@setBeforeSend null // null = drop the event
|
|
55
|
+
}
|
|
56
|
+
// Redact PII
|
|
57
|
+
val body = event.body ?: return@setBeforeSend event
|
|
58
|
+
if (body.contains("password", ignoreCase = true)) {
|
|
59
|
+
event.setBody("[REDACTED]")
|
|
60
|
+
}
|
|
61
|
+
event
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Configuration Reference
|
|
67
|
+
|
|
68
|
+
| Option | Type | Default | Description |
|
|
69
|
+
| -------------------- | ------------------------ | ------- | ----------------------------------------------------------------------- |
|
|
70
|
+
| `logs.isEnabled` | `Boolean` | `false` | Master switch — must be `true` for all logging features |
|
|
71
|
+
| `logs.setBeforeSend` | `BeforeSendLogCallback?` | `null` | Filter or mutate log events before transmission. Return `null` to drop. |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Code Examples
|
|
76
|
+
|
|
77
|
+
### Basic Level Methods
|
|
78
|
+
|
|
79
|
+
```kotlin
|
|
80
|
+
import io.sentry.Sentry
|
|
81
|
+
import io.sentry.SentryLogLevel
|
|
82
|
+
import io.sentry.SentryAttribute
|
|
83
|
+
import io.sentry.SentryAttributes
|
|
84
|
+
import io.sentry.logger.SentryLogParameters
|
|
85
|
+
|
|
86
|
+
// Six log levels — all accept printf-style format strings
|
|
87
|
+
Sentry.logger().trace("Entering %s.%s()", className, methodName)
|
|
88
|
+
Sentry.logger().debug("Cache lookup for key: %s", cacheKey)
|
|
89
|
+
Sentry.logger().info("User %s logged in", userId)
|
|
90
|
+
Sentry.logger().warn("Rate limit approaching: %d / %d requests used", current, max)
|
|
91
|
+
Sentry.logger().error("Payment failed after %d retries", retries)
|
|
92
|
+
Sentry.logger().fatal("Database unavailable: %s", host)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Java:**
|
|
96
|
+
|
|
97
|
+
```java
|
|
98
|
+
Sentry.logger().info("User %s logged in", userId);
|
|
99
|
+
Sentry.logger().error("Payment failed after %d retries", retries);
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Structured Attributes
|
|
103
|
+
|
|
104
|
+
Attach typed key-value pairs to make log events queryable by attribute values in Sentry:
|
|
105
|
+
|
|
106
|
+
```kotlin
|
|
107
|
+
Sentry.logger().log(
|
|
108
|
+
SentryLogLevel.INFO,
|
|
109
|
+
SentryLogParameters.create(
|
|
110
|
+
SentryAttributes.of(
|
|
111
|
+
SentryAttribute.stringAttribute("user.id", userId),
|
|
112
|
+
SentryAttribute.stringAttribute("order.id", orderId),
|
|
113
|
+
SentryAttribute.stringAttribute("payment.method", "card"),
|
|
114
|
+
SentryAttribute.booleanAttribute("is_retry", false),
|
|
115
|
+
SentryAttribute.integerAttribute("item_count", 3),
|
|
116
|
+
SentryAttribute.doubleAttribute("total_usd", 49.99)
|
|
117
|
+
)
|
|
118
|
+
),
|
|
119
|
+
"Checkout completed for user %s",
|
|
120
|
+
userId
|
|
121
|
+
)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Attribute factory methods:**
|
|
125
|
+
|
|
126
|
+
```kotlin
|
|
127
|
+
SentryAttribute.stringAttribute("key", "value") // String
|
|
128
|
+
SentryAttribute.booleanAttribute("key", true) // Boolean
|
|
129
|
+
SentryAttribute.integerAttribute("key", 42) // Int / Long
|
|
130
|
+
SentryAttribute.doubleAttribute("key", 3.14) // Double / Float
|
|
131
|
+
SentryAttribute.named("key", anyObject) // type inferred at runtime
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**From a map:**
|
|
135
|
+
|
|
136
|
+
```kotlin
|
|
137
|
+
val attrs = SentryAttributes.fromMap(mapOf(
|
|
138
|
+
"user.id" to userId,
|
|
139
|
+
"request.id" to requestId,
|
|
140
|
+
"duration" to durationMs
|
|
141
|
+
))
|
|
142
|
+
Sentry.logger().log(SentryLogLevel.INFO, SentryLogParameters.create(attrs), "API call completed")
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Custom Timestamp (Backfilling)
|
|
146
|
+
|
|
147
|
+
```kotlin
|
|
148
|
+
val ts = SentryAutoDateProvider().now()
|
|
149
|
+
Sentry.logger().log(
|
|
150
|
+
SentryLogLevel.INFO,
|
|
151
|
+
SentryLogParameters.create(
|
|
152
|
+
ts,
|
|
153
|
+
SentryAttributes.of(
|
|
154
|
+
SentryAttribute.stringAttribute("event", "purchase_complete"),
|
|
155
|
+
SentryAttribute.stringAttribute("order.id", orderId)
|
|
156
|
+
)
|
|
157
|
+
),
|
|
158
|
+
"Order %s fulfilled",
|
|
159
|
+
orderId
|
|
160
|
+
)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Production Pattern — Screen Lifecycle
|
|
164
|
+
|
|
165
|
+
```kotlin
|
|
166
|
+
class ProductDetailActivity : AppCompatActivity() {
|
|
167
|
+
|
|
168
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
|
169
|
+
super.onCreate(savedInstanceState)
|
|
170
|
+
val productId = intent.getStringExtra("product_id")
|
|
171
|
+
|
|
172
|
+
Sentry.logger().info(
|
|
173
|
+
SentryLogParameters.create(
|
|
174
|
+
SentryAttributes.of(
|
|
175
|
+
SentryAttribute.stringAttribute("screen", "ProductDetail"),
|
|
176
|
+
SentryAttribute.stringAttribute("product.id", productId ?: "unknown")
|
|
177
|
+
)
|
|
178
|
+
),
|
|
179
|
+
"Screen opened: ProductDetail"
|
|
180
|
+
)
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Production Pattern — API Call Logging
|
|
186
|
+
|
|
187
|
+
```kotlin
|
|
188
|
+
suspend fun fetchUserProfile(userId: String): UserProfile {
|
|
189
|
+
Sentry.logger().debug("Fetching profile for user %s", userId)
|
|
190
|
+
val t0 = SystemClock.elapsedRealtime()
|
|
191
|
+
|
|
192
|
+
return try {
|
|
193
|
+
val profile = api.getUser(userId)
|
|
194
|
+
Sentry.logger().info(
|
|
195
|
+
SentryLogParameters.create(
|
|
196
|
+
SentryAttributes.of(
|
|
197
|
+
SentryAttribute.stringAttribute("user.id", userId),
|
|
198
|
+
SentryAttribute.integerAttribute("duration_ms", (SystemClock.elapsedRealtime() - t0).toInt())
|
|
199
|
+
)
|
|
200
|
+
),
|
|
201
|
+
"Profile fetch succeeded for user %s",
|
|
202
|
+
userId
|
|
203
|
+
)
|
|
204
|
+
profile
|
|
205
|
+
} catch (e: Exception) {
|
|
206
|
+
Sentry.logger().error(
|
|
207
|
+
SentryLogParameters.create(
|
|
208
|
+
SentryAttributes.of(
|
|
209
|
+
SentryAttribute.stringAttribute("user.id", userId),
|
|
210
|
+
SentryAttribute.integerAttribute("duration_ms", (SystemClock.elapsedRealtime() - t0).toInt()),
|
|
211
|
+
SentryAttribute.stringAttribute("error", e.message ?: "unknown")
|
|
212
|
+
)
|
|
213
|
+
),
|
|
214
|
+
"Profile fetch failed for user %s",
|
|
215
|
+
userId
|
|
216
|
+
)
|
|
217
|
+
throw e
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Timber Integration
|
|
225
|
+
|
|
226
|
+
`SentryTimberIntegration` bridges Timber logs into the Sentry Logs pipeline.
|
|
227
|
+
Requires `sentry-android-timber`.
|
|
228
|
+
|
|
229
|
+
**Dependency:**
|
|
230
|
+
|
|
231
|
+
```groovy
|
|
232
|
+
implementation("io.sentry:sentry-android-timber:8.33.0")
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Setup:**
|
|
236
|
+
|
|
237
|
+
```kotlin
|
|
238
|
+
SentryAndroid.init(this) { options ->
|
|
239
|
+
options.logs.isEnabled = true
|
|
240
|
+
|
|
241
|
+
options.addIntegration(
|
|
242
|
+
SentryTimberIntegration(
|
|
243
|
+
minEventLevel = SentryLevel.ERROR, // Timber.e() → Sentry error events
|
|
244
|
+
minBreadcrumbLevel = SentryLevel.INFO, // Timber.i() → breadcrumbs
|
|
245
|
+
minLogsLevel = SentryLogLevel.DEBUG, // Timber.d() → Sentry structured logs
|
|
246
|
+
)
|
|
247
|
+
)
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Plant Timber separately — SDK does not plant for you
|
|
251
|
+
if (BuildConfig.DEBUG) Timber.plant(Timber.DebugTree())
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**Timber priority → SentryLogLevel mapping:**
|
|
255
|
+
|
|
256
|
+
| Timber Priority | `SentryLogLevel` |
|
|
257
|
+
| --------------- | ---------------- |
|
|
258
|
+
| `Log.VERBOSE` | `TRACE` |
|
|
259
|
+
| `Log.DEBUG` | `DEBUG` |
|
|
260
|
+
| `Log.INFO` | `INFO` |
|
|
261
|
+
| `Log.WARN` | `WARN` |
|
|
262
|
+
| `Log.ERROR` | `ERROR` |
|
|
263
|
+
| `Log.ASSERT` | `FATAL` |
|
|
264
|
+
|
|
265
|
+
Each Timber-sourced log carries `sentry.origin = "auto.log.timber"` for filtering in
|
|
266
|
+
`beforeSend`.
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Logcat Auto-Integration (Gradle Plugin)
|
|
271
|
+
|
|
272
|
+
With the Sentry Android Gradle plugin, `android.util.Log` calls are
|
|
273
|
+
bytecode-instrumented at build time and forwarded to Sentry Logs automatically — **no
|
|
274
|
+
source code changes needed**:
|
|
275
|
+
|
|
276
|
+
```groovy
|
|
277
|
+
// android/build.gradle (module)
|
|
278
|
+
sentry {
|
|
279
|
+
autoInstallation.enabled = true
|
|
280
|
+
tracingInstrumentation {
|
|
281
|
+
features = [InstrumentationFeature.LOGCAT]
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Without the plugin, only manual `Sentry.logger()` calls and the Timber integration
|
|
287
|
+
capture logs.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Auto-Attached Attributes
|
|
292
|
+
|
|
293
|
+
The SDK automatically enriches every log event with the following attributes:
|
|
294
|
+
|
|
295
|
+
| Attribute Key | Value | Notes |
|
|
296
|
+
| -------------------------------------- | ------------------------------------------------------ | ------------------------------------------------- |
|
|
297
|
+
| `sentry.origin` | `"manual"` / `"auto.log.timber"` / `"auto.log.logcat"` | Per integration |
|
|
298
|
+
| `sentry.message.template` | Original format string | e.g. `"User %s logged in"` |
|
|
299
|
+
| `sentry.message.parameter.0` … `.N` | Format argument values | |
|
|
300
|
+
| `sentry.sdk.name` | `"sentry.java.android"` | |
|
|
301
|
+
| `sentry.sdk.version` | `"8.33.0"` | |
|
|
302
|
+
| `sentry.environment` | Configured environment | |
|
|
303
|
+
| `sentry.release` | Configured release string | |
|
|
304
|
+
| `sentry.replay_id` | Active replay session UUID | Only when Session Replay is recording |
|
|
305
|
+
| `sentry._internal.replay_is_buffering` | `"true"` | Only in `onErrorSampleRate` buffer mode |
|
|
306
|
+
| `user.id` | From `scope.user.id` | Added regardless of `sendDefaultPii` since 8.33.0 |
|
|
307
|
+
| `user.name` | From `scope.user.username` | |
|
|
308
|
+
| `user.email` | From `scope.user.email` | |
|
|
309
|
+
|
|
310
|
+
> **8.33.0 change:** `user.id`, `user.name`, `user.email` now attach to logs regardless
|
|
311
|
+
> of `sendDefaultPii`. Use `beforeSend` to suppress PII if needed.
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## Log Levels Reference
|
|
316
|
+
|
|
317
|
+
| Level | `SentryLogLevel` constant | OTel Severity | When to Use |
|
|
318
|
+
| ------- | ------------------------- | ------------- | ------------------------------------------------ |
|
|
319
|
+
| `trace` | `TRACE` (1) | 1 | Step-by-step internals, loop iterations |
|
|
320
|
+
| `debug` | `DEBUG` (5) | 5 | Development diagnostics |
|
|
321
|
+
| `info` | `INFO` (9) | 9 | Business events, user actions, state transitions |
|
|
322
|
+
| `warn` | `WARN` (13) | 13 | Recoverable errors, approaching limits |
|
|
323
|
+
| `error` | `ERROR` (17) | 17 | Failures requiring investigation |
|
|
324
|
+
| `fatal` | `FATAL` (21) | 21 | Unrecoverable failures — app or subsystem down |
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## Batch Processing
|
|
329
|
+
|
|
330
|
+
The SDK batches log events for efficiency:
|
|
331
|
+
|
|
332
|
+
| Parameter | Value |
|
|
333
|
+
| ---------------- | ----------------------------------------------------------------------- |
|
|
334
|
+
| Flush delay | 5 seconds after the first queued event |
|
|
335
|
+
| Max batch size | 100 events per HTTP envelope |
|
|
336
|
+
| Max queue size | 1,000 events (events silently dropped above this) |
|
|
337
|
+
| Background flush | Yes — `AndroidLoggerBatchProcessor` flushes when app goes to background |
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Best Practices
|
|
342
|
+
|
|
343
|
+
1. **Enable in `Application.onCreate()`** — set `options.logs.isEnabled = true` before
|
|
344
|
+
any log calls
|
|
345
|
+
2. **Use structured attributes** — pass typed key-value pairs instead of embedding
|
|
346
|
+
values in message strings; they become queryable columns in the Logs UI
|
|
347
|
+
3. **Use `beforeSend` for level filtering** — drop `TRACE`/`DEBUG` in production to
|
|
348
|
+
reduce quota usage
|
|
349
|
+
4. **Redact PII in `beforeSend`** — since 8.33.0 user attributes attach regardless of
|
|
350
|
+
`sendDefaultPii`
|
|
351
|
+
5. **Prefer `Sentry.logger()` over Timber for new code** — direct API provides full type
|
|
352
|
+
safety for attributes
|
|
353
|
+
6. **Plant Timber separately** — `SentryTimberIntegration` does not call
|
|
354
|
+
`Timber.plant()`; you must do it yourself
|
|
355
|
+
7. **Don’t call `Sentry.logger()` before `SentryAndroid.init()`** — calls before init
|
|
356
|
+
are silently dropped
|
|
357
|
+
8. **Keep queue headroom** — avoid bursts that exceed 1,000 queued events; excess is
|
|
358
|
+
silently dropped
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## Troubleshooting
|
|
363
|
+
|
|
364
|
+
| Issue | Solution |
|
|
365
|
+
| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
366
|
+
| Logs not appearing in Sentry | Verify `options.logs.isEnabled = true` is set in `SentryAndroid.init()` — the feature is disabled by default |
|
|
367
|
+
| Logs appearing but missing attributes | Ensure you pass a `SentryLogParameters` with `SentryAttributes.of(...)` — plain format args are not queryable as attributes |
|
|
368
|
+
| Timber logs not forwarded | Add `SentryTimberIntegration` to `options.addIntegration()` and plant a `Timber.DebugTree()` separately |
|
|
369
|
+
| Timber logs not reaching Sentry as structured logs | Check `minLogsLevel` on `SentryTimberIntegration` — default is `INFO`; set to `DEBUG` to capture debug-level logs |
|
|
370
|
+
| Logs disappear silently under heavy load | Queue is capped at 1,000 events; use `beforeSend` to drop verbose levels before they queue up |
|
|
371
|
+
| `user.id` appearing in logs unexpectedly | Since SDK 8.33.0, user fields attach regardless of `sendDefaultPii`; use `beforeSend` to strip them |
|
|
372
|
+
| Logcat `Log.*` calls not captured | Requires the Sentry Android Gradle plugin with `InstrumentationFeature.LOGCAT` enabled at build time |
|
|
373
|
+
| `beforeSend` not called | Check that `options.logs.isEnabled = true` — `beforeSend` is only invoked when the feature is enabled |
|
|
374
|
+
| Logs lost on crash | Known limitation: in-memory queued events may not reach Sentry before the process is killed |
|