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

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions