static/app/components/core/link/link.mdx
import {Container} from '@sentry/scraps/layout'; import {ExternalLink, Link} from '@sentry/scraps/link'; import {Text} from '@sentry/scraps/text';
import * as Storybook from 'sentry/stories';
export const documentation = import('!!type-loader!@sentry/scraps/link');
The Link component provides context-aware navigation within the Sentry application, while ExternalLink handles external URLs. Both components maintain consistent styling and accessibility standards.
Use <Link> for navigation within the Sentry application. The component uses React Router under the hood and falls back to a standard anchor tag when no router context is available.
<Storybook.Demo>
<Link to="/organizations/sentry/issues/">Navigate to Issues</Link> </Storybook.Demo> ```jsx <Link to="/organizations/sentry/issues/">Navigate to Issues</Link> ```The to prop accepts either a string path or a LocationDescriptor object. When using literal paths, always use slug-based URLs to ensure compatibility across different deployment environments (customer domains and single-tenant).
<Storybook.Demo> <Storybook.SideBySide vertical> <Link to="/organizations/sentry/issues/">String path</Link> <Link to={{pathname: '/settings/account/'}}>LocationDescriptor object</Link> </Storybook.SideBySide> </Storybook.Demo>
<Link to="/organizations/sentry/issues/">String path</Link>
<Link to={{pathname: '/settings/account/'}}>LocationDescriptor object</Link>
Use <ExternalLink> for links to external websites. By default, external links open in a new tab.
<Storybook.Demo> <ExternalLink href="https://docs.sentry.io">Visit Sentry Docs</ExternalLink> </Storybook.Demo>
<ExternalLink href="https://docs.sentry.io">Visit Sentry Docs</ExternalLink>
Set openInNewTab={false} to open external links in the same tab.
<Storybook.Demo> <Storybook.SideBySide vertical> <ExternalLink href="https://docs.sentry.io">Opens in new tab (default)</ExternalLink> <ExternalLink href="https://docs.sentry.io" openInNewTab={false}> Opens in same tab </ExternalLink> </Storybook.SideBySide> </Storybook.Demo>
<ExternalLink href="https://docs.sentry.io">Opens in new tab (default)</ExternalLink>
<ExternalLink href="https://docs.sentry.io" openInNewTab={false}>
Opens in same tab
</ExternalLink>
Use the disabled prop to disable link navigation while maintaining visual presence.
<Storybook.Demo> <Storybook.SideBySide vertical> <Link to="/organizations/sentry/issues/">Active link</Link> <Link to="/organizations/sentry/issues/" disabled> Disabled link </Link> </Storybook.SideBySide> </Storybook.Demo>
<Link to="/issues/">Active link</Link>
<Link to="/issues/" disabled>
Disabled Link
</Link>
Both <Link> and <ExternalLink> components can be used inline in <Text> components to give a styled link.
<Storybook.Demo> <Container padding="md"> <Text> This is a paragraph with an{' '} <Link to="/organizations/sentry/issues/">inline link</Link> that inherits text styling. </Text> </Container> </Storybook.Demo>
<Text>
This is a paragraph with an <Link to="/organizations/sentry/issues/">inline link</Link>{' '}
that inherits text styling.
</Text>