getsentry / getsentry/sentry-javascript

deno: `init()` never registers the channel-injection hooks, though Deno supports them

Open
#23,892 1 comment 0 reactions 0 assignees View on GitHub
Bug Deno javascript
Dominant language
TypeScript
Stars
8.7k
Forks
1.8k
Avg merge
1d 17h
Merged PRs (30d)
515

Description

Deno 2.9.2 has a working `Module.registerHooks`, and `hasStableSyncModuleHooks` already returns `true` for Deno unconditionally (`register.ts:20`). Calling the register function directly works:

```
$ deno run -A reg.mjs
marker after register: {"runtime":[]} # hooks registered
```

But `@sentry/deno`'s `init()` never calls it:

```
$ deno run -A nospans.mjs
orchestrion marker: undefined
```

Node's `init()` calls `registerDiagnosticsChannelInjection()` and then `detectOrchestrionSetup()`. Deno instead expects the user to remember `deno run --import=@sentry/deno/import app.ts`, and gives no warning at all if they forget. All 22 channel integrations still install and report `Integration installed`.

**Work item.** Call `registerDiagnosticsChannelInjection()` from `@sentry/deno`'s `init()` behind the same `enableRuntimeChannelInjection` option Node uses, and call `detectOrchestrionSetup()` after client creation. Keep `@sentry/deno/import` working for the case where modules are imported before `init()`.

**Prior art ***(related history only)*. getsentry/sentry-javascript#21451 (merged) added the `@sentry/deno/import` runtime hook, and getsentry/sentry-javascript#22790 (merged) raised the floor to Deno >= 2.8.3, which is what makes the `Module.registerHooks` path safe to call unconditionally. No issue covers calling it from `init()`.

Contributor guide

Open the contributing guide

Research direction

Start in the @sentry/deno init() implementation and inspect register.ts:20, where hasStableSyncModuleHooks is defined. Trace registerDiagnosticsChannelInjection(), detectOrchestrionSetup(), and the @sentry/deno/import entry point before changing initialization. Done means init() honors enableRuntimeChannelInjection, detects missing setup after client creation, and preserves imports that run before init().

Written by the indexing model from the issue text.

Assessment

Tech stack
deno, typescript
Domain
backend
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
74/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.