Skip to content

[v11] Align Remix action form-data span attribute with @sentry/conventions #23007

Description

@chargome

The two Remix server instrumentation paths emit different attribute names for the same form-data, so the same app reports differently depending on runtime:

Runtime Path Attribute
Node tracing-channel.ts:255 (diagnostics-channel + orchestrion) formData.<key>
Cloudflare / Hydrogen utils.ts:36 (build-object fill() patching) remix.action_form_data.<key>

@sentry/conventions already settles which is correct:

REMIX_ACTION_FORM_DATA_KEY      = 'remix.action_form_data.<key>'
REMIX_ACTION_FORM_DATA_KEY_BASE = 'remix.action_form_data'

So formData.* on the Node path is the deviation, and the Cloudflare path is already spec-compliant. Neither constant is currently imported anywhere in the repo — both call sites hardcode strings.

Scope

  • packages/remix/src/server/integrations/tracing-channel.ts:255 — use REMIX_ACTION_FORM_DATA_KEY_BASE instead of formData.
  • packages/remix/src/utils/utils.ts:36 — same string, switch to the constant
  • packages/remix/test/server/tracing-channel.test.ts:153 and tracing-channel-no-form-data.test.ts:64-65 — update assertions
  • dev-packages/e2e-tests/test-applications/create-remix-app-express/tests/server-transactions.test.ts:43-44 — asserts formData.text / formData.file; the only non-unit-test pin on the old name, so the change is E2E-verifiable

Why breaking

Renaming a span attribute silently breaks any dashboard, alert, or saved search on formData.* — attributes don't fail loudly, they just stop matching. Needs its own breaking-change changelog entry. A major is the right window to absorb it.

Split out of #21295 to keep that change scoped to the double-gating fix; the two have different rationales and blast radii.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions