Skip to content

Duplicate rendered page titles: remaining 35 groups (follow-up to #19301) #19351

Description

@coolguyzone

Background

Follow-up to #19301, which de-duplicated the Troubleshooting and Custom Instrumentation title families.

Sentry docs render the browser <title> as frontmatter.title + " | Sentry for {Platform}" for platform/guide pages (app/[[...path]]/page.tsx:366). Product/API pages get no suffix. So the ~200 raw frontmatter-title duplicates (e.g. "Configuration" across every SDK) are mostly already unique at the tag level and are not a problem.

Accounting for that suffix and excluding version-variant pairs (__v7.x, etc., which share a URL via the version switcher), 35 groups / 77 pages still render a genuinely duplicate <title>. This issue tracks fixing them.

Categories

Three buckets, in rough priority order:

  • Same-platform collisions (17) — different pages on the same platform render an identical title; the platform suffix can't disambiguate. Highest value. Many are legacy-sdk vs common pairs (Integrations, Usage, Context, Source Maps) and instrumentation-vs-trace-propagation pairs.
  • Product / non-platform collisions (15) — /product/ and /api/ pages get no suffix, so these are true duplicate <title> tags (e.g. 8× "Set Up", plus Authentication, Logs, Issues, Errors).
  • Cross-guide, shared framework name (3) — two guides that share a display name (e.g. a .NET and a JS "AWS Lambda" guide) render the same X | Sentry for X. Arguably acceptable; may not need a change.

Recommended approach

  • Prefer descriptive, unique title; add sidebar_title to keep the menu label short where the section already provides context (the pattern established in docs: De-duplicate Troubleshooting and Custom Instrumentation page titles #19301).
  • For legacy-sdk vs common pairs, consider whether the legacy page should be retitled ("Legacy …") or redirected, since some may be effectively superseded — worth an SME check.
  • Leave version-variant pairs alone (same URL).

Full list

Same-platform collisions (17)

Configuration | Sentry for PHP — 3 pages
  • docs/platforms/php/common/configuration/index.mdx
  • docs/platforms/php/common/user-feedback/configuration/index.mdx
  • docs/platforms/php/legacy-sdk/config.mdx
Breadcrumbs | Sentry for JavaScript — 2 pages
  • docs/platforms/javascript/common/configuration/integrations/breadcrumbs.mdx
  • docs/platforms/javascript/common/enriching-events/breadcrumbs/index.mdx
Capturing Errors | Sentry for Java — 2 pages
  • docs/platforms/java/common/usage/index.mdx
  • docs/platforms/java/usage.mdx
Configuration | Sentry for Elixir — 2 pages
  • docs/platforms/elixir/configuration/index.mdx
  • docs/platforms/elixir/user-feedback/configuration/index.mdx
Context | Sentry for Go — 2 pages
  • docs/platforms/go/common/enriching-events/context/index.mdx
  • docs/platforms/go/legacy-sdk/context.mdx
Expo | Sentry for Expo — 2 pages
  • docs/platforms/react-native/guides/expo/index.mdx
  • docs/platforms/react-native/guides/expo/sourcemaps/uploading/expo.mdx
Hermes | Sentry for React Native — 2 pages
  • docs/platforms/react-native/common/manual-setup/hermes.mdx
  • docs/platforms/react-native/common/sourcemaps/uploading/hermes.mdx
Integrations | Sentry for Go — 2 pages
  • docs/platforms/go/common/integrations/index.mdx
  • docs/platforms/go/legacy-sdk/integrations.mdx
Integrations | Sentry for JavaScript — 2 pages
  • docs/platforms/javascript/common/configuration/integrations/index.mdx
  • docs/platforms/javascript/legacy-sdk/integrations.mdx
Integrations | Sentry for PHP — 2 pages
  • docs/platforms/php/common/integrations/index.mdx
  • docs/platforms/php/legacy-sdk/integrations.mdx
Integrations | Sentry for Python — 2 pages
  • docs/platforms/python/integrations/index.mdx
  • docs/platforms/python/legacy-sdk/integrations.mdx
OpenTelemetry Support | Sentry for Java — 2 pages
  • docs/platforms/java/common/opentelemetry/index.mdx
  • docs/platforms/java/common/tracing/instrumentation/opentelemetry.mdx
OpenTelemetry Support | Sentry for JavaScript — 2 pages
  • docs/platforms/javascript/common/migration/v7-to-v8/v8-opentelemetry.mdx
  • docs/platforms/javascript/common/opentelemetry/index.mdx
Source Context | Sentry for Android — 2 pages
  • docs/platforms/android/data-management/debug-files/source-context/index.mdx
  • docs/platforms/android/enhance-errors/source-context.mdx
Source Context | Sentry for Apple — 2 pages
  • docs/platforms/apple/common/data-management/debug-files/source-context/index.mdx
  • docs/platforms/apple/common/sourcecontext/index.mdx
Source Maps | Sentry for JavaScript — 2 pages
  • docs/platforms/javascript/common/sourcemaps/index.mdx
  • docs/platforms/javascript/legacy-sdk/sourcemaps.mdx
Usage | Sentry for PHP — 2 pages
  • docs/platforms/php/common/usage/index.mdx
  • docs/platforms/php/legacy-sdk/usage.mdx

Product / non-platform collisions (15)

Set Up — 8 pages
  • docs/product/agents/getting-started.mdx
  • docs/product/logs/getting-started/index.mdx
  • docs/product/mcp-servers/getting-started.mdx
  • docs/product/metrics/getting-started/index.mdx
  • docs/product/monitors-and-alerts/monitors/crons/getting-started/index.mdx
  • docs/product/profiling/getting-started.mdx
  • docs/product/releases/setup/index.mdx
  • docs/product/user-feedback/setup.mdx
Agents Dashboards — 2 pages
  • docs/product/agents/dashboards.mdx
  • docs/product/dashboards/sentry-dashboards/ai/agents.mdx
Authentication — 2 pages
  • docs/api/auth.mdx
  • docs/organization/authentication/index.mdx
Errors — 2 pages
  • docs/integrations/integration-platform/webhooks/errors.mdx
  • docs/product/errors/index.mdx
Feature Flags — 2 pages
  • docs/integrations/feature-flag/index.mdx
  • docs/product/issues/issue-details/feature-flags/index.mdx
Installation — 2 pages
  • docs/cli/installation.mdx
  • docs/integrations/integration-platform/webhooks/installation.mdx
Integrating Into CI — 2 pages
  • docs/product/size-analysis/integrating-into-ci.mdx
  • docs/product/snapshots/integrating-into-ci.mdx
Issues — 2 pages
  • docs/integrations/integration-platform/webhooks/issues.mdx
  • docs/product/issues/index.mdx
Logs — 2 pages
  • docs/cli/logs.mdx
  • docs/product/logs/index.mdx
MCP Dashboards — 2 pages
  • docs/product/dashboards/sentry-dashboards/ai/mcp.mdx
  • docs/product/mcp-servers/dashboard.mdx
Replay Performance Overhead — 2 pages
  • docs/product/session-replay/mobile/performance-overhead.mdx
  • docs/product/session-replay/web/performance-overhead.mdx
Search — 2 pages
  • docs/concepts/search/index.mdx
  • docs/contributing/pages/search.mdx
Seer — 2 pages
  • docs/integrations/integration-platform/webhooks/seer.mdx
  • docs/product/ai-in-sentry/seer/index.mdx
Session Health — 2 pages
  • docs/product/dashboards/sentry-dashboards/frontend/session-health.mdx
  • docs/product/dashboards/sentry-dashboards/mobile/session-health.mdx
Web Vitals — 2 pages
  • docs/product/dashboards/sentry-dashboards/frontend/web-vitals/index.mdx
  • docs/product/issues/issue-details/performance-issues/web-vitals/index.mdx

Cross-guide (shared framework name) (3)

AWS Lambda | Sentry for AWS Lambda — 2 pages
  • docs/platforms/dotnet/guides/aws-lambda/index.mdx
  • docs/platforms/javascript/guides/aws-lambda/index.mdx
Azure Functions | Sentry for Azure Functions — 2 pages
  • docs/platforms/dotnet/guides/azure-functions-worker/index.mdx
  • docs/platforms/javascript/guides/azure-functions/index.mdx
Google Cloud Functions | Sentry for Google Cloud Functions — 2 pages
  • docs/platforms/dotnet/guides/google-cloud-functions/index.mdx
  • docs/platforms/javascript/guides/gcp-functions/index.mdx

Activity

  1. linear-code commented on Sep 10, 2026

    @linear-code
  2. self-assigned this
    on Sep 10, 2026
  3. coolguyzone commented on Sep 11, 2026

    @coolguyzone
    ContributorAuthor

    Deferred: dashboards near-duplicate content (from #19387)

    While de-duplicating product titles (#19387), two collisions turned out to be duplicate content, not title problems, and need a canonical/redirect decision from the Dashboards/AI team rather than a retitle:

    • Agents Dashboards — product/agents/dashboards.mdx and product/dashboards/sentry-dashboards/ai/agents.mdx have essentially identical body text.
    • MCP Dashboards — product/dashboards/sentry-dashboards/ai/mcp.mdx and product/mcp-servers/dashboard.mdx overlap heavily.

    Recommended: pick one canonical location per pair and redirect the other (or set a canonical tag), instead of manufacturing distinct titles for the same content.

    Also still open from the same-platform work (#19358): the Java OpenTelemetry Support pair, where tracing/instrumentation/opentelemetry.mdx is a moved-page stub that should become a redirect.

  4. coolguyzone commented on Sep 14, 2026

    @coolguyzone
    ContributorAuthor

    Decision: cross-guide title collisions — leave as-is (wontfix for now)

    The 3 remaining title collisions are same-named guides across two languages:

    • AWS Lambda | Sentry for AWS Lambda — dotnet/guides/aws-lambda + javascript/guides/aws-lambda
    • Azure Functions | Sentry for Azure Functions — dotnet/guides/azure-functions-worker + javascript/guides/azure-functions
    • Google Cloud Functions | Sentry for Google Cloud Functions — dotnet/guides/google-cloud-functions + javascript/guides/gcp-functions

    Not fixable via frontmatter. A guide root page always renders X | Sentry for X because the page title and the suffix source are the same value (nodeToGuide.title = frontmatter.title, src/docTree.ts:377). Editing the guide index title also changes the | Sentry for … suffix for every sub-page under that guide, and still leaves the root doubled.

    The clean fix would be a code change in app/[[...path]]/page.tsx#generateMetadata: on a guide root page, build the suffix from the parent platform/language instead of the guide's own name, e.g. AWS Lambda | Sentry for .NET vs AWS Lambda | Sentry for JavaScript. This also de-doubles every guide-root <title> site-wide (Express | Sentry for Express → Express | Sentry for JavaScript).

    Decision: leaving as-is for now — only 3 pairs, the URLs disambiguate them, and the proper fix is a broader page.tsx change better handled on its own if/when we decide the guide-root title format is worth changing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions