MDX Components
Render an alert (sometimes called a callout) to highlight important information.
Note
This is an info alert. Use this to emphasize information that users should read.
Important
This is a warning alert. Use this to alert users to potential risks they should be aware of.
Tip
This is a success alert. Use this to provide optional information that can help users be more successful.
This is an alert without a title. warning alerts should always have titles to emphasize their importance.
This is a multi-line alert without a title. Keep information brief and to the point. If this is challenging, consider whether the topic needs documentation on another page or if using the Expandable component would be a better fit.
List
- You can create lists
- and format your
text
<Alert title="Note">
This is an info alert.
</Alert>
Attributes:
title(string) - optionallevel(string:'info' | 'warning' | 'success') - optional, defaults to'info'
Where to place alerts:
Make sure your alerts aren't breaking the flow of the content. For example, don't put an alert between two paragraphs that explain a single concept. Use alerts sparingly; too many alerts on a single page can be overwhelming.
When to use which alert level:
Info: Use this to emphasize information that users should read. For example:
- information needed for users to succeed
- information you'd typically wrap in a note callout
Warning: Use this to alert users to potential risks they should be aware of. For example:
- warnings about potential errors, such as ones caused by common oversights in project configuration
- warnings regarding breaking changes
Best practices:
- always use a title with this alert level
Success: Use this to provide optional information that can help users be more successful. For example:
- information that helps improve an already successful task, such as a link to additional reading material
- tips for best practices
Render an Arcade embed.
<Arcade src="https://demo.arcade.software/v7uhzmdV6Q5PDzoVPAE6?embed&show_copy_link=true" />
Attributes:
src(string) - the URL of the Arcade embed
Render an expandable section to provide additional information to users on demand.
<Expandable title="Here's something worth noting">
This is an expandable section in an `'info'` alert style.
</Expandable>
Attributes:
title(string)permalink(boolean) - optional: wraps the title in a link and shows it in the table of contents.
When to use expandables:
Expandables help keep our documentation clutter-free, allowing users to focus on important information while providing them the option to explore additional relevant details.
For example, use expandables to:
- offer information that is useful to some users but not all, like troubleshooting tips
- provide background information or insights into related concepts
Best practices
- Write the expandable title as a question or statement to clarify what users can expect from the content within:
- Do you want to learn more about these features?
- Are you using Node.js version 15 or lower?
- Advanced configuration options for XY use case.
- When you need to share important information that users should read, consider using an alert instead since its content is visible by default.
- Avoid overusing this component and make sure to provide valuable information that is relevant to the current topic.
Consecutive code blocks will be automatically collapsed into a tabulated container. This behavior is generally useful if you want to define an example in multiple languages:
```javascript
function foo() {
return "bar";
}
```
```python
def foo():
return 'bar'
```
Sometimes you may not want this behavior. To solve this, you can either break up the code blocks with some additional text, or use the <Break /> component.
Additionally code blocks also support tabTitle and filename properties:
```javascript {tabTitle: Hello} {filename: index.js}
var foo = "bar";
```
You can bring attention to specific lines in a code block using the {fromLineA-toLineB} for ranges, or {lineA,lineB} for specific lines (or a combination of the two):
function foo() {
let lookat = "me";
return "bar";
}
You can also highlight diffs using the diff language:
```diff
- minus one
+ plus one
```
If you want to preserve syntax highlighting, you can add diff metadata to any code block then annotate the diff with + and -:
function foo() {
- return "bar";
+ return "baz";
}
Render a heading with a configuration key in the correctly cased format for a given platform.
If content is specified, it will automatically hide the content when the given platform is not selected in context.
<ConfigKey name="send-default-pii" notSupported={["javascript"]}>
Description of send-default-pii
</ConfigKey>
Attributes:
name(string)platform(string) - defaults to theplatformvalue from the page contextsupported(string[])notSupported(string[])
Render all next_steps of this document or default child pages, including their description if available.
You can specify next_steps in the frontmatter of a page to include them in the grid. It supports relative paths and will automatically resolve them.
---
# in the frontmatter of a page:
next_steps:
- ./child-one
- ./child-two
- ../parent/child-three
---
<PageGrid />
Attributes:
header(string) - optional header value to include, rendered as an H2nextPages(boolean) - only render pages which come next based on sidebar orderingexclude(string[]) - an array of pages to exclude from the grid. Specify the file name of the page, for example,"index"forindex.mdx.
Render an include based on the currently selected platform in context.
<PlatformContent includePath="sdk-init" />
Attributes:
includePath(string) - the subfolder within/includesto map toplatform(string) - defaults to theplatformvalue from the page context
Some notes:
When the current platform comes from the page context and no matching include is found, the content will be hidden.
Similar to
PlatformSection, you can embed content in the block which will render before the given include, but only when an include is available.A file named
_defaultwill be used if no other content matches.
Note: This currently causes issues with tableOfContents generation, so its recommended to disable the TOC when using it.
Render terms in the correct case within the body text of a page (not in code samples) based on the platform case_style setting:
<PlatformIdentifier name="before-send" />
For example, if you use <PlatformIdentifier name="before-send" />, it will render as:
beforeSendif case_style=camelCasebefore_sendif case_style=snake_caseBeforeSendif case_style=PascalCase
This component only works properly in platform pages.
Useful for linking to platform-specific content when there's not a specific platform already selected.
<PlatformLink to="/enriching-events/" />
This will direct users to a page where they can choose the platform, and then to the appropriate link. If they're within a page that already has an active platform, it will simply link to the appropriate page and skip the redirect.
Render a section based on the currently selected platform in context. When the platform is not valid, the content will be hidden.
<PlatformSection notSupported={["javascript"]}>
Something that applies to all platforms, but not javascript or node.
</PlatformSection>
Attributes:
platform(string) - defaults to theplatformvalue from the page contextsupported(string[])notSupported(string[])noGuides(boolean) - hide this on all guides (takes precedence oversupported/notSupported)
If you're writing product feature specific docs, you can specify markers within code blocks that enable or disable certain parts of snippets:
warning
Do not copy the following code snippet, the ___PRODUCT_OPTION_START___ and ___PRODUCT_OPTION_END___ markers have an extra character (zero width space) as a workaround to make them show up correctly in the example.
```go
// ___PRODUCT_OPTION_START___ performance
// your code here
// ___PRODUCT_OPTION_END___ performance
```
the syntax uses the standard comment style of the programming language you're documenting. For example:
- TypeScript/JavaScript:
// ___PRODUCT_OPTION_START___ feature - Python:
# ___PRODUCT_OPTION_START___ feature
where feature is the feature id (e.g. performance, profiling or session-replay).
The range visibility will be controlled by the OnboardingOptionButtons component:
<OnboardingOptionButtons
options={["error-monitoring", "profiling", "performance"]}
/>
optionscan either be either an object of this shape:
{
id: 'error-monitoring' | 'performance' | 'profiling' | 'session-replay',
disabled: boolean,
checked: boolean
}
or a string (one of these ids 👆) for convenience when using defaults.
Important
The underlying implementation relies on the onboardingOptions metadata in the code blocks to be valid JSON syntax.
- default values:
checked: falseanddisabled: false(trueforerror-monitoring).
Example (output of the above):
import (
"fmt"
"net/http"
"github.com/getsentry/sentry-go"
sentrygin "github.com/getsentry/sentry-go/gin"
"github.com/gin-gonic/gin"
)
// To initialize Sentry's handler, you need to initialize Sentry itself beforehand
if err := sentry.Init(sentry.ClientOptions{
Dsn: "https://examplePublicKey@o0.ingest.sentry.io/0example-org / example-project",
// performance
EnableTracing: true,
// Set TracesSampleRate to 1.0 to capture 100%
// of transactions for performance monitoring.
// We recommend adjusting this value in production,
TracesSampleRate: 1.0,
// performance
// Adds request headers and IP for users,
// visit: https://docs.sentry.io/platforms/go/data-management/data-collected/ for more info
SendDefaultPII: true,
}); err != nil {
fmt.Printf("Sentry initialization failed: %v\n", err)
}
// Then create your app
app := gin.Default()
// Once it's done, you can attach the handler as one of your middleware
app.Use(sentrygin.New(sentrygin.Options{}))
// Set up routes
app.GET("/", func(ctx *gin.Context) {
ctx.String(http.StatusOK, "Hello world!")
})
// And run it
app.Run(":3000")
You can conditionally render content based on the selected onboarding options using the OnboardingOption component
Or you can use the hideForThisOption prop to hide the content for the selected option.
```jsx
<OnboardingOption optionId="profiling" hideForThisOption>
Hide this section for `profiling` option.
</OnboardingOption>
```
Example:
toggle the
performanceoption above to see the effect:Copied<OnboardingOption optionId="performance"> This code block is wrapped in a `OnboardingOption` component and will only be rendered when the `performance` option is selected. </OnboardingOption>;toggle the
profilingoption above to see the effect:Copied<OnboardingOption optionId="profiling" hideForThisOption> This code block is wrapped in a `OnboardingOption` component and will only be rendered when the `profiling` option is NOT selected. </OnboardingOption>;
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").