Vijay Kasibhatla61 downloadsCreate, edit (via the native Markdown/CodeMirror editor) and preview .mdx files with a sandboxed JSX renderer and support for vault-supplied custom components.
Create, edit, and preview .mdx files in Obsidian — Markdown with real, interactive components (charts, callouts, diagrams) rendered right alongside your notes.
.mdx files like any other note. They open in Obsidian's normal editor, with the same Live Preview and Reading Mode you already use for Markdown.[[wikilinks]], ![[embeds]], and regular Markdown images all work in .mdx files, including image embeds.<MyChart data={...} /> directly in your notes — no import statement needed..mdx extension..mdx files can contain real JavaScript, so this is a one-time-per-session safety check, not a bug.YAML frontmatter works as usual, and its values are available in the body:
---
title: My Note
---
# {frontmatter.title}
Tables, strikethrough, and other GFM syntax render as expected.
Fenced code blocks are highlighted automatically — no setup required.
```mermaid
graph TD;
A[Start] --> B[Finish];
```
renders as an actual diagram, fully offline.
![[photo.png]] and standard  both display the image inline.[[Some Note]] and [[Some Note|custom label]] render as clickable links that open the target note in Obsidian.![[Some Note]]) shows a clickable reference rather than the note's full content.In Settings → MDX View, point Components bundle at a vault file that provides your components (e.g. _components/bundle.js), then use them directly in any .mdx file:
<MyChart data={[1, 2, 3]} />
Two ways to create that bundle:
.tsx/.jsx file in your vault with named exports (export function MyChart() {...}), then click Rebuild. The plugin compiles it for you, fully offline — no separate build tooling needed.Use the printer icon on an open preview to print it or save it as a PDF. Desktop only.
| Setting | Description |
|---|---|
| Components bundle | Vault path to the JS file the preview reads for custom components. |
| Components source | Optional vault path to a .tsx/.jsx entry file to compile in-app via "Rebuild". |
| Preview debounce (ms) | How long to wait after you stop typing before refreshing the preview. |
![[Some Note]]) shows a link, not the note's rendered content — full transclusion isn't supported yet.import/export statements aren't supported inside .mdx files, since the preview sandbox has no network access. Use custom components (above) instead of importing them.npm install
npm run build # or `npm run dev` to watch
This produces main.js, styles.css, and esbuild.wasm alongside manifest.json. Copy all four into <vault>/.obsidian/plugins/mdx-view/, then reload Obsidian and enable the plugin.
MIT — see LICENSE.