Update span attributes to use @sentry/conventions #18895

Description

@Lms24

Description

For the next Major SDK version, we should stop sending attributes we deprecated in our conventions and (if not done already) replace them with their stable replacements.

Overall, we should likely move to our @sentry/conventions package generally and unify usage there. We need to make sure that we do not remove anything users may heavily rely on (or that this is backfilled or similar, …)

Locations marked (reads) only consume the deprecated attribute for back-compat and can likely stay (or be dropped last); everything else actively sets it.


AI Attributes (ai.*)

Deprecated AttributeReplacementFiles (Source Code)
ai.pipeline.namegen_ai.pipeline.nameserver-utils/src/ai/vercel-ai/index.ts (L424, raw string)
ai.streaminggen_ai.response.streamingserver-utils/src/ai/vercel-ai/index.ts (L437, raw string)

packages/server-utils/src/ai/langgraph/index.ts already uses GEN_AI_PIPELINE_NAME — Vercel AI is the only holdout.


Code Attributes (code.*)

Deprecated AttributeReplacementFiles (Source Code)
code.filepathcode.file.pathbrowser-utils/src/performance/entries.ts (L143, raw string)
code.functioncode.function.namebrowser-utils/src/performance/entries.ts (L146, raw string)

Note: as of @sentry/conventions@0.19.0, code.function is not yet flagged @deprecated (it and code.function.name are listed as aliases), but it will be deprecated in favor of code.function.name — so migrate it along with code.filepath. The packages/remix/src/server/integrations/opentelemetry.ts occurrence from the original audit is gone with the file.


Database Attributes (db.*)

Almost all of these moved into packages/server-utils/src/ when the OTel DB instrumentations were vendored. They are set via the deprecated @sentry/conventions constants (DB_SYSTEM, DB_STATEMENT, …) or via local ATTR_DB_* string constants.

Deprecated AttributeReplacementFiles (Source Code)
db.namedb.namespaceserver-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.operationdb.operation.namecore/src/integrations/supabase.ts (L280, L440, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.statementdb.query.textserver-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/prisma/tracing-helper.ts(reads)
db.systemdb.system.namecore/src/integrations/supabase.ts (L279, L439, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts, server-utils/src/prisma/tracing-helper.ts (backfill)
db.mongodb.collection (newly deprecated)db.collection.nameserver-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts

packages/server-utils/src/integrations/ioredis.ts and redis.ts already carry TODO(v11) comments for exactly this migration.

Note: db.user, db.connection_string and db.sql.table are not deprecated in @sentry/conventions@0.19.0 — no action needed there.


HTTP Attributes (http.*)

The old node-core HTTP integration is gone. Server-side HTTP attributes now live in packages/core/src/integrations/http/ and packages/node/src/integrations/http/httpServerSpansIntegration.ts (the latter sets them deliberately, guarded by eslint-disable typescript/no-deprecated, for compatibility with what @opentelemetry/instrumentation-http used to emit).

Deprecated AttributeReplacementFiles (Source Code)
http.client_ipclient.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.flavornetwork.protocol.versioncore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.hostserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.methodhttp.request.methodSets:browser/src/tracing/request.ts, browser/src/integrations/fetchStreamPerformance.ts, core/src/fetch.ts, core/src/integrations/http/add-outgoing-request-breadcrumb.ts, core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, core/src/types/request.ts (type), nestjs/src/integrations/wrap-route.ts, node/src/integrations/http/httpServerSpansIntegration.ts, node/src/utils/outgoingFetchRequest.ts, react-router/src/server/createServerInstrumentation.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/hapi-utils.ts, sveltekit/src/server-common/handle.ts, sveltekit/src/server-common/load.ts. Reads:browser/src/integrations/graphqlClient.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/edge/enhanceRunHandlerRootSpan.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/handleOnSpanStart.ts, server-utils/src/utils/setHttpServerSpanRouteAttribute.ts
http.response_content_lengthhttp.response.body.sizebrowser-utils/src/performance/entries.ts, core/src/fetch.ts, core/src/integrations/http/get-outgoing-span-data.ts
http.response_transfer_sizehttp.response.sizebrowser-utils/src/performance/entries.ts
http.schemeurl.schemecore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.status_codehttp.response.status_codeSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/aws-sdk/index.ts. Reads:nextjs/src/common/utils/backfillHttpResponseStatusCode.ts, nextjs/src/common/utils/backfillHttpServerStatus.ts
http.targeturl.pathSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts. Reads / filters:nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/common/utils/setUrlProcessingMetadata.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/index.ts, react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts, solidstart/src/server/withServerActionInstrumentation.ts, tanstackstart-react/src/server/tunnelRoute.ts
http.user_agentuser_agent.originalcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts

Network Attributes (net.*)

Deprecated AttributeReplacementFiles (Source Code)
net.host.ipnetwork.local.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.nameserver.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.portserver.portcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.ipnetwork.peer.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.nameserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, node/src/integrations/tracing/redis/cache.ts(reads), server-utils/src/integrations/amqplib.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
net.peer.portserver.portsame set as net.peer.name, plus core/src/integrations/http/server-subscription.ts and node/src/integrations/http/httpServerSpansIntegration.ts
net.transportnetwork.transportcore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, server-utils/src/integrations/knex.ts

GenAI Attributes (gen_ai.*)

All AI instrumentation moved to packages/server-utils/src/ai/ and grew from 2 providers to 7+. These are set via the deprecated constants from @sentry/conventions/attributes.

Deprecated AttributeReplacementFiles (Source Code)
gen_ai.promptgen_ai.input.messagesserver-utils/src/ai/anthropic-ai/index.ts
gen_ai.response.textgen_ai.output.messagesserver-utils/src/ai/anthropic-ai/index.ts, server-utils/src/ai/core/utils.ts, server-utils/src/ai/google-genai/index.ts, server-utils/src/ai/langchain/utils.ts, server-utils/src/ai/langgraph/utils.ts, server-utils/src/ai/openai/utils.ts, server-utils/src/ai/workers-ai/utils.ts
gen_ai.response.tool_callsgen_ai.output.messagessame set as gen_ai.response.text

Caveat documented in server-utils/src/ai/workers-ai/utils.ts: Relay migrates gen_ai.response.text into gen_ai.output.messages, but not the tool-calls half — so dropping gen_ai.response.tool_calls needs product-side coordination before it can be removed.


Other Deprecated Attributes

Deprecated AttributeReplacementFiles (Source Code)
fs_errorerror.typenode/src/integrations/fs/vendored/instrumentation.ts (L313)

Already resolved since the original audit

These rows from the original audit no longer apply and were removed:

  • ai.model.provider — no longer emitted; Vercel AI now sets gen_ai.provider.name plus the non-deprecated vercel.ai.model.provider. server-utils/src/ai/vercel-ai/index.ts even renames incoming gen_ai.systemgen_ai.provider.name.
  • http.url — zero occurrences left in packages/*/src; fully migrated to url.full.
  • gen_ai.request.messages/gen_ai.request.available_tools — zero occurrences left; migrated to gen_ai.input.messages / gen_ai.tool.definitions.
  • profile_id — migrated to sentry.profile_id (core/src/semanticAttributes.ts, core/src/tracing/spans/scopeContextAttributes.ts). Remaining profile_id hits are event/context payload fields, not span attributes.
  • replay_id — the span-attribute case is sentry.replay_id (replay-internal/src/integration.ts, browser-utils/src/web-vitals/spans.ts, core/src/logs/internal.ts, core/src/metrics/internal.ts). Remaining replay_id hits are DSC / feedback-context fields and doc comments, not span attributes.
  • The entire "OpenTelemetry Semantic Convention Constants Used (Deprecated)" section@opentelemetry/semantic-conventions and all SEMATTRS_* constants have been removed from the repo (zero hits in packages/ and dev-packages/). Everything now goes through @sentry/conventions/attributes.

Test fixtures

Beyond source, deprecated attributes are asserted on in integration test fixtures across dev-packages/node-integration-tests/suites/{tracing,express,aws-serverless}, dev-packages/deno-integration-tests/suites/orchestrion-* (mongo, mongoose, mysql, mysql2, postgres, tedious), dev-packages/browser-integration-tests/suites/{tracing,integrations}, dev-packages/bun-integration-tests/suites/fetch and dev-packages/cloudflare-integration-tests/suites/vite-autoinstrument. These will need updating alongside each source change.

Metadata

Metadata

Assignees

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Update span attributes to use @sentry/conventions #18895

Description

@Lms24

Description

For the next Major SDK version, we should stop sending attributes we deprecated in our conventions and (if not done already) replace them with their stable replacements.

Overall, we should likely move to our @sentry/conventions package generally and unify usage there. We need to make sure that we do not remove anything users may heavily rely on (or that this is backfilled or similar, …)

Locations marked (reads) only consume the deprecated attribute for back-compat and can likely stay (or be dropped last); everything else actively sets it.


AI Attributes (ai.*)

Deprecated AttributeReplacementFiles (Source Code)
ai.pipeline.namegen_ai.pipeline.nameserver-utils/src/ai/vercel-ai/index.ts (L424, raw string)
ai.streaminggen_ai.response.streamingserver-utils/src/ai/vercel-ai/index.ts (L437, raw string)

packages/server-utils/src/ai/langgraph/index.ts already uses GEN_AI_PIPELINE_NAME — Vercel AI is the only holdout.


Code Attributes (code.*)

Deprecated AttributeReplacementFiles (Source Code)
code.filepathcode.file.pathbrowser-utils/src/performance/entries.ts (L143, raw string)
code.functioncode.function.namebrowser-utils/src/performance/entries.ts (L146, raw string)

Note: as of @sentry/conventions@0.19.0, code.function is not yet flagged @deprecated (it and code.function.name are listed as aliases), but it will be deprecated in favor of code.function.name — so migrate it along with code.filepath. The packages/remix/src/server/integrations/opentelemetry.ts occurrence from the original audit is gone with the file.


Database Attributes (db.*)

Almost all of these moved into packages/server-utils/src/ when the OTel DB instrumentations were vendored. They are set via the deprecated @sentry/conventions constants (DB_SYSTEM, DB_STATEMENT, …) or via local ATTR_DB_* string constants.

Deprecated AttributeReplacementFiles (Source Code)
db.namedb.namespaceserver-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.operationdb.operation.namecore/src/integrations/supabase.ts (L280, L440, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.statementdb.query.textserver-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/prisma/tracing-helper.ts(reads)
db.systemdb.system.namecore/src/integrations/supabase.ts (L279, L439, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts, server-utils/src/prisma/tracing-helper.ts (backfill)
db.mongodb.collection (newly deprecated)db.collection.nameserver-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts

packages/server-utils/src/integrations/ioredis.ts and redis.ts already carry TODO(v11) comments for exactly this migration.

Note: db.user, db.connection_string and db.sql.table are not deprecated in @sentry/conventions@0.19.0 — no action needed there.


HTTP Attributes (http.*)

The old node-core HTTP integration is gone. Server-side HTTP attributes now live in packages/core/src/integrations/http/ and packages/node/src/integrations/http/httpServerSpansIntegration.ts (the latter sets them deliberately, guarded by eslint-disable typescript/no-deprecated, for compatibility with what @opentelemetry/instrumentation-http used to emit).

Deprecated AttributeReplacementFiles (Source Code)
http.client_ipclient.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.flavornetwork.protocol.versioncore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.hostserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.methodhttp.request.methodSets:browser/src/tracing/request.ts, browser/src/integrations/fetchStreamPerformance.ts, core/src/fetch.ts, core/src/integrations/http/add-outgoing-request-breadcrumb.ts, core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, core/src/types/request.ts (type), nestjs/src/integrations/wrap-route.ts, node/src/integrations/http/httpServerSpansIntegration.ts, node/src/utils/outgoingFetchRequest.ts, react-router/src/server/createServerInstrumentation.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/hapi-utils.ts, sveltekit/src/server-common/handle.ts, sveltekit/src/server-common/load.ts. Reads:browser/src/integrations/graphqlClient.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/edge/enhanceRunHandlerRootSpan.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/handleOnSpanStart.ts, server-utils/src/utils/setHttpServerSpanRouteAttribute.ts
http.response_content_lengthhttp.response.body.sizebrowser-utils/src/performance/entries.ts, core/src/fetch.ts, core/src/integrations/http/get-outgoing-span-data.ts
http.response_transfer_sizehttp.response.sizebrowser-utils/src/performance/entries.ts
http.schemeurl.schemecore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.status_codehttp.response.status_codeSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/aws-sdk/index.ts. Reads:nextjs/src/common/utils/backfillHttpResponseStatusCode.ts, nextjs/src/common/utils/backfillHttpServerStatus.ts
http.targeturl.pathSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts. Reads / filters:nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/common/utils/setUrlProcessingMetadata.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/index.ts, react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts, solidstart/src/server/withServerActionInstrumentation.ts, tanstackstart-react/src/server/tunnelRoute.ts
http.user_agentuser_agent.originalcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts

Network Attributes (net.*)

Deprecated AttributeReplacementFiles (Source Code)
net.host.ipnetwork.local.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.nameserver.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.portserver.portcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.ipnetwork.peer.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.nameserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, node/src/integrations/tracing/redis/cache.ts(reads), server-utils/src/integrations/amqplib.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
net.peer.portserver.portsame set as net.peer.name, plus core/src/integrations/http/server-subscription.ts and node/src/integrations/http/httpServerSpansIntegration.ts
net.transportnetwork.transportcore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, server-utils/src/integrations/knex.ts

GenAI Attributes (gen_ai.*)

All AI instrumentation moved to packages/server-utils/src/ai/ and grew from 2 providers to 7+. These are set via the deprecated constants from @sentry/conventions/attributes.

Deprecated AttributeReplacementFiles (Source Code)
gen_ai.promptgen_ai.input.messagesserver-utils/src/ai/anthropic-ai/index.ts
gen_ai.response.textgen_ai.output.messagesserver-utils/src/ai/anthropic-ai/index.ts, server-utils/src/ai/core/utils.ts, server-utils/src/ai/google-genai/index.ts, server-utils/src/ai/langchain/utils.ts, server-utils/src/ai/langgraph/utils.ts, server-utils/src/ai/openai/utils.ts, server-utils/src/ai/workers-ai/utils.ts
gen_ai.response.tool_callsgen_ai.output.messagessame set as gen_ai.response.text

Caveat documented in server-utils/src/ai/workers-ai/utils.ts: Relay migrates gen_ai.response.text into gen_ai.output.messages, but not the tool-calls half — so dropping gen_ai.response.tool_calls needs product-side coordination before it can be removed.


Other Deprecated Attributes

Deprecated AttributeReplacementFiles (Source Code)
fs_errorerror.typenode/src/integrations/fs/vendored/instrumentation.ts (L313)

Already resolved since the original audit

These rows from the original audit no longer apply and were removed:

  • ai.model.provider — no longer emitted; Vercel AI now sets gen_ai.provider.name plus the non-deprecated vercel.ai.model.provider. server-utils/src/ai/vercel-ai/index.ts even renames incoming gen_ai.systemgen_ai.provider.name.
  • http.url — zero occurrences left in packages/*/src; fully migrated to url.full.
  • gen_ai.request.messages/gen_ai.request.available_tools — zero occurrences left; migrated to gen_ai.input.messages / gen_ai.tool.definitions.
  • profile_id — migrated to sentry.profile_id (core/src/semanticAttributes.ts, core/src/tracing/spans/scopeContextAttributes.ts). Remaining profile_id hits are event/context payload fields, not span attributes.
  • replay_id — the span-attribute case is sentry.replay_id (replay-internal/src/integration.ts, browser-utils/src/web-vitals/spans.ts, core/src/logs/internal.ts, core/src/metrics/internal.ts). Remaining replay_id hits are DSC / feedback-context fields and doc comments, not span attributes.
  • The entire "OpenTelemetry Semantic Convention Constants Used (Deprecated)" section@opentelemetry/semantic-conventions and all SEMATTRS_* constants have been removed from the repo (zero hits in packages/ and dev-packages/). Everything now goes through @sentry/conventions/attributes.

Test fixtures

Beyond source, deprecated attributes are asserted on in integration test fixtures across dev-packages/node-integration-tests/suites/{tracing,express,aws-serverless}, dev-packages/deno-integration-tests/suites/orchestrion-* (mongo, mongoose, mysql, mysql2, postgres, tedious), dev-packages/browser-integration-tests/suites/{tracing,integrations}, dev-packages/bun-integration-tests/suites/fetch and dev-packages/cloudflare-integration-tests/suites/vite-autoinstrument. These will need updating alongside each source change.

Metadata

Metadata

Assignees

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update span attributes to use @sentry/conventions #18895

Description

@Lms24

Description

For the next Major SDK version, we should stop sending attributes we deprecated in our conventions and (if not done already) replace them with their stable replacements.

Overall, we should likely move to our @sentry/conventions package generally and unify usage there. We need to make sure that we do not remove anything users may heavily rely on (or that this is backfilled or similar, …)

Locations marked (reads) only consume the deprecated attribute for back-compat and can likely stay (or be dropped last); everything else actively sets it.


AI Attributes (ai.*)

Deprecated AttributeReplacementFiles (Source Code)
ai.pipeline.namegen_ai.pipeline.nameserver-utils/src/ai/vercel-ai/index.ts (L424, raw string)
ai.streaminggen_ai.response.streamingserver-utils/src/ai/vercel-ai/index.ts (L437, raw string)

packages/server-utils/src/ai/langgraph/index.ts already uses GEN_AI_PIPELINE_NAME — Vercel AI is the only holdout.


Code Attributes (code.*)

Deprecated AttributeReplacementFiles (Source Code)
code.filepathcode.file.pathbrowser-utils/src/performance/entries.ts (L143, raw string)
code.functioncode.function.namebrowser-utils/src/performance/entries.ts (L146, raw string)

Note: as of @sentry/conventions@0.19.0, code.function is not yet flagged @deprecated (it and code.function.name are listed as aliases), but it will be deprecated in favor of code.function.name — so migrate it along with code.filepath. The packages/remix/src/server/integrations/opentelemetry.ts occurrence from the original audit is gone with the file.


Database Attributes (db.*)

Almost all of these moved into packages/server-utils/src/ when the OTel DB instrumentations were vendored. They are set via the deprecated @sentry/conventions constants (DB_SYSTEM, DB_STATEMENT, …) or via local ATTR_DB_* string constants.

Deprecated AttributeReplacementFiles (Source Code)
db.namedb.namespaceserver-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.operationdb.operation.namecore/src/integrations/supabase.ts (L280, L440, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.statementdb.query.textserver-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/prisma/tracing-helper.ts(reads)
db.systemdb.system.namecore/src/integrations/supabase.ts (L279, L439, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts, server-utils/src/prisma/tracing-helper.ts (backfill)
db.mongodb.collection (newly deprecated)db.collection.nameserver-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts

packages/server-utils/src/integrations/ioredis.ts and redis.ts already carry TODO(v11) comments for exactly this migration.

Note: db.user, db.connection_string and db.sql.table are not deprecated in @sentry/conventions@0.19.0 — no action needed there.


HTTP Attributes (http.*)

The old node-core HTTP integration is gone. Server-side HTTP attributes now live in packages/core/src/integrations/http/ and packages/node/src/integrations/http/httpServerSpansIntegration.ts (the latter sets them deliberately, guarded by eslint-disable typescript/no-deprecated, for compatibility with what @opentelemetry/instrumentation-http used to emit).

Deprecated AttributeReplacementFiles (Source Code)
http.client_ipclient.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.flavornetwork.protocol.versioncore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.hostserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.methodhttp.request.methodSets:browser/src/tracing/request.ts, browser/src/integrations/fetchStreamPerformance.ts, core/src/fetch.ts, core/src/integrations/http/add-outgoing-request-breadcrumb.ts, core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, core/src/types/request.ts (type), nestjs/src/integrations/wrap-route.ts, node/src/integrations/http/httpServerSpansIntegration.ts, node/src/utils/outgoingFetchRequest.ts, react-router/src/server/createServerInstrumentation.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/hapi-utils.ts, sveltekit/src/server-common/handle.ts, sveltekit/src/server-common/load.ts. Reads:browser/src/integrations/graphqlClient.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/edge/enhanceRunHandlerRootSpan.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/handleOnSpanStart.ts, server-utils/src/utils/setHttpServerSpanRouteAttribute.ts
http.response_content_lengthhttp.response.body.sizebrowser-utils/src/performance/entries.ts, core/src/fetch.ts, core/src/integrations/http/get-outgoing-span-data.ts
http.response_transfer_sizehttp.response.sizebrowser-utils/src/performance/entries.ts
http.schemeurl.schemecore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.status_codehttp.response.status_codeSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/aws-sdk/index.ts. Reads:nextjs/src/common/utils/backfillHttpResponseStatusCode.ts, nextjs/src/common/utils/backfillHttpServerStatus.ts
http.targeturl.pathSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts. Reads / filters:nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/common/utils/setUrlProcessingMetadata.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/index.ts, react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts, solidstart/src/server/withServerActionInstrumentation.ts, tanstackstart-react/src/server/tunnelRoute.ts
http.user_agentuser_agent.originalcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts

Network Attributes (net.*)

Deprecated AttributeReplacementFiles (Source Code)
net.host.ipnetwork.local.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.nameserver.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.portserver.portcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.ipnetwork.peer.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.nameserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, node/src/integrations/tracing/redis/cache.ts(reads), server-utils/src/integrations/amqplib.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
net.peer.portserver.portsame set as net.peer.name, plus core/src/integrations/http/server-subscription.ts and node/src/integrations/http/httpServerSpansIntegration.ts
net.transportnetwork.transportcore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, server-utils/src/integrations/knex.ts

GenAI Attributes (gen_ai.*)

All AI instrumentation moved to packages/server-utils/src/ai/ and grew from 2 providers to 7+. These are set via the deprecated constants from @sentry/conventions/attributes.

Deprecated AttributeReplacementFiles (Source Code)
gen_ai.promptgen_ai.input.messagesserver-utils/src/ai/anthropic-ai/index.ts
gen_ai.response.textgen_ai.output.messagesserver-utils/src/ai/anthropic-ai/index.ts, server-utils/src/ai/core/utils.ts, server-utils/src/ai/google-genai/index.ts, server-utils/src/ai/langchain/utils.ts, server-utils/src/ai/langgraph/utils.ts, server-utils/src/ai/openai/utils.ts, server-utils/src/ai/workers-ai/utils.ts
gen_ai.response.tool_callsgen_ai.output.messagessame set as gen_ai.response.text

Caveat documented in server-utils/src/ai/workers-ai/utils.ts: Relay migrates gen_ai.response.text into gen_ai.output.messages, but not the tool-calls half — so dropping gen_ai.response.tool_calls needs product-side coordination before it can be removed.


Other Deprecated Attributes

Deprecated AttributeReplacementFiles (Source Code)
fs_errorerror.typenode/src/integrations/fs/vendored/instrumentation.ts (L313)

Already resolved since the original audit

These rows from the original audit no longer apply and were removed:

  • ai.model.provider — no longer emitted; Vercel AI now sets gen_ai.provider.name plus the non-deprecated vercel.ai.model.provider. server-utils/src/ai/vercel-ai/index.ts even renames incoming gen_ai.systemgen_ai.provider.name.
  • http.url — zero occurrences left in packages/*/src; fully migrated to url.full.
  • gen_ai.request.messages/gen_ai.request.available_tools — zero occurrences left; migrated to gen_ai.input.messages / gen_ai.tool.definitions.
  • profile_id — migrated to sentry.profile_id (core/src/semanticAttributes.ts, core/src/tracing/spans/scopeContextAttributes.ts). Remaining profile_id hits are event/context payload fields, not span attributes.
  • replay_id — the span-attribute case is sentry.replay_id (replay-internal/src/integration.ts, browser-utils/src/web-vitals/spans.ts, core/src/logs/internal.ts, core/src/metrics/internal.ts). Remaining replay_id hits are DSC / feedback-context fields and doc comments, not span attributes.
  • The entire "OpenTelemetry Semantic Convention Constants Used (Deprecated)" section@opentelemetry/semantic-conventions and all SEMATTRS_* constants have been removed from the repo (zero hits in packages/ and dev-packages/). Everything now goes through @sentry/conventions/attributes.

Test fixtures

Beyond source, deprecated attributes are asserted on in integration test fixtures across dev-packages/node-integration-tests/suites/{tracing,express,aws-serverless}, dev-packages/deno-integration-tests/suites/orchestrion-* (mongo, mongoose, mysql, mysql2, postgres, tedious), dev-packages/browser-integration-tests/suites/{tracing,integrations}, dev-packages/bun-integration-tests/suites/fetch and dev-packages/cloudflare-integration-tests/suites/vite-autoinstrument. These will need updating alongside each source change.

Metadata

Metadata

Assignees

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update span attributes to use @sentry/conventions #18895

Description

@Lms24

Description

For the next Major SDK version, we should stop sending attributes we deprecated in our conventions and (if not done already) replace them with their stable replacements.

Overall, we should likely move to our @sentry/conventions package generally and unify usage there. We need to make sure that we do not remove anything users may heavily rely on (or that this is backfilled or similar, …)

Locations marked (reads) only consume the deprecated attribute for back-compat and can likely stay (or be dropped last); everything else actively sets it.


AI Attributes (ai.*)

Deprecated AttributeReplacementFiles (Source Code)
ai.pipeline.namegen_ai.pipeline.nameserver-utils/src/ai/vercel-ai/index.ts (L424, raw string)
ai.streaminggen_ai.response.streamingserver-utils/src/ai/vercel-ai/index.ts (L437, raw string)

packages/server-utils/src/ai/langgraph/index.ts already uses GEN_AI_PIPELINE_NAME — Vercel AI is the only holdout.


Code Attributes (code.*)

Deprecated AttributeReplacementFiles (Source Code)
code.filepathcode.file.pathbrowser-utils/src/performance/entries.ts (L143, raw string)
code.functioncode.function.namebrowser-utils/src/performance/entries.ts (L146, raw string)

Note: as of @sentry/conventions@0.19.0, code.function is not yet flagged @deprecated (it and code.function.name are listed as aliases), but it will be deprecated in favor of code.function.name — so migrate it along with code.filepath. The packages/remix/src/server/integrations/opentelemetry.ts occurrence from the original audit is gone with the file.


Database Attributes (db.*)

Almost all of these moved into packages/server-utils/src/ when the OTel DB instrumentations were vendored. They are set via the deprecated @sentry/conventions constants (DB_SYSTEM, DB_STATEMENT, …) or via local ATTR_DB_* string constants.

Deprecated AttributeReplacementFiles (Source Code)
db.namedb.namespaceserver-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.operationdb.operation.namecore/src/integrations/supabase.ts (L280, L440, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.statementdb.query.textserver-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/prisma/tracing-helper.ts(reads)
db.systemdb.system.namecore/src/integrations/supabase.ts (L279, L439, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts, server-utils/src/prisma/tracing-helper.ts (backfill)
db.mongodb.collection (newly deprecated)db.collection.nameserver-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts

packages/server-utils/src/integrations/ioredis.ts and redis.ts already carry TODO(v11) comments for exactly this migration.

Note: db.user, db.connection_string and db.sql.table are not deprecated in @sentry/conventions@0.19.0 — no action needed there.


HTTP Attributes (http.*)

The old node-core HTTP integration is gone. Server-side HTTP attributes now live in packages/core/src/integrations/http/ and packages/node/src/integrations/http/httpServerSpansIntegration.ts (the latter sets them deliberately, guarded by eslint-disable typescript/no-deprecated, for compatibility with what @opentelemetry/instrumentation-http used to emit).

Deprecated AttributeReplacementFiles (Source Code)
http.client_ipclient.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.flavornetwork.protocol.versioncore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.hostserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.methodhttp.request.methodSets:browser/src/tracing/request.ts, browser/src/integrations/fetchStreamPerformance.ts, core/src/fetch.ts, core/src/integrations/http/add-outgoing-request-breadcrumb.ts, core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, core/src/types/request.ts (type), nestjs/src/integrations/wrap-route.ts, node/src/integrations/http/httpServerSpansIntegration.ts, node/src/utils/outgoingFetchRequest.ts, react-router/src/server/createServerInstrumentation.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/hapi-utils.ts, sveltekit/src/server-common/handle.ts, sveltekit/src/server-common/load.ts. Reads:browser/src/integrations/graphqlClient.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/edge/enhanceRunHandlerRootSpan.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/handleOnSpanStart.ts, server-utils/src/utils/setHttpServerSpanRouteAttribute.ts
http.response_content_lengthhttp.response.body.sizebrowser-utils/src/performance/entries.ts, core/src/fetch.ts, core/src/integrations/http/get-outgoing-span-data.ts
http.response_transfer_sizehttp.response.sizebrowser-utils/src/performance/entries.ts
http.schemeurl.schemecore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.status_codehttp.response.status_codeSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/aws-sdk/index.ts. Reads:nextjs/src/common/utils/backfillHttpResponseStatusCode.ts, nextjs/src/common/utils/backfillHttpServerStatus.ts
http.targeturl.pathSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts. Reads / filters:nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/common/utils/setUrlProcessingMetadata.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/index.ts, react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts, solidstart/src/server/withServerActionInstrumentation.ts, tanstackstart-react/src/server/tunnelRoute.ts
http.user_agentuser_agent.originalcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts

Network Attributes (net.*)

Deprecated AttributeReplacementFiles (Source Code)
net.host.ipnetwork.local.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.nameserver.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.portserver.portcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.ipnetwork.peer.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.nameserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, node/src/integrations/tracing/redis/cache.ts(reads), server-utils/src/integrations/amqplib.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
net.peer.portserver.portsame set as net.peer.name, plus core/src/integrations/http/server-subscription.ts and node/src/integrations/http/httpServerSpansIntegration.ts
net.transportnetwork.transportcore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, server-utils/src/integrations/knex.ts

GenAI Attributes (gen_ai.*)

All AI instrumentation moved to packages/server-utils/src/ai/ and grew from 2 providers to 7+. These are set via the deprecated constants from @sentry/conventions/attributes.

Deprecated AttributeReplacementFiles (Source Code)
gen_ai.promptgen_ai.input.messagesserver-utils/src/ai/anthropic-ai/index.ts
gen_ai.response.textgen_ai.output.messagesserver-utils/src/ai/anthropic-ai/index.ts, server-utils/src/ai/core/utils.ts, server-utils/src/ai/google-genai/index.ts, server-utils/src/ai/langchain/utils.ts, server-utils/src/ai/langgraph/utils.ts, server-utils/src/ai/openai/utils.ts, server-utils/src/ai/workers-ai/utils.ts
gen_ai.response.tool_callsgen_ai.output.messagessame set as gen_ai.response.text

Caveat documented in server-utils/src/ai/workers-ai/utils.ts: Relay migrates gen_ai.response.text into gen_ai.output.messages, but not the tool-calls half — so dropping gen_ai.response.tool_calls needs product-side coordination before it can be removed.


Other Deprecated Attributes

Deprecated AttributeReplacementFiles (Source Code)
fs_errorerror.typenode/src/integrations/fs/vendored/instrumentation.ts (L313)

Already resolved since the original audit

These rows from the original audit no longer apply and were removed:

  • ai.model.provider — no longer emitted; Vercel AI now sets gen_ai.provider.name plus the non-deprecated vercel.ai.model.provider. server-utils/src/ai/vercel-ai/index.ts even renames incoming gen_ai.systemgen_ai.provider.name.
  • http.url — zero occurrences left in packages/*/src; fully migrated to url.full.
  • gen_ai.request.messages/gen_ai.request.available_tools — zero occurrences left; migrated to gen_ai.input.messages / gen_ai.tool.definitions.
  • profile_id — migrated to sentry.profile_id (core/src/semanticAttributes.ts, core/src/tracing/spans/scopeContextAttributes.ts). Remaining profile_id hits are event/context payload fields, not span attributes.
  • replay_id — the span-attribute case is sentry.replay_id (replay-internal/src/integration.ts, browser-utils/src/web-vitals/spans.ts, core/src/logs/internal.ts, core/src/metrics/internal.ts). Remaining replay_id hits are DSC / feedback-context fields and doc comments, not span attributes.
  • The entire "OpenTelemetry Semantic Convention Constants Used (Deprecated)" section@opentelemetry/semantic-conventions and all SEMATTRS_* constants have been removed from the repo (zero hits in packages/ and dev-packages/). Everything now goes through @sentry/conventions/attributes.

Test fixtures

Beyond source, deprecated attributes are asserted on in integration test fixtures across dev-packages/node-integration-tests/suites/{tracing,express,aws-serverless}, dev-packages/deno-integration-tests/suites/orchestrion-* (mongo, mongoose, mysql, mysql2, postgres, tedious), dev-packages/browser-integration-tests/suites/{tracing,integrations}, dev-packages/bun-integration-tests/suites/fetch and dev-packages/cloudflare-integration-tests/suites/vite-autoinstrument. These will need updating alongside each source change.

Metadata

Metadata

Assignees

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Update span attributes to use @sentry/conventions #18895

Description

@Lms24

Description

For the next Major SDK version, we should stop sending attributes we deprecated in our conventions and (if not done already) replace them with their stable replacements.

Overall, we should likely move to our @sentry/conventions package generally and unify usage there. We need to make sure that we do not remove anything users may heavily rely on (or that this is backfilled or similar, …)

Locations marked (reads) only consume the deprecated attribute for back-compat and can likely stay (or be dropped last); everything else actively sets it.


AI Attributes (ai.*)

Deprecated AttributeReplacementFiles (Source Code)
ai.pipeline.namegen_ai.pipeline.nameserver-utils/src/ai/vercel-ai/index.ts (L424, raw string)
ai.streaminggen_ai.response.streamingserver-utils/src/ai/vercel-ai/index.ts (L437, raw string)

packages/server-utils/src/ai/langgraph/index.ts already uses GEN_AI_PIPELINE_NAME — Vercel AI is the only holdout.


Code Attributes (code.*)

Deprecated AttributeReplacementFiles (Source Code)
code.filepathcode.file.pathbrowser-utils/src/performance/entries.ts (L143, raw string)
code.functioncode.function.namebrowser-utils/src/performance/entries.ts (L146, raw string)

Note: as of @sentry/conventions@0.19.0, code.function is not yet flagged @deprecated (it and code.function.name are listed as aliases), but it will be deprecated in favor of code.function.name — so migrate it along with code.filepath. The packages/remix/src/server/integrations/opentelemetry.ts occurrence from the original audit is gone with the file.


Database Attributes (db.*)

Almost all of these moved into packages/server-utils/src/ when the OTel DB instrumentations were vendored. They are set via the deprecated @sentry/conventions constants (DB_SYSTEM, DB_STATEMENT, …) or via local ATTR_DB_* string constants.

Deprecated AttributeReplacementFiles (Source Code)
db.namedb.namespaceserver-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.operationdb.operation.namecore/src/integrations/supabase.ts (L280, L440, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.statementdb.query.textserver-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/prisma/tracing-helper.ts(reads)
db.systemdb.system.namecore/src/integrations/supabase.ts (L279, L439, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts, server-utils/src/prisma/tracing-helper.ts (backfill)
db.mongodb.collection (newly deprecated)db.collection.nameserver-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts

packages/server-utils/src/integrations/ioredis.ts and redis.ts already carry TODO(v11) comments for exactly this migration.

Note: db.user, db.connection_string and db.sql.table are not deprecated in @sentry/conventions@0.19.0 — no action needed there.


HTTP Attributes (http.*)

The old node-core HTTP integration is gone. Server-side HTTP attributes now live in packages/core/src/integrations/http/ and packages/node/src/integrations/http/httpServerSpansIntegration.ts (the latter sets them deliberately, guarded by eslint-disable typescript/no-deprecated, for compatibility with what @opentelemetry/instrumentation-http used to emit).

Deprecated AttributeReplacementFiles (Source Code)
http.client_ipclient.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.flavornetwork.protocol.versioncore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.hostserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.methodhttp.request.methodSets:browser/src/tracing/request.ts, browser/src/integrations/fetchStreamPerformance.ts, core/src/fetch.ts, core/src/integrations/http/add-outgoing-request-breadcrumb.ts, core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, core/src/types/request.ts (type), nestjs/src/integrations/wrap-route.ts, node/src/integrations/http/httpServerSpansIntegration.ts, node/src/utils/outgoingFetchRequest.ts, react-router/src/server/createServerInstrumentation.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/hapi-utils.ts, sveltekit/src/server-common/handle.ts, sveltekit/src/server-common/load.ts. Reads:browser/src/integrations/graphqlClient.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/edge/enhanceRunHandlerRootSpan.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/handleOnSpanStart.ts, server-utils/src/utils/setHttpServerSpanRouteAttribute.ts
http.response_content_lengthhttp.response.body.sizebrowser-utils/src/performance/entries.ts, core/src/fetch.ts, core/src/integrations/http/get-outgoing-span-data.ts
http.response_transfer_sizehttp.response.sizebrowser-utils/src/performance/entries.ts
http.schemeurl.schemecore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.status_codehttp.response.status_codeSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/aws-sdk/index.ts. Reads:nextjs/src/common/utils/backfillHttpResponseStatusCode.ts, nextjs/src/common/utils/backfillHttpServerStatus.ts
http.targeturl.pathSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts. Reads / filters:nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/common/utils/setUrlProcessingMetadata.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/index.ts, react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts, solidstart/src/server/withServerActionInstrumentation.ts, tanstackstart-react/src/server/tunnelRoute.ts
http.user_agentuser_agent.originalcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts

Network Attributes (net.*)

Deprecated AttributeReplacementFiles (Source Code)
net.host.ipnetwork.local.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.nameserver.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.portserver.portcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.ipnetwork.peer.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.nameserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, node/src/integrations/tracing/redis/cache.ts(reads), server-utils/src/integrations/amqplib.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
net.peer.portserver.portsame set as net.peer.name, plus core/src/integrations/http/server-subscription.ts and node/src/integrations/http/httpServerSpansIntegration.ts
net.transportnetwork.transportcore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, server-utils/src/integrations/knex.ts

GenAI Attributes (gen_ai.*)

All AI instrumentation moved to packages/server-utils/src/ai/ and grew from 2 providers to 7+. These are set via the deprecated constants from @sentry/conventions/attributes.

Deprecated AttributeReplacementFiles (Source Code)
gen_ai.promptgen_ai.input.messagesserver-utils/src/ai/anthropic-ai/index.ts
gen_ai.response.textgen_ai.output.messagesserver-utils/src/ai/anthropic-ai/index.ts, server-utils/src/ai/core/utils.ts, server-utils/src/ai/google-genai/index.ts, server-utils/src/ai/langchain/utils.ts, server-utils/src/ai/langgraph/utils.ts, server-utils/src/ai/openai/utils.ts, server-utils/src/ai/workers-ai/utils.ts
gen_ai.response.tool_callsgen_ai.output.messagessame set as gen_ai.response.text

Caveat documented in server-utils/src/ai/workers-ai/utils.ts: Relay migrates gen_ai.response.text into gen_ai.output.messages, but not the tool-calls half — so dropping gen_ai.response.tool_calls needs product-side coordination before it can be removed.


Other Deprecated Attributes

Deprecated AttributeReplacementFiles (Source Code)
fs_errorerror.typenode/src/integrations/fs/vendored/instrumentation.ts (L313)

Already resolved since the original audit

These rows from the original audit no longer apply and were removed:

  • ai.model.provider — no longer emitted; Vercel AI now sets gen_ai.provider.name plus the non-deprecated vercel.ai.model.provider. server-utils/src/ai/vercel-ai/index.ts even renames incoming gen_ai.systemgen_ai.provider.name.
  • http.url — zero occurrences left in packages/*/src; fully migrated to url.full.
  • gen_ai.request.messages/gen_ai.request.available_tools — zero occurrences left; migrated to gen_ai.input.messages / gen_ai.tool.definitions.
  • profile_id — migrated to sentry.profile_id (core/src/semanticAttributes.ts, core/src/tracing/spans/scopeContextAttributes.ts). Remaining profile_id hits are event/context payload fields, not span attributes.
  • replay_id — the span-attribute case is sentry.replay_id (replay-internal/src/integration.ts, browser-utils/src/web-vitals/spans.ts, core/src/logs/internal.ts, core/src/metrics/internal.ts). Remaining replay_id hits are DSC / feedback-context fields and doc comments, not span attributes.
  • The entire "OpenTelemetry Semantic Convention Constants Used (Deprecated)" section@opentelemetry/semantic-conventions and all SEMATTRS_* constants have been removed from the repo (zero hits in packages/ and dev-packages/). Everything now goes through @sentry/conventions/attributes.

Test fixtures

Beyond source, deprecated attributes are asserted on in integration test fixtures across dev-packages/node-integration-tests/suites/{tracing,express,aws-serverless}, dev-packages/deno-integration-tests/suites/orchestrion-* (mongo, mongoose, mysql, mysql2, postgres, tedious), dev-packages/browser-integration-tests/suites/{tracing,integrations}, dev-packages/bun-integration-tests/suites/fetch and dev-packages/cloudflare-integration-tests/suites/vite-autoinstrument. These will need updating alongside each source change.

Metadata

Metadata

Assignees

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update span attributes to use @sentry/conventions #18895

Description

@Lms24

Description

For the next Major SDK version, we should stop sending attributes we deprecated in our conventions and (if not done already) replace them with their stable replacements.

Overall, we should likely move to our @sentry/conventions package generally and unify usage there. We need to make sure that we do not remove anything users may heavily rely on (or that this is backfilled or similar, …)

Locations marked (reads) only consume the deprecated attribute for back-compat and can likely stay (or be dropped last); everything else actively sets it.


AI Attributes (ai.*)

Deprecated AttributeReplacementFiles (Source Code)
ai.pipeline.namegen_ai.pipeline.nameserver-utils/src/ai/vercel-ai/index.ts (L424, raw string)
ai.streaminggen_ai.response.streamingserver-utils/src/ai/vercel-ai/index.ts (L437, raw string)

packages/server-utils/src/ai/langgraph/index.ts already uses GEN_AI_PIPELINE_NAME — Vercel AI is the only holdout.


Code Attributes (code.*)

Deprecated AttributeReplacementFiles (Source Code)
code.filepathcode.file.pathbrowser-utils/src/performance/entries.ts (L143, raw string)
code.functioncode.function.namebrowser-utils/src/performance/entries.ts (L146, raw string)

Note: as of @sentry/conventions@0.19.0, code.function is not yet flagged @deprecated (it and code.function.name are listed as aliases), but it will be deprecated in favor of code.function.name — so migrate it along with code.filepath. The packages/remix/src/server/integrations/opentelemetry.ts occurrence from the original audit is gone with the file.


Database Attributes (db.*)

Almost all of these moved into packages/server-utils/src/ when the OTel DB instrumentations were vendored. They are set via the deprecated @sentry/conventions constants (DB_SYSTEM, DB_STATEMENT, …) or via local ATTR_DB_* string constants.

Deprecated AttributeReplacementFiles (Source Code)
db.namedb.namespaceserver-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.operationdb.operation.namecore/src/integrations/supabase.ts (L280, L440, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.statementdb.query.textserver-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/prisma/tracing-helper.ts(reads)
db.systemdb.system.namecore/src/integrations/supabase.ts (L279, L439, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts, server-utils/src/prisma/tracing-helper.ts (backfill)
db.mongodb.collection (newly deprecated)db.collection.nameserver-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts

packages/server-utils/src/integrations/ioredis.ts and redis.ts already carry TODO(v11) comments for exactly this migration.

Note: db.user, db.connection_string and db.sql.table are not deprecated in @sentry/conventions@0.19.0 — no action needed there.


HTTP Attributes (http.*)

The old node-core HTTP integration is gone. Server-side HTTP attributes now live in packages/core/src/integrations/http/ and packages/node/src/integrations/http/httpServerSpansIntegration.ts (the latter sets them deliberately, guarded by eslint-disable typescript/no-deprecated, for compatibility with what @opentelemetry/instrumentation-http used to emit).

Deprecated AttributeReplacementFiles (Source Code)
http.client_ipclient.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.flavornetwork.protocol.versioncore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.hostserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.methodhttp.request.methodSets:browser/src/tracing/request.ts, browser/src/integrations/fetchStreamPerformance.ts, core/src/fetch.ts, core/src/integrations/http/add-outgoing-request-breadcrumb.ts, core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, core/src/types/request.ts (type), nestjs/src/integrations/wrap-route.ts, node/src/integrations/http/httpServerSpansIntegration.ts, node/src/utils/outgoingFetchRequest.ts, react-router/src/server/createServerInstrumentation.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/hapi-utils.ts, sveltekit/src/server-common/handle.ts, sveltekit/src/server-common/load.ts. Reads:browser/src/integrations/graphqlClient.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/edge/enhanceRunHandlerRootSpan.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/handleOnSpanStart.ts, server-utils/src/utils/setHttpServerSpanRouteAttribute.ts
http.response_content_lengthhttp.response.body.sizebrowser-utils/src/performance/entries.ts, core/src/fetch.ts, core/src/integrations/http/get-outgoing-span-data.ts
http.response_transfer_sizehttp.response.sizebrowser-utils/src/performance/entries.ts
http.schemeurl.schemecore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.status_codehttp.response.status_codeSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/aws-sdk/index.ts. Reads:nextjs/src/common/utils/backfillHttpResponseStatusCode.ts, nextjs/src/common/utils/backfillHttpServerStatus.ts
http.targeturl.pathSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts. Reads / filters:nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/common/utils/setUrlProcessingMetadata.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/index.ts, react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts, solidstart/src/server/withServerActionInstrumentation.ts, tanstackstart-react/src/server/tunnelRoute.ts
http.user_agentuser_agent.originalcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts

Network Attributes (net.*)

Deprecated AttributeReplacementFiles (Source Code)
net.host.ipnetwork.local.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.nameserver.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.portserver.portcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.ipnetwork.peer.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.nameserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, node/src/integrations/tracing/redis/cache.ts(reads), server-utils/src/integrations/amqplib.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
net.peer.portserver.portsame set as net.peer.name, plus core/src/integrations/http/server-subscription.ts and node/src/integrations/http/httpServerSpansIntegration.ts
net.transportnetwork.transportcore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, server-utils/src/integrations/knex.ts

GenAI Attributes (gen_ai.*)

All AI instrumentation moved to packages/server-utils/src/ai/ and grew from 2 providers to 7+. These are set via the deprecated constants from @sentry/conventions/attributes.

Deprecated AttributeReplacementFiles (Source Code)
gen_ai.promptgen_ai.input.messagesserver-utils/src/ai/anthropic-ai/index.ts
gen_ai.response.textgen_ai.output.messagesserver-utils/src/ai/anthropic-ai/index.ts, server-utils/src/ai/core/utils.ts, server-utils/src/ai/google-genai/index.ts, server-utils/src/ai/langchain/utils.ts, server-utils/src/ai/langgraph/utils.ts, server-utils/src/ai/openai/utils.ts, server-utils/src/ai/workers-ai/utils.ts
gen_ai.response.tool_callsgen_ai.output.messagessame set as gen_ai.response.text

Caveat documented in server-utils/src/ai/workers-ai/utils.ts: Relay migrates gen_ai.response.text into gen_ai.output.messages, but not the tool-calls half — so dropping gen_ai.response.tool_calls needs product-side coordination before it can be removed.


Other Deprecated Attributes

Deprecated AttributeReplacementFiles (Source Code)
fs_errorerror.typenode/src/integrations/fs/vendored/instrumentation.ts (L313)

Already resolved since the original audit

These rows from the original audit no longer apply and were removed:

  • ai.model.provider — no longer emitted; Vercel AI now sets gen_ai.provider.name plus the non-deprecated vercel.ai.model.provider. server-utils/src/ai/vercel-ai/index.ts even renames incoming gen_ai.systemgen_ai.provider.name.
  • http.url — zero occurrences left in packages/*/src; fully migrated to url.full.
  • gen_ai.request.messages/gen_ai.request.available_tools — zero occurrences left; migrated to gen_ai.input.messages / gen_ai.tool.definitions.
  • profile_id — migrated to sentry.profile_id (core/src/semanticAttributes.ts, core/src/tracing/spans/scopeContextAttributes.ts). Remaining profile_id hits are event/context payload fields, not span attributes.
  • replay_id — the span-attribute case is sentry.replay_id (replay-internal/src/integration.ts, browser-utils/src/web-vitals/spans.ts, core/src/logs/internal.ts, core/src/metrics/internal.ts). Remaining replay_id hits are DSC / feedback-context fields and doc comments, not span attributes.
  • The entire "OpenTelemetry Semantic Convention Constants Used (Deprecated)" section@opentelemetry/semantic-conventions and all SEMATTRS_* constants have been removed from the repo (zero hits in packages/ and dev-packages/). Everything now goes through @sentry/conventions/attributes.

Test fixtures

Beyond source, deprecated attributes are asserted on in integration test fixtures across dev-packages/node-integration-tests/suites/{tracing,express,aws-serverless}, dev-packages/deno-integration-tests/suites/orchestrion-* (mongo, mongoose, mysql, mysql2, postgres, tedious), dev-packages/browser-integration-tests/suites/{tracing,integrations}, dev-packages/bun-integration-tests/suites/fetch and dev-packages/cloudflare-integration-tests/suites/vite-autoinstrument. These will need updating alongside each source change.

Metadata

Metadata

Assignees

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update span attributes to use @sentry/conventions #18895

Description

@Lms24

Description

For the next Major SDK version, we should stop sending attributes we deprecated in our conventions and (if not done already) replace them with their stable replacements.

Overall, we should likely move to our @sentry/conventions package generally and unify usage there. We need to make sure that we do not remove anything users may heavily rely on (or that this is backfilled or similar, …)

Locations marked (reads) only consume the deprecated attribute for back-compat and can likely stay (or be dropped last); everything else actively sets it.


AI Attributes (ai.*)

Deprecated AttributeReplacementFiles (Source Code)
ai.pipeline.namegen_ai.pipeline.nameserver-utils/src/ai/vercel-ai/index.ts (L424, raw string)
ai.streaminggen_ai.response.streamingserver-utils/src/ai/vercel-ai/index.ts (L437, raw string)

packages/server-utils/src/ai/langgraph/index.ts already uses GEN_AI_PIPELINE_NAME — Vercel AI is the only holdout.


Code Attributes (code.*)

Deprecated AttributeReplacementFiles (Source Code)
code.filepathcode.file.pathbrowser-utils/src/performance/entries.ts (L143, raw string)
code.functioncode.function.namebrowser-utils/src/performance/entries.ts (L146, raw string)

Note: as of @sentry/conventions@0.19.0, code.function is not yet flagged @deprecated (it and code.function.name are listed as aliases), but it will be deprecated in favor of code.function.name — so migrate it along with code.filepath. The packages/remix/src/server/integrations/opentelemetry.ts occurrence from the original audit is gone with the file.


Database Attributes (db.*)

Almost all of these moved into packages/server-utils/src/ when the OTel DB instrumentations were vendored. They are set via the deprecated @sentry/conventions constants (DB_SYSTEM, DB_STATEMENT, …) or via local ATTR_DB_* string constants.

Deprecated AttributeReplacementFiles (Source Code)
db.namedb.namespaceserver-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.operationdb.operation.namecore/src/integrations/supabase.ts (L280, L440, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.statementdb.query.textserver-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/prisma/tracing-helper.ts(reads)
db.systemdb.system.namecore/src/integrations/supabase.ts (L279, L439, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts, server-utils/src/prisma/tracing-helper.ts (backfill)
db.mongodb.collection (newly deprecated)db.collection.nameserver-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts

packages/server-utils/src/integrations/ioredis.ts and redis.ts already carry TODO(v11) comments for exactly this migration.

Note: db.user, db.connection_string and db.sql.table are not deprecated in @sentry/conventions@0.19.0 — no action needed there.


HTTP Attributes (http.*)

The old node-core HTTP integration is gone. Server-side HTTP attributes now live in packages/core/src/integrations/http/ and packages/node/src/integrations/http/httpServerSpansIntegration.ts (the latter sets them deliberately, guarded by eslint-disable typescript/no-deprecated, for compatibility with what @opentelemetry/instrumentation-http used to emit).

Deprecated AttributeReplacementFiles (Source Code)
http.client_ipclient.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.flavornetwork.protocol.versioncore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.hostserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.methodhttp.request.methodSets:browser/src/tracing/request.ts, browser/src/integrations/fetchStreamPerformance.ts, core/src/fetch.ts, core/src/integrations/http/add-outgoing-request-breadcrumb.ts, core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, core/src/types/request.ts (type), nestjs/src/integrations/wrap-route.ts, node/src/integrations/http/httpServerSpansIntegration.ts, node/src/utils/outgoingFetchRequest.ts, react-router/src/server/createServerInstrumentation.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/hapi-utils.ts, sveltekit/src/server-common/handle.ts, sveltekit/src/server-common/load.ts. Reads:browser/src/integrations/graphqlClient.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/edge/enhanceRunHandlerRootSpan.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/handleOnSpanStart.ts, server-utils/src/utils/setHttpServerSpanRouteAttribute.ts
http.response_content_lengthhttp.response.body.sizebrowser-utils/src/performance/entries.ts, core/src/fetch.ts, core/src/integrations/http/get-outgoing-span-data.ts
http.response_transfer_sizehttp.response.sizebrowser-utils/src/performance/entries.ts
http.schemeurl.schemecore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.status_codehttp.response.status_codeSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/aws-sdk/index.ts. Reads:nextjs/src/common/utils/backfillHttpResponseStatusCode.ts, nextjs/src/common/utils/backfillHttpServerStatus.ts
http.targeturl.pathSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts. Reads / filters:nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/common/utils/setUrlProcessingMetadata.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/index.ts, react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts, solidstart/src/server/withServerActionInstrumentation.ts, tanstackstart-react/src/server/tunnelRoute.ts
http.user_agentuser_agent.originalcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts

Network Attributes (net.*)

Deprecated AttributeReplacementFiles (Source Code)
net.host.ipnetwork.local.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.nameserver.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.portserver.portcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.ipnetwork.peer.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.nameserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, node/src/integrations/tracing/redis/cache.ts(reads), server-utils/src/integrations/amqplib.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
net.peer.portserver.portsame set as net.peer.name, plus core/src/integrations/http/server-subscription.ts and node/src/integrations/http/httpServerSpansIntegration.ts
net.transportnetwork.transportcore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, server-utils/src/integrations/knex.ts

GenAI Attributes (gen_ai.*)

All AI instrumentation moved to packages/server-utils/src/ai/ and grew from 2 providers to 7+. These are set via the deprecated constants from @sentry/conventions/attributes.

Deprecated AttributeReplacementFiles (Source Code)
gen_ai.promptgen_ai.input.messagesserver-utils/src/ai/anthropic-ai/index.ts
gen_ai.response.textgen_ai.output.messagesserver-utils/src/ai/anthropic-ai/index.ts, server-utils/src/ai/core/utils.ts, server-utils/src/ai/google-genai/index.ts, server-utils/src/ai/langchain/utils.ts, server-utils/src/ai/langgraph/utils.ts, server-utils/src/ai/openai/utils.ts, server-utils/src/ai/workers-ai/utils.ts
gen_ai.response.tool_callsgen_ai.output.messagessame set as gen_ai.response.text

Caveat documented in server-utils/src/ai/workers-ai/utils.ts: Relay migrates gen_ai.response.text into gen_ai.output.messages, but not the tool-calls half — so dropping gen_ai.response.tool_calls needs product-side coordination before it can be removed.


Other Deprecated Attributes

Deprecated AttributeReplacementFiles (Source Code)
fs_errorerror.typenode/src/integrations/fs/vendored/instrumentation.ts (L313)

Already resolved since the original audit

These rows from the original audit no longer apply and were removed:

  • ai.model.provider — no longer emitted; Vercel AI now sets gen_ai.provider.name plus the non-deprecated vercel.ai.model.provider. server-utils/src/ai/vercel-ai/index.ts even renames incoming gen_ai.systemgen_ai.provider.name.
  • http.url — zero occurrences left in packages/*/src; fully migrated to url.full.
  • gen_ai.request.messages/gen_ai.request.available_tools — zero occurrences left; migrated to gen_ai.input.messages / gen_ai.tool.definitions.
  • profile_id — migrated to sentry.profile_id (core/src/semanticAttributes.ts, core/src/tracing/spans/scopeContextAttributes.ts). Remaining profile_id hits are event/context payload fields, not span attributes.
  • replay_id — the span-attribute case is sentry.replay_id (replay-internal/src/integration.ts, browser-utils/src/web-vitals/spans.ts, core/src/logs/internal.ts, core/src/metrics/internal.ts). Remaining replay_id hits are DSC / feedback-context fields and doc comments, not span attributes.
  • The entire "OpenTelemetry Semantic Convention Constants Used (Deprecated)" section@opentelemetry/semantic-conventions and all SEMATTRS_* constants have been removed from the repo (zero hits in packages/ and dev-packages/). Everything now goes through @sentry/conventions/attributes.

Test fixtures

Beyond source, deprecated attributes are asserted on in integration test fixtures across dev-packages/node-integration-tests/suites/{tracing,express,aws-serverless}, dev-packages/deno-integration-tests/suites/orchestrion-* (mongo, mongoose, mysql, mysql2, postgres, tedious), dev-packages/browser-integration-tests/suites/{tracing,integrations}, dev-packages/bun-integration-tests/suites/fetch and dev-packages/cloudflare-integration-tests/suites/vite-autoinstrument. These will need updating alongside each source change.

Metadata

Metadata

Assignees

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Update span attributes to use @sentry/conventions #18895

Description

@Lms24

Description

For the next Major SDK version, we should stop sending attributes we deprecated in our conventions and (if not done already) replace them with their stable replacements.

Overall, we should likely move to our @sentry/conventions package generally and unify usage there. We need to make sure that we do not remove anything users may heavily rely on (or that this is backfilled or similar, …)

Locations marked (reads) only consume the deprecated attribute for back-compat and can likely stay (or be dropped last); everything else actively sets it.


AI Attributes (ai.*)

Deprecated AttributeReplacementFiles (Source Code)
ai.pipeline.namegen_ai.pipeline.nameserver-utils/src/ai/vercel-ai/index.ts (L424, raw string)
ai.streaminggen_ai.response.streamingserver-utils/src/ai/vercel-ai/index.ts (L437, raw string)

packages/server-utils/src/ai/langgraph/index.ts already uses GEN_AI_PIPELINE_NAME — Vercel AI is the only holdout.


Code Attributes (code.*)

Deprecated AttributeReplacementFiles (Source Code)
code.filepathcode.file.pathbrowser-utils/src/performance/entries.ts (L143, raw string)
code.functioncode.function.namebrowser-utils/src/performance/entries.ts (L146, raw string)

Note: as of @sentry/conventions@0.19.0, code.function is not yet flagged @deprecated (it and code.function.name are listed as aliases), but it will be deprecated in favor of code.function.name — so migrate it along with code.filepath. The packages/remix/src/server/integrations/opentelemetry.ts occurrence from the original audit is gone with the file.


Database Attributes (db.*)

Almost all of these moved into packages/server-utils/src/ when the OTel DB instrumentations were vendored. They are set via the deprecated @sentry/conventions constants (DB_SYSTEM, DB_STATEMENT, …) or via local ATTR_DB_* string constants.

Deprecated AttributeReplacementFiles (Source Code)
db.namedb.namespaceserver-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.operationdb.operation.namecore/src/integrations/supabase.ts (L280, L440, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
db.statementdb.query.textserver-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/prisma/tracing-helper.ts(reads)
db.systemdb.system.namecore/src/integrations/supabase.ts (L279, L439, raw strings), server-utils/src/integrations/aws-sdk/services/dynamodb.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts, server-utils/src/prisma/tracing-helper.ts (backfill)
db.mongodb.collection (newly deprecated)db.collection.nameserver-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/mongoose/mongoose-legacy-span.ts

packages/server-utils/src/integrations/ioredis.ts and redis.ts already carry TODO(v11) comments for exactly this migration.

Note: db.user, db.connection_string and db.sql.table are not deprecated in @sentry/conventions@0.19.0 — no action needed there.


HTTP Attributes (http.*)

The old node-core HTTP integration is gone. Server-side HTTP attributes now live in packages/core/src/integrations/http/ and packages/node/src/integrations/http/httpServerSpansIntegration.ts (the latter sets them deliberately, guarded by eslint-disable typescript/no-deprecated, for compatibility with what @opentelemetry/instrumentation-http used to emit).

Deprecated AttributeReplacementFiles (Source Code)
http.client_ipclient.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.flavornetwork.protocol.versioncore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.hostserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.methodhttp.request.methodSets:browser/src/tracing/request.ts, browser/src/integrations/fetchStreamPerformance.ts, core/src/fetch.ts, core/src/integrations/http/add-outgoing-request-breadcrumb.ts, core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, core/src/types/request.ts (type), nestjs/src/integrations/wrap-route.ts, node/src/integrations/http/httpServerSpansIntegration.ts, node/src/utils/outgoingFetchRequest.ts, react-router/src/server/createServerInstrumentation.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/hapi-utils.ts, sveltekit/src/server-common/handle.ts, sveltekit/src/server-common/load.ts. Reads:browser/src/integrations/graphqlClient.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/edge/enhanceRunHandlerRootSpan.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/handleOnSpanStart.ts, server-utils/src/utils/setHttpServerSpanRouteAttribute.ts
http.response_content_lengthhttp.response.body.sizebrowser-utils/src/performance/entries.ts, core/src/fetch.ts, core/src/integrations/http/get-outgoing-span-data.ts
http.response_transfer_sizehttp.response.sizebrowser-utils/src/performance/entries.ts
http.schemeurl.schemecore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
http.status_codehttp.response.status_codeSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, remix/src/server/integrations/tracing-channel.ts, server-utils/src/integrations/aws-sdk/index.ts. Reads:nextjs/src/common/utils/backfillHttpResponseStatusCode.ts, nextjs/src/common/utils/backfillHttpServerStatus.ts
http.targeturl.pathSets:core/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts. Reads / filters:nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts, nextjs/src/common/utils/getNormalizedRequestFromAttributes.ts, nextjs/src/common/utils/setUrlProcessingMetadata.ts, nextjs/src/server/enhanceHandleRequestRootSpan.ts, nextjs/src/server/index.ts, react-router/src/server/integration/lowQualityTransactionsFilterIntegration.ts, solidstart/src/server/withServerActionInstrumentation.ts, tanstackstart-react/src/server/tunnelRoute.ts
http.user_agentuser_agent.originalcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts

Network Attributes (net.*)

Deprecated AttributeReplacementFiles (Source Code)
net.host.ipnetwork.local.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.nameserver.addresscore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.host.portserver.portcore/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.ipnetwork.peer.addresscore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts
net.peer.nameserver.addresscore/src/integrations/http/get-outgoing-span-data.ts, node/src/integrations/tracing/redis/cache.ts(reads), server-utils/src/integrations/amqplib.ts, server-utils/src/integrations/ioredis.ts, server-utils/src/integrations/knex.ts, server-utils/src/integrations/mongodb/mongodb-span.ts, server-utils/src/integrations/mysql.ts, server-utils/src/integrations/mysql2.ts, server-utils/src/integrations/postgres.ts, server-utils/src/integrations/redis.ts, server-utils/src/integrations/tedious.ts, server-utils/src/mongoose/mongoose-legacy-span.ts
net.peer.portserver.portsame set as net.peer.name, plus core/src/integrations/http/server-subscription.ts and node/src/integrations/http/httpServerSpansIntegration.ts
net.transportnetwork.transportcore/src/integrations/http/get-outgoing-span-data.ts, core/src/integrations/http/server-subscription.ts, node/src/integrations/http/httpServerSpansIntegration.ts, server-utils/src/integrations/knex.ts

GenAI Attributes (gen_ai.*)

All AI instrumentation moved to packages/server-utils/src/ai/ and grew from 2 providers to 7+. These are set via the deprecated constants from @sentry/conventions/attributes.

Deprecated AttributeReplacementFiles (Source Code)
gen_ai.promptgen_ai.input.messagesserver-utils/src/ai/anthropic-ai/index.ts
gen_ai.response.textgen_ai.output.messagesserver-utils/src/ai/anthropic-ai/index.ts, server-utils/src/ai/core/utils.ts, server-utils/src/ai/google-genai/index.ts, server-utils/src/ai/langchain/utils.ts, server-utils/src/ai/langgraph/utils.ts, server-utils/src/ai/openai/utils.ts, server-utils/src/ai/workers-ai/utils.ts
gen_ai.response.tool_callsgen_ai.output.messagessame set as gen_ai.response.text

Caveat documented in server-utils/src/ai/workers-ai/utils.ts: Relay migrates gen_ai.response.text into gen_ai.output.messages, but not the tool-calls half — so dropping gen_ai.response.tool_calls needs product-side coordination before it can be removed.


Other Deprecated Attributes

Deprecated AttributeReplacementFiles (Source Code)
fs_errorerror.typenode/src/integrations/fs/vendored/instrumentation.ts (L313)

Already resolved since the original audit

These rows from the original audit no longer apply and were removed:

  • ai.model.provider — no longer emitted; Vercel AI now sets gen_ai.provider.name plus the non-deprecated vercel.ai.model.provider. server-utils/src/ai/vercel-ai/index.ts even renames incoming gen_ai.systemgen_ai.provider.name.
  • http.url — zero occurrences left in packages/*/src; fully migrated to url.full.
  • gen_ai.request.messages/gen_ai.request.available_tools — zero occurrences left; migrated to gen_ai.input.messages / gen_ai.tool.definitions.
  • profile_id — migrated to sentry.profile_id (core/src/semanticAttributes.ts, core/src/tracing/spans/scopeContextAttributes.ts). Remaining profile_id hits are event/context payload fields, not span attributes.
  • replay_id — the span-attribute case is sentry.replay_id (replay-internal/src/integration.ts, browser-utils/src/web-vitals/spans.ts, core/src/logs/internal.ts, core/src/metrics/internal.ts). Remaining replay_id hits are DSC / feedback-context fields and doc comments, not span attributes.
  • The entire "OpenTelemetry Semantic Convention Constants Used (Deprecated)" section@opentelemetry/semantic-conventions and all SEMATTRS_* constants have been removed from the repo (zero hits in packages/ and dev-packages/). Everything now goes through @sentry/conventions/attributes.

Test fixtures

Beyond source, deprecated attributes are asserted on in integration test fixtures across dev-packages/node-integration-tests/suites/{tracing,express,aws-serverless}, dev-packages/deno-integration-tests/suites/orchestrion-* (mongo, mongoose, mysql, mysql2, postgres, tedious), dev-packages/browser-integration-tests/suites/{tracing,integrations}, dev-packages/bun-integration-tests/suites/fetch and dev-packages/cloudflare-integration-tests/suites/vite-autoinstrument. These will need updating alongside each source change.

Metadata

Metadata

Assignees

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions