You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit be24564
Browse filesBrowse the repository at this point in the historyBrowse files
feat(remix): Run the orchestrion transform on Remix 3 browser modules
Remix 3 has no bundler, so the build time plugin the other SDKs use has
nothing to attach to. The asset server compiles each module on request
through a loader chain with Node's `load` hook shape, and that is the only
compile time hook the browser pipeline has. This adds a loader there that
applies orchestrion's transform, and patches `run` in `@remix-run/ui` so
component render errors are captured with no application code.
`@sentry/server-utils` gains a `load-hook` entry for callers with a file
path and its source and no bundler in between. It is compiled into that
package's build like the webpack loader, because the `@apm-js-collab`
packages are bundled devDependencies and not resolvable on user installs.
This keeps `@sentry/remix` free of the transformer as a dependency.
The transform imports the browser `diagnostics_channel` shim by public
URL, percent encoded per segment the way the asset server encodes rewritten
imports, and the URL is listed in `scripts.external`. Two spellings of that
URL are two modules to a browser, so a mismatch would load two shims with
two subscriber registries and no instrumentation. The shim is now an
explicit rollup entry: nothing in the module graph uses its default export,
so a non entry module would have it tree shaken away, which the injected
import needs.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
"[Sentry] The browser channel shim is outside the asset server's node_modules mount, so browser modules are served without instrumentation. Component render errors need `captureRuntimeErrors(app)`.",
0 commit comments