Skip to content

Tighten @astrojs/mdx peer dependency on astro and improve version mismatch error message - #18036

Merged
Princesseuh merged 2 commits into
mainfrom
factory/fix-18014
Sep 16, 2026
Merged

Princesseuh merged 2 commits into
mainfrom
factory/fix-18014

Conversation

@astro-factory

@astro-factory astro-factory Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Changes

  • Tightens the astro peer dependency in @astrojs/mdx from ^7.2.6 to ^7.2.10, preventing the package from being used with astro versions that bundle @astrojs/markdown-satteri@0.3.x, which lacks the createMdxRenderer method required by @astrojs/mdx@8.x.
  • Updates the version-mismatch error message to recommend updating astro (which owns the bundled processor) rather than installing @astrojs/markdown-satteri directly, which has no effect because astro pins its own internal copy.

Testing

  • No new test cases added; the fix is a peer dependency metadata change and an error message string update. The version gate is enforced at install time by the package manager, not at runtime, so there is no runtime code path to unit-test.

Docs

  • No docs update needed; this is a packaging correction with an improved error message, not a new API or behavior change.

Closes #18014

@astro-factory astro-factory Bot added the fix verified Reporter confirmed the triage bot fix works label Sep 16, 2026
@changeset-bot

changeset-bot Bot commented Sep 16, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: bb1b791

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Dependency Count

This PR adds 33 new dependencies (2167 → 2200), which exceeds the threshold of 10.

⚠️ New Duplicate Dependencies (found: 11, threshold: 1)

📦 Package 📋 Versions
@types/node
3 versions
  • root@
    • @changesets/cli@2.29.8
      • ...
        • @manypkg/get-packages@1.1.3
          • @manypkg/find-root@1.1.0
            • @types/node@12.20.55

  • root@
    • @changesets/cli@2.29.8
      • @inquirer/external-editor@1.0.3
        • @types/node@22.19.19

@types/node@24.10.13
prettier
2 versions
  • root@
    • @changesets/cli@2.29.8
      • @changesets/apply-release-plan@7.0.14
        • prettier@2.8.8

  • root@
    • prettier@3.9.0

@changesets/types
2 versions
  • root@
    • @changesets/cli@2.29.8
      • ...
        • @changesets/get-dependents-graph@2.1.3
          • @manypkg/get-packages@1.1.3
            • @changesets/types@4.1.0

  • root@
    • @changesets/changelog-github@0.5.2
      • @changesets/types@6.1.0

fs-extra
4 versions
fs-extra@10.1.0
fs-extra@11.3.3
  • root@
    • @changesets/cli@2.29.8
      • @changesets/apply-release-plan@7.0.14
        • @changesets/config@3.1.2
          • fs-extra@7.0.1

  • root@
    • @changesets/cli@2.29.8
      • ...
        • @manypkg/get-packages@1.1.3
          • @manypkg/find-root@1.1.0
            • fs-extra@8.1.0

dotenv
2 versions
dotenv@16.6.1
  • root@
    • @changesets/changelog-github@0.5.2
      • dotenv@8.6.0

ci-info
2 versions
ci-info@2.0.0
  • root@
    • @changesets/cli@2.29.8
      • ci-info@3.9.0

js-yaml
3 versions
  • root@
    • @changesets/cli@2.29.8
      • ...
        • @manypkg/get-packages@1.1.3
          • read-yaml-file@1.1.0
            • js-yaml@3.14.2

  • root@
    • @changesets/cli@2.29.8
      • @changesets/get-release-plan@4.0.14
        • @changesets/read@0.6.6
          • @changesets/parse@0.4.2
            • js-yaml@4.3.0

  • root@
    • @flue/runtime@2.0.3
      • js-yaml@5.2.3

p-map
2 versions
  • root@
    • @changesets/cli@2.29.8
      • @changesets/get-release-plan@4.0.14
        • @changesets/read@0.6.6
          • p-filter@2.1.0
            • p-map@2.1.0

p-map@7.0.4
argparse
2 versions
  • root@
    • @changesets/cli@2.29.8
      • ...
        • read-yaml-file@1.1.0
          • js-yaml@3.14.2
            • argparse@1.0.10

  • root@
    • @changesets/cli@2.29.8
      • ...
        • @changesets/parse@0.4.2
          • js-yaml@4.3.0
            • argparse@2.0.1

jsonfile
2 versions
  • root@
    • @changesets/cli@2.29.8
      • ...
        • @manypkg/find-root@1.1.0
          • fs-extra@8.1.0
            • jsonfile@4.0.0

jsonfile@6.2.0
universalify
2 versions
  • root@
    • @changesets/cli@2.29.8
      • ...
        • @manypkg/find-root@1.1.0
          • fs-extra@8.1.0
            • universalify@0.1.2

universalify@2.0.1

💡 To find out what depends on a specific package, run: pnpm -r why example-package

📊 Dependency Size Changes

Warning

This PR adds 192.1 MB of new dependencies, which exceeds the threshold of 100 kB.

📦 Package 📏 Size
@pnpm/linux-x64@11.10.0 146.7 MB
pnpm@11.10.0 18.8 MB
@pnpm/exe@11.10.0 17.3 MB
prettier@2.8.8 11.2 MB
@emnapi/core@1.11.3 -2.2 MB
@astrojs/astro2tsx@0.1.0 -1.7 MB
@types/node@12.20.55 760 kB
@reflink/reflink-linux-x64-gnu@0.1.19 449.8 kB
@vercel/nft@1.3.2 -339.7 kB
js-yaml@3.14.2 275.7 kB
@emnapi/wasi-threads@1.2.3 -232.2 kB
enquirer@2.4.1 188.7 kB
@changesets/apply-release-plan@8.1.0 → @changesets/apply-release-plan@7.0.14 174.2 kB
chardet@2.1.1 162.8 kB
@changesets/assemble-release-plan@7.0.0 → @changesets/assemble-release-plan@6.0.9 141.5 kB
fs-extra@8.1.0 127.5 kB
fs-extra@7.0.1 124.2 kB
argparse@1.0.10 116.4 kB
@clack/prompts@1.7.0 -116.3 kB
picomatch@4.0.7 -93.8 kB
import-meta-resolve@4.2.0 -79.2 kB
jju@1.4.0 -70.4 kB
@clack/core@1.4.3 -65.9 kB
term-size@2.2.1 64.4 kB
@changesets/git@4.0.1 → @changesets/git@3.0.4 62.6 kB
dataloader@2.2.3 -62.4 kB
@manypkg/tools@2.1.2 -59.6 kB
shell-quote@1.10.0 -43.3 kB
@changesets/cli@3.0.2 → @changesets/cli@2.29.8 42.5 kB
cac@7.0.0 -41.2 kB
@changesets/get-github-info@1.0.1 → @changesets/get-github-info@0.7.0 40.7 kB
outdent@0.5.0 35.1 kB
@changesets/read@1.0.1 → @changesets/read@0.6.6 32.4 kB
@inquirer/external-editor@1.0.3 30.2 kB
@changesets/get-release-plan@4.0.14 29.2 kB
launch-editor@2.14.1 -27.9 kB
tinyexec@1.3.0 -26.8 kB
ansi-colors@4.1.3 26.1 kB
ci-info@3.9.0 26.1 kB
quansync@0.2.11 24.6 kB
dotenv@8.6.0 23.9 kB
@changesets/types@6.1.0 22.7 kB
@changesets/get-dependents-graph@3.0.0 → @changesets/get-dependents-graph@2.1.3 20.5 kB
@changesets/pre@3.0.0 → @changesets/pre@2.0.2 20.3 kB
@changesets/types@4.1.0 17.7 kB
@changesets/changelog-github@1.0.1 → @changesets/changelog-github@0.5.2 17.5 kB
@changesets/write@1.0.1 → @changesets/write@0.4.0 16 kB
@changesets/parse@1.0.0 → @changesets/parse@0.4.2 14.3 kB
@reflink/reflink@0.1.19 12.9 kB
fast-string-truncated-width@3.0.3 -12.1 kB
@changesets/format@0.1.2 -11.5 kB
package-manager-detector@1.8.0 → package-manager-detector@0.2.11 11.3 kB
@manypkg/get-packages@3.1.0 → @manypkg/get-packages@1.1.3 10.8 kB
fast-wrap-ansi@0.2.2 -10.7 kB
@changesets/logger@0.1.1 10.1 kB
detect-indent@6.1.0 9.7 kB
@changesets/types@7.0.0 -8.3 kB
@manypkg/find-root@3.1.0 → @manypkg/find-root@1.1.0 8 kB
is-windows@1.0.2 8 kB
p-map@2.1.0 7.5 kB
@pnpm/deps.graph-sequencer@1100.0.1 -7.4 kB
@changesets/changelog-git@1.0.0 → @changesets/changelog-git@0.2.1 7.3 kB
pify@4.0.1 7.2 kB
extendable-error@0.1.7 6.6 kB
@changesets/get-version-range-type@0.4.0 6 kB
p-filter@2.1.0 5.8 kB
@changesets/errors@1.0.0 → @changesets/errors@0.2.0 5 kB
universalify@0.1.2 4.7 kB
spawndamnit@3.0.1 4.5 kB
is-subdir@1.2.0 3.9 kB
fast-string-width@3.0.2 -3.5 kB
read-yaml-file@1.1.0 3.2 kB
better-path-resolve@1.0.0 3.1 kB
human-id@4.2.1 → human-id@4.1.3 2.9 kB
@types/react-dom@19.2.7 → @types/react-dom@19.2.5 -2.8 kB
@napi-rs/wasm-runtime@1.2.4 → @napi-rs/wasm-runtime@1.2.3 -2.7 kB
@changesets/should-skip-package@1.0.0 → @changesets/should-skip-package@0.1.2 1.3 kB
@changesets/config@4.0.0 → @changesets/config@3.1.2 390 B
lodash.startcase@4.4.0 Unknown
dataloader@1.4.0 Unknown
sprintf-js@1.0.3 Unknown
jsonfile@4.0.0 Unknown
strip-bom@3.0.0 Unknown

Total size change: 192.1 MB

⚠️ Package Trust Level Decreased

Caution

Decreased trust levels may indicate a higher risk of supply chain attacks. Please review these changes carefully.

📦 Package 🔒 Before 🔓 After
@changesets/changelog-github trustedPublisher provenance
@changesets/cli trustedPublisher provenance
@changesets/apply-release-plan trustedPublisher provenance
@changesets/config trustedPublisher provenance
@changesets/git trustedPublisher none
@changesets/should-skip-package trustedPublisher none
@changesets/types trustedPublisher none
@changesets/assemble-release-plan trustedPublisher provenance
@changesets/errors trustedPublisher none
@changesets/get-dependents-graph trustedPublisher none
@changesets/changelog-git trustedPublisher none
@changesets/get-github-info trustedPublisher provenance
@changesets/pre trustedPublisher none
@changesets/read trustedPublisher provenance
@changesets/write trustedPublisher none
package-manager-detector trustedPublisher provenance
@changesets/parse trustedPublisher provenance

Comment thread packages/integrations/mdx/src/vite-plugin-mdx.ts Outdated
@Princesseuh
Princesseuh merged commit f4444eb into main Sep 16, 2026
24 checks passed
@Princesseuh
Princesseuh deleted the factory/fix-18014 branch September 16, 2026 22:52
@astrobot-houston astrobot-houston mentioned this pull request Sep 16, 2026
renovate Bot added a commit to gwennlbh/portfolio that referenced this pull request Sep 29, 2026
##### [v8.0.2](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#802)

##### Patch Changes

- [#18036](withastro/astro#18036) [`f4444eb`](withastro/astro@f4444eb) Thanks [@astro-factory](https://github.com/apps/astro-factory)! - Fixes an incompatibility where `@astrojs/mdx` v8 could be installed with `astro` versions that bundle an older `@astrojs/markdown-satteri` lacking MDX support. Also improves the error message when the processor is too old to suggest updating `astro` itself.
- Updated dependencies \[[`3fd16ee`](withastro/astro@3fd16ee), [`8358d59`](withastro/astro@8358d59)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.4.2
##### [v8.0.1](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#801)

##### Patch Changes

- Updated dependencies \[[`a548223`](withastro/astro@a548223)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.4.1
##### [v8.0.0](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#800)

##### Major Changes

- [#17262](withastro/astro#17262) [`f8e9458`](withastro/astro@f8e9458) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Moves MDX file processing to the Markdown processors.

  '[@astrojs/mdx](https://github.com/astrojs/mdx)' is still required to add MDX support to your project. However, it now delegates the MDX files processing to Markdown processors.

##### What should I do?

If you haven't explicitly installed a Markdown processor, you don't need to do anything.

Otherwise, ensure that your configured Markdown processor uses the following version:

- `@astrojs/markdown-satteri` 0.4.0 or later if you use `satteri()`
- `@astrojs/markdown-remark` 7.3.0 or later if you use `unified()`

##### Patch Changes

- [#17262](withastro/astro#17262) [`f8e9458`](withastro/astro@f8e9458) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes `.mdx` files still using `markdown.processor` when `extendMarkdownConfig` is `false`. They now use a clean default processor instead; pass `mdx({ processor })` to choose one explicitly.

- [#17262](withastro/astro#17262) [`f8e9458`](withastro/astro@f8e9458) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a warning when the deprecated `remarkPlugins`, `rehypePlugins`, `recmaPlugins` and `remarkRehype` options are ignored because your Markdown processor does not run them. They still apply when your processor is `unified()`, and were previously dropped silently otherwise.

- Updated dependencies \[[`f8e9458`](withastro/astro@f8e9458), [`f8e9458`](withastro/astro@f8e9458)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.11.0
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.4.0
##### [v7.0.8](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#708)

##### Patch Changes

- [#17757](withastro/astro#17757) [`660991c`](withastro/astro@660991c) Thanks [@astro-factory](https://github.com/apps/astro-factory)! - Fixes build errors showing wrong file location, missing line:col, and misleading hints when a plugin error (e.g. from MDX) is wrapped by Vite's build error

- [#17766](withastro/astro#17766) [`0762a83`](withastro/astro@0762a83) Thanks [@HiDeoo](https://github.com/HiDeoo)! - Fixes Sätteri processor option types to accept all plugin entries supported by Sätteri v0.10.3.
##### [v7.0.7](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#707)

##### Patch Changes

- [#17731](withastro/astro#17731) [`bc171af`](withastro/astro@bc171af) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates Sätteri processor to v0.10.3. See [its changelog](https://github.com/bruits/satteri/blob/main/packages/satteri/CHANGELOG.md#0103--2026-08-19) for details on bugs fixed and features added.

- Updated dependencies \[[`05763a0`](withastro/astro@05763a0)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.4
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.4
##### [v7.0.6](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#706)

##### Patch Changes

- Updated dependencies \[[`8c193f6`](withastro/astro@8c193f6)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.3
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.3
##### [v7.0.5](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#705)

##### Patch Changes

- Updated dependencies \[[`c895b12`](withastro/astro@c895b12)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.2
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.2
##### [v7.0.4](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#704)

##### Patch Changes

- [#17514](withastro/astro#17514) [`41a00dd`](withastro/astro@41a00dd) Thanks [@gtritchie](https://github.com/gtritchie)! - Fixes a bug where the integration was emitting React-cased attribute names.
##### [v7.0.3](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#703)

##### Patch Changes

- [#17341](withastro/astro#17341) [`64b0d66`](withastro/astro@64b0d66) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes custom `pre` components not applying to syntax-highlighted code blocks when using the Sätteri Markdown processor with MDX.
##### [v7.0.2](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#702)

##### Patch Changes

- Updated dependencies \[[`eb6f97e`](withastro/astro@eb6f97e)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.1
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.1
##### [v7.0.1](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#701)

##### Patch Changes

- [#17249](withastro/astro#17249) [`02b73b0`](withastro/astro@02b73b0) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the `peerDependencies` field used incorrect dependencies.
##### [v7.0.0](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#700)

##### Major Changes

- [#15819](withastro/astro#15819) [`cafec4e`](withastro/astro@cafec4e) Thanks [@delucis](https://github.com/delucis)! - Upgrade to Vite v8

##### Minor Changes

- [#17093](withastro/astro#17093) [`4585fe5`](withastro/astro@4585fe5) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Replaces the import entrypoint of `getContainerRenderer()`

  A new `container-renderer` entrypoint exporting `getContainerRenderer()` has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

  If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the `getContainerRenderer()` import for React:

  ```diff
  - import { getContainerRenderer } from '@astrojs/react';
  + import { getContainerRenderer } from '@astrojs/react/container-renderer';
  ```

  Importing `getContainerRenderer()` from the package root still works, but is now deprecated and logs a warning.

- [#17129](withastro/astro#17129) [`ff7b718`](withastro/astro@ff7b718) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds support for [modifying frontmatter programmatically](https://docs.astro.build/en/guides/markdown-content/#modifying-frontmatter-programmatically) with the default Markdown processor.

  A Sätteri plugin can now read and mutate `ctx.data.astro.frontmatter`, and Astro uses the result as the page's frontmatter, in both Markdown and MDX.

##### Patch Changes

- [#17124](withastro/astro#17124) [`7e7ab87`](withastro/astro@7e7ab87) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates `satteri` to `0.9.0`. See the [Sätteri changelog](https://github.com/bruits/satteri/blob/main/packages/satteri/CHANGELOG.md) for details.

- [#17027](withastro/astro#17027) [`241250b`](withastro/astro@241250b) Thanks [@ocavue](https://github.com/ocavue)! - Triggers beta prereleases for packages that are still on alpha
##### [v6.0.3](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#603)

##### Patch Changes

- [#16969](withastro/astro#16969) [`4a31f90`](withastro/astro@4a31f90) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds support for Prism syntax highlighting to the Sätteri Markdown and MDX processors. Setting `markdown.syntaxHighlight` to `'prism'` now highlights your code blocks with Prism.

  ```js
  // astro.config.mjs
  import { satteri } from '@astrojs/markdown-satteri';

  export default defineConfig({
    markdown: {
      processor: satteri(),
      syntaxHighlight: 'prism',
    },
  });
  ```
##### [v6.0.2](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#602)

##### Patch Changes

- [#16955](withastro/astro#16955) [`9a93d68`](withastro/astro@9a93d68) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates Sätteri processor to v0.8.0. See [its changelog](https://github.com/bruits/satteri/blob/main/packages/satteri/CHANGELOG.md#080--2026-06-03) for details on bugs fixed and features added.

- Updated dependencies \[[`9a93d68`](withastro/astro@9a93d68)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.2.2
##### [v6.0.1](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#601)

##### Patch Changes

- Updated dependencies \[[`eeb064c`](withastro/astro@eeb064c)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.2.1
##### [v6.0.0](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#600)

##### Major Changes

- [#16848](withastro/astro#16848) [`f732f3c`](withastro/astro@f732f3c) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a new `markdown.processor` configuration option, allowing you to choose an alternative Markdown processor.

  Websites with many Markdown/MDX files tend to be slow to build because the unified ecosystem (e.g., remark, rehype) is slow to process. This feature introduces the ability to replace this part of the build pipeline with another processor.

  The default processor is `unified()`. This means that existing configurations remain unchanged and your remark/rehype plugins continue to work.

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import { unified } from '@astrojs/markdown-remark';
  import remarkToc from 'remark-toc';

  export default defineConfig({
    markdown: {
      processor: unified({
        remarkPlugins: [remarkToc],
      }),
    },
  });
  ```

  In addition to this new configuration option, Astro provides a new alternative processor based on Rust: [Sätteri](https://satteri.bruits.org/). You can choose to use it now by installing `@astrojs/markdown-satteri`, importing the `satteri()` processor, and adapting your existing configuration:

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import { satteri } from '@astrojs/markdown-satteri';

  export default defineConfig({
    markdown: {
      processor: satteri({
        features: { directive: true },
      }),
    },
  });
  ```

  This processor does not support the remark and rehype plugins. This means you may need to convert them to [MDAST or HAST plugins](https://satteri.bruits.org/docs/plugins/) to retain your current functionality.

  The existing top-level `markdown.remarkPlugins`, `markdown.rehypePlugins`, `markdown.remarkRehype`, `markdown.gfm`, and `markdown.smartypants` options still work, but are now deprecated and will be removed in a future major update. The matching `remarkPlugins`, `rehypePlugins`, and `remarkRehype` options on the MDX integration are also deprecated for the same reason. To anticipate their removal, move them onto `unified({...})` (or your preferred plugin processor) :

  ```diff
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import remarkToc from 'remark-toc';
  import rehypeSlug from 'rehype-slug';
  + import { unified } from '@astrojs/markdown-remark';

  export default defineConfig({
    markdown: {
  +    processor: unified({
  +      remarkPlugins: [remarkToc],
  +      rehypePlugins: [rehypeSlug],
  +      remarkRehype: true,
  +      gfm: true,
  +      smartypants: true,
  +    }),
  -    remarkPlugins: [remarkToc],
  -    rehypePlugins: [rehypeSlug],
  -    remarkRehype: true,
  -    gfm: true,
  -    smartypants: true,
    },
  });
  ```

  For more information on enabling and using this feature in your project, see our [Markdown guide](https://docs.astro.build/en/guides/markdown-content/). To give feedback on this new Rust processor, see the [Native Markdown / MDX parsing and processing RFC](withastro/roadmap#1364).

##### Minor Changes

- [#16848](withastro/astro#16848) [`f732f3c`](withastro/astro@f732f3c) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds support for using [`@astrojs/markdown-satteri`](https://www.npmjs.com/package/@astrojs/markdown-satteri) to parse `.mdx` files.

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import mdx from '@astrojs/mdx';
  import { satteri } from '@astrojs/markdown-satteri';

  export default defineConfig({
    markdown: {
      processor: satteri({
        features: { directive: true },
      }),
    },
    integrations: [mdx()],
  });
  ```

  Note that the [`recmaPlugins` option](https://docs.astro.build/en/guides/integrations-guide/mdx/#recmaplugins) is not supported when using Sätteri as your MDX processor. If you would like to use Sätteri for Markdown files, but still use Unified for MDX, you can pass a different Markdown processor to the MDX integration:

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import mdx from '@astrojs/mdx';
  import { satteri } from '@astrojs/markdown-satteri';
  import { unified } from '@astrojs/markdown-remark';
  import myPlugin from './my-recma-plugin.js';

  export default defineConfig({
    markdown: {
      processor: satteri({
        features: { directive: true },
      }),
    },
    integrations: [
      mdx({
        recmaPlugins: [myPlugin],
        processor: unified(),
      }),
    ],
  });
  ```

##### Patch Changes

- Updated dependencies \[[`f732f3c`](withastro/astro@f732f3c), [`f732f3c`](withastro/astro@f732f3c), [`f732f3c`](withastro/astro@f732f3c)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.0
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.0
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.2.0
##### [v5.0.6](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#506)

##### Patch Changes

- [#16579](withastro/astro#16579) [`49e10e3`](withastro/astro@49e10e3) Thanks [@igor-koop](https://github.com/igor-koop)! - Fixes an issue where the `smartypants` option was ignored.
##### [v5.0.5](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#505)

##### Patch Changes

- Updated dependencies \[[`9256345`](withastro/astro@9256345)]:
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.1.2
renovate Bot added a commit to gwennlbh/portfolio that referenced this pull request Oct 1, 2026
##### [v8.0.2](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#802)

##### Patch Changes

- [#18036](withastro/astro#18036) [`f4444eb`](withastro/astro@f4444eb) Thanks [@astro-factory](https://github.com/apps/astro-factory)! - Fixes an incompatibility where `@astrojs/mdx` v8 could be installed with `astro` versions that bundle an older `@astrojs/markdown-satteri` lacking MDX support. Also improves the error message when the processor is too old to suggest updating `astro` itself.
- Updated dependencies \[[`3fd16ee`](withastro/astro@3fd16ee), [`8358d59`](withastro/astro@8358d59)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.4.2
##### [v8.0.1](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#801)

##### Patch Changes

- Updated dependencies \[[`a548223`](withastro/astro@a548223)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.4.1
##### [v8.0.0](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#800)

##### Major Changes

- [#17262](withastro/astro#17262) [`f8e9458`](withastro/astro@f8e9458) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Moves MDX file processing to the Markdown processors.

  '[@astrojs/mdx](https://github.com/astrojs/mdx)' is still required to add MDX support to your project. However, it now delegates the MDX files processing to Markdown processors.

##### What should I do?

If you haven't explicitly installed a Markdown processor, you don't need to do anything.

Otherwise, ensure that your configured Markdown processor uses the following version:

- `@astrojs/markdown-satteri` 0.4.0 or later if you use `satteri()`
- `@astrojs/markdown-remark` 7.3.0 or later if you use `unified()`

##### Patch Changes

- [#17262](withastro/astro#17262) [`f8e9458`](withastro/astro@f8e9458) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes `.mdx` files still using `markdown.processor` when `extendMarkdownConfig` is `false`. They now use a clean default processor instead; pass `mdx({ processor })` to choose one explicitly.

- [#17262](withastro/astro#17262) [`f8e9458`](withastro/astro@f8e9458) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a warning when the deprecated `remarkPlugins`, `rehypePlugins`, `recmaPlugins` and `remarkRehype` options are ignored because your Markdown processor does not run them. They still apply when your processor is `unified()`, and were previously dropped silently otherwise.

- Updated dependencies \[[`f8e9458`](withastro/astro@f8e9458), [`f8e9458`](withastro/astro@f8e9458)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.11.0
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.4.0
##### [v7.0.8](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#708)

##### Patch Changes

- [#17757](withastro/astro#17757) [`660991c`](withastro/astro@660991c) Thanks [@astro-factory](https://github.com/apps/astro-factory)! - Fixes build errors showing wrong file location, missing line:col, and misleading hints when a plugin error (e.g. from MDX) is wrapped by Vite's build error

- [#17766](withastro/astro#17766) [`0762a83`](withastro/astro@0762a83) Thanks [@HiDeoo](https://github.com/HiDeoo)! - Fixes Sätteri processor option types to accept all plugin entries supported by Sätteri v0.10.3.
##### [v7.0.7](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#707)

##### Patch Changes

- [#17731](withastro/astro#17731) [`bc171af`](withastro/astro@bc171af) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates Sätteri processor to v0.10.3. See [its changelog](https://github.com/bruits/satteri/blob/main/packages/satteri/CHANGELOG.md#0103--2026-08-19) for details on bugs fixed and features added.

- Updated dependencies \[[`05763a0`](withastro/astro@05763a0)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.4
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.4
##### [v7.0.6](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#706)

##### Patch Changes

- Updated dependencies \[[`8c193f6`](withastro/astro@8c193f6)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.3
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.3
##### [v7.0.5](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#705)

##### Patch Changes

- Updated dependencies \[[`c895b12`](withastro/astro@c895b12)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.2
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.2
##### [v7.0.4](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#704)

##### Patch Changes

- [#17514](withastro/astro#17514) [`41a00dd`](withastro/astro@41a00dd) Thanks [@gtritchie](https://github.com/gtritchie)! - Fixes a bug where the integration was emitting React-cased attribute names.
##### [v7.0.3](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#703)

##### Patch Changes

- [#17341](withastro/astro#17341) [`64b0d66`](withastro/astro@64b0d66) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes custom `pre` components not applying to syntax-highlighted code blocks when using the Sätteri Markdown processor with MDX.
##### [v7.0.2](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#702)

##### Patch Changes

- Updated dependencies \[[`eb6f97e`](withastro/astro@eb6f97e)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.1
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.1
##### [v7.0.1](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#701)

##### Patch Changes

- [#17249](withastro/astro#17249) [`02b73b0`](withastro/astro@02b73b0) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the `peerDependencies` field used incorrect dependencies.
##### [v7.0.0](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#700)

##### Major Changes

- [#15819](withastro/astro#15819) [`cafec4e`](withastro/astro@cafec4e) Thanks [@delucis](https://github.com/delucis)! - Upgrade to Vite v8

##### Minor Changes

- [#17093](withastro/astro#17093) [`4585fe5`](withastro/astro@4585fe5) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Replaces the import entrypoint of `getContainerRenderer()`

  A new `container-renderer` entrypoint exporting `getContainerRenderer()` has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

  If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the `getContainerRenderer()` import for React:

  ```diff
  - import { getContainerRenderer } from '@astrojs/react';
  + import { getContainerRenderer } from '@astrojs/react/container-renderer';
  ```

  Importing `getContainerRenderer()` from the package root still works, but is now deprecated and logs a warning.

- [#17129](withastro/astro#17129) [`ff7b718`](withastro/astro@ff7b718) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds support for [modifying frontmatter programmatically](https://docs.astro.build/en/guides/markdown-content/#modifying-frontmatter-programmatically) with the default Markdown processor.

  A Sätteri plugin can now read and mutate `ctx.data.astro.frontmatter`, and Astro uses the result as the page's frontmatter, in both Markdown and MDX.

##### Patch Changes

- [#17124](withastro/astro#17124) [`7e7ab87`](withastro/astro@7e7ab87) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates `satteri` to `0.9.0`. See the [Sätteri changelog](https://github.com/bruits/satteri/blob/main/packages/satteri/CHANGELOG.md) for details.

- [#17027](withastro/astro#17027) [`241250b`](withastro/astro@241250b) Thanks [@ocavue](https://github.com/ocavue)! - Triggers beta prereleases for packages that are still on alpha
##### [v6.0.3](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#603)

##### Patch Changes

- [#16969](withastro/astro#16969) [`4a31f90`](withastro/astro@4a31f90) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds support for Prism syntax highlighting to the Sätteri Markdown and MDX processors. Setting `markdown.syntaxHighlight` to `'prism'` now highlights your code blocks with Prism.

  ```js
  // astro.config.mjs
  import { satteri } from '@astrojs/markdown-satteri';

  export default defineConfig({
    markdown: {
      processor: satteri(),
      syntaxHighlight: 'prism',
    },
  });
  ```
##### [v6.0.2](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#602)

##### Patch Changes

- [#16955](withastro/astro#16955) [`9a93d68`](withastro/astro@9a93d68) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates Sätteri processor to v0.8.0. See [its changelog](https://github.com/bruits/satteri/blob/main/packages/satteri/CHANGELOG.md#080--2026-06-03) for details on bugs fixed and features added.

- Updated dependencies \[[`9a93d68`](withastro/astro@9a93d68)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.2.2
##### [v6.0.1](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#601)

##### Patch Changes

- Updated dependencies \[[`eeb064c`](withastro/astro@eeb064c)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.2.1
##### [v6.0.0](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#600)

##### Major Changes

- [#16848](withastro/astro#16848) [`f732f3c`](withastro/astro@f732f3c) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a new `markdown.processor` configuration option, allowing you to choose an alternative Markdown processor.

  Websites with many Markdown/MDX files tend to be slow to build because the unified ecosystem (e.g., remark, rehype) is slow to process. This feature introduces the ability to replace this part of the build pipeline with another processor.

  The default processor is `unified()`. This means that existing configurations remain unchanged and your remark/rehype plugins continue to work.

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import { unified } from '@astrojs/markdown-remark';
  import remarkToc from 'remark-toc';

  export default defineConfig({
    markdown: {
      processor: unified({
        remarkPlugins: [remarkToc],
      }),
    },
  });
  ```

  In addition to this new configuration option, Astro provides a new alternative processor based on Rust: [Sätteri](https://satteri.bruits.org/). You can choose to use it now by installing `@astrojs/markdown-satteri`, importing the `satteri()` processor, and adapting your existing configuration:

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import { satteri } from '@astrojs/markdown-satteri';

  export default defineConfig({
    markdown: {
      processor: satteri({
        features: { directive: true },
      }),
    },
  });
  ```

  This processor does not support the remark and rehype plugins. This means you may need to convert them to [MDAST or HAST plugins](https://satteri.bruits.org/docs/plugins/) to retain your current functionality.

  The existing top-level `markdown.remarkPlugins`, `markdown.rehypePlugins`, `markdown.remarkRehype`, `markdown.gfm`, and `markdown.smartypants` options still work, but are now deprecated and will be removed in a future major update. The matching `remarkPlugins`, `rehypePlugins`, and `remarkRehype` options on the MDX integration are also deprecated for the same reason. To anticipate their removal, move them onto `unified({...})` (or your preferred plugin processor) :

  ```diff
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import remarkToc from 'remark-toc';
  import rehypeSlug from 'rehype-slug';
  + import { unified } from '@astrojs/markdown-remark';

  export default defineConfig({
    markdown: {
  +    processor: unified({
  +      remarkPlugins: [remarkToc],
  +      rehypePlugins: [rehypeSlug],
  +      remarkRehype: true,
  +      gfm: true,
  +      smartypants: true,
  +    }),
  -    remarkPlugins: [remarkToc],
  -    rehypePlugins: [rehypeSlug],
  -    remarkRehype: true,
  -    gfm: true,
  -    smartypants: true,
    },
  });
  ```

  For more information on enabling and using this feature in your project, see our [Markdown guide](https://docs.astro.build/en/guides/markdown-content/). To give feedback on this new Rust processor, see the [Native Markdown / MDX parsing and processing RFC](withastro/roadmap#1364).

##### Minor Changes

- [#16848](withastro/astro#16848) [`f732f3c`](withastro/astro@f732f3c) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds support for using [`@astrojs/markdown-satteri`](https://www.npmjs.com/package/@astrojs/markdown-satteri) to parse `.mdx` files.

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import mdx from '@astrojs/mdx';
  import { satteri } from '@astrojs/markdown-satteri';

  export default defineConfig({
    markdown: {
      processor: satteri({
        features: { directive: true },
      }),
    },
    integrations: [mdx()],
  });
  ```

  Note that the [`recmaPlugins` option](https://docs.astro.build/en/guides/integrations-guide/mdx/#recmaplugins) is not supported when using Sätteri as your MDX processor. If you would like to use Sätteri for Markdown files, but still use Unified for MDX, you can pass a different Markdown processor to the MDX integration:

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import mdx from '@astrojs/mdx';
  import { satteri } from '@astrojs/markdown-satteri';
  import { unified } from '@astrojs/markdown-remark';
  import myPlugin from './my-recma-plugin.js';

  export default defineConfig({
    markdown: {
      processor: satteri({
        features: { directive: true },
      }),
    },
    integrations: [
      mdx({
        recmaPlugins: [myPlugin],
        processor: unified(),
      }),
    ],
  });
  ```

##### Patch Changes

- Updated dependencies \[[`f732f3c`](withastro/astro@f732f3c), [`f732f3c`](withastro/astro@f732f3c), [`f732f3c`](withastro/astro@f732f3c)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.0
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.0
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.2.0
##### [v5.0.6](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#506)

##### Patch Changes

- [#16579](withastro/astro#16579) [`49e10e3`](withastro/astro@49e10e3) Thanks [@igor-koop](https://github.com/igor-koop)! - Fixes an issue where the `smartypants` option was ignored.
##### [v5.0.5](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#505)

##### Patch Changes

- Updated dependencies \[[`9256345`](withastro/astro@9256345)]:
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.1.2
renovate Bot added a commit to gwennlbh/portfolio that referenced this pull request Oct 5, 2026
##### [v8.0.2](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#802)

##### Patch Changes

- [#18036](withastro/astro#18036) [`f4444eb`](withastro/astro@f4444eb) Thanks [@astro-factory](https://github.com/apps/astro-factory)! - Fixes an incompatibility where `@astrojs/mdx` v8 could be installed with `astro` versions that bundle an older `@astrojs/markdown-satteri` lacking MDX support. Also improves the error message when the processor is too old to suggest updating `astro` itself.
- Updated dependencies \[[`3fd16ee`](withastro/astro@3fd16ee), [`8358d59`](withastro/astro@8358d59)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.4.2
##### [v8.0.1](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#801)

##### Patch Changes

- Updated dependencies \[[`a548223`](withastro/astro@a548223)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.4.1
##### [v8.0.0](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#800)

##### Major Changes

- [#17262](withastro/astro#17262) [`f8e9458`](withastro/astro@f8e9458) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Moves MDX file processing to the Markdown processors.

  '[@astrojs/mdx](https://github.com/astrojs/mdx)' is still required to add MDX support to your project. However, it now delegates the MDX files processing to Markdown processors.

##### What should I do?

If you haven't explicitly installed a Markdown processor, you don't need to do anything.

Otherwise, ensure that your configured Markdown processor uses the following version:

- `@astrojs/markdown-satteri` 0.4.0 or later if you use `satteri()`
- `@astrojs/markdown-remark` 7.3.0 or later if you use `unified()`

##### Patch Changes

- [#17262](withastro/astro#17262) [`f8e9458`](withastro/astro@f8e9458) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes `.mdx` files still using `markdown.processor` when `extendMarkdownConfig` is `false`. They now use a clean default processor instead; pass `mdx({ processor })` to choose one explicitly.

- [#17262](withastro/astro#17262) [`f8e9458`](withastro/astro@f8e9458) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a warning when the deprecated `remarkPlugins`, `rehypePlugins`, `recmaPlugins` and `remarkRehype` options are ignored because your Markdown processor does not run them. They still apply when your processor is `unified()`, and were previously dropped silently otherwise.

- Updated dependencies \[[`f8e9458`](withastro/astro@f8e9458), [`f8e9458`](withastro/astro@f8e9458)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.11.0
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.4.0
##### [v7.0.8](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#708)

##### Patch Changes

- [#17757](withastro/astro#17757) [`660991c`](withastro/astro@660991c) Thanks [@astro-factory](https://github.com/apps/astro-factory)! - Fixes build errors showing wrong file location, missing line:col, and misleading hints when a plugin error (e.g. from MDX) is wrapped by Vite's build error

- [#17766](withastro/astro#17766) [`0762a83`](withastro/astro@0762a83) Thanks [@HiDeoo](https://github.com/HiDeoo)! - Fixes Sätteri processor option types to accept all plugin entries supported by Sätteri v0.10.3.
##### [v7.0.7](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#707)

##### Patch Changes

- [#17731](withastro/astro#17731) [`bc171af`](withastro/astro@bc171af) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates Sätteri processor to v0.10.3. See [its changelog](https://github.com/bruits/satteri/blob/main/packages/satteri/CHANGELOG.md#0103--2026-08-19) for details on bugs fixed and features added.

- Updated dependencies \[[`05763a0`](withastro/astro@05763a0)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.4
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.4
##### [v7.0.6](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#706)

##### Patch Changes

- Updated dependencies \[[`8c193f6`](withastro/astro@8c193f6)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.3
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.3
##### [v7.0.5](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#705)

##### Patch Changes

- Updated dependencies \[[`c895b12`](withastro/astro@c895b12)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.2
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.2
##### [v7.0.4](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#704)

##### Patch Changes

- [#17514](withastro/astro#17514) [`41a00dd`](withastro/astro@41a00dd) Thanks [@gtritchie](https://github.com/gtritchie)! - Fixes a bug where the integration was emitting React-cased attribute names.
##### [v7.0.3](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#703)

##### Patch Changes

- [#17341](withastro/astro#17341) [`64b0d66`](withastro/astro@64b0d66) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Fixes custom `pre` components not applying to syntax-highlighted code blocks when using the Sätteri Markdown processor with MDX.
##### [v7.0.2](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#702)

##### Patch Changes

- Updated dependencies \[[`eb6f97e`](withastro/astro@eb6f97e)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.1
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.1
##### [v7.0.1](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#701)

##### Patch Changes

- [#17249](withastro/astro#17249) [`02b73b0`](withastro/astro@02b73b0) Thanks [@ematipico](https://github.com/ematipico)! - Fixes an issue where the `peerDependencies` field used incorrect dependencies.
##### [v7.0.0](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#700)

##### Major Changes

- [#15819](withastro/astro#15819) [`cafec4e`](withastro/astro@cafec4e) Thanks [@delucis](https://github.com/delucis)! - Upgrade to Vite v8

##### Minor Changes

- [#17093](withastro/astro#17093) [`4585fe5`](withastro/astro@4585fe5) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Replaces the import entrypoint of `getContainerRenderer()`

  A new `container-renderer` entrypoint exporting `getContainerRenderer()` has been added to the following integrations: React, Preact, Svelte, SolidJS, Vue, and MDX. This prevents bundlers from trying to bundle unrelated exports from the package root when only the Container API is used.

  If you are using the Container API, update your import statements to use the new entrypoint. The following example updates the `getContainerRenderer()` import for React:

  ```diff
  - import { getContainerRenderer } from '@astrojs/react';
  + import { getContainerRenderer } from '@astrojs/react/container-renderer';
  ```

  Importing `getContainerRenderer()` from the package root still works, but is now deprecated and logs a warning.

- [#17129](withastro/astro#17129) [`ff7b718`](withastro/astro@ff7b718) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds support for [modifying frontmatter programmatically](https://docs.astro.build/en/guides/markdown-content/#modifying-frontmatter-programmatically) with the default Markdown processor.

  A Sätteri plugin can now read and mutate `ctx.data.astro.frontmatter`, and Astro uses the result as the page's frontmatter, in both Markdown and MDX.

##### Patch Changes

- [#17124](withastro/astro#17124) [`7e7ab87`](withastro/astro@7e7ab87) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates `satteri` to `0.9.0`. See the [Sätteri changelog](https://github.com/bruits/satteri/blob/main/packages/satteri/CHANGELOG.md) for details.

- [#17027](withastro/astro#17027) [`241250b`](withastro/astro@241250b) Thanks [@ocavue](https://github.com/ocavue)! - Triggers beta prereleases for packages that are still on alpha
##### [v6.0.3](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#603)

##### Patch Changes

- [#16969](withastro/astro#16969) [`4a31f90`](withastro/astro@4a31f90) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds support for Prism syntax highlighting to the Sätteri Markdown and MDX processors. Setting `markdown.syntaxHighlight` to `'prism'` now highlights your code blocks with Prism.

  ```js
  // astro.config.mjs
  import { satteri } from '@astrojs/markdown-satteri';

  export default defineConfig({
    markdown: {
      processor: satteri(),
      syntaxHighlight: 'prism',
    },
  });
  ```
##### [v6.0.2](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#602)

##### Patch Changes

- [#16955](withastro/astro#16955) [`9a93d68`](withastro/astro@9a93d68) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Updates Sätteri processor to v0.8.0. See [its changelog](https://github.com/bruits/satteri/blob/main/packages/satteri/CHANGELOG.md#080--2026-06-03) for details on bugs fixed and features added.

- Updated dependencies \[[`9a93d68`](withastro/astro@9a93d68)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.2.2
##### [v6.0.1](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#601)

##### Patch Changes

- Updated dependencies \[[`eeb064c`](withastro/astro@eeb064c)]:
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.2.1
##### [v6.0.0](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#600)

##### Major Changes

- [#16848](withastro/astro#16848) [`f732f3c`](withastro/astro@f732f3c) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds a new `markdown.processor` configuration option, allowing you to choose an alternative Markdown processor.

  Websites with many Markdown/MDX files tend to be slow to build because the unified ecosystem (e.g., remark, rehype) is slow to process. This feature introduces the ability to replace this part of the build pipeline with another processor.

  The default processor is `unified()`. This means that existing configurations remain unchanged and your remark/rehype plugins continue to work.

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import { unified } from '@astrojs/markdown-remark';
  import remarkToc from 'remark-toc';

  export default defineConfig({
    markdown: {
      processor: unified({
        remarkPlugins: [remarkToc],
      }),
    },
  });
  ```

  In addition to this new configuration option, Astro provides a new alternative processor based on Rust: [Sätteri](https://satteri.bruits.org/). You can choose to use it now by installing `@astrojs/markdown-satteri`, importing the `satteri()` processor, and adapting your existing configuration:

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import { satteri } from '@astrojs/markdown-satteri';

  export default defineConfig({
    markdown: {
      processor: satteri({
        features: { directive: true },
      }),
    },
  });
  ```

  This processor does not support the remark and rehype plugins. This means you may need to convert them to [MDAST or HAST plugins](https://satteri.bruits.org/docs/plugins/) to retain your current functionality.

  The existing top-level `markdown.remarkPlugins`, `markdown.rehypePlugins`, `markdown.remarkRehype`, `markdown.gfm`, and `markdown.smartypants` options still work, but are now deprecated and will be removed in a future major update. The matching `remarkPlugins`, `rehypePlugins`, and `remarkRehype` options on the MDX integration are also deprecated for the same reason. To anticipate their removal, move them onto `unified({...})` (or your preferred plugin processor) :

  ```diff
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import remarkToc from 'remark-toc';
  import rehypeSlug from 'rehype-slug';
  + import { unified } from '@astrojs/markdown-remark';

  export default defineConfig({
    markdown: {
  +    processor: unified({
  +      remarkPlugins: [remarkToc],
  +      rehypePlugins: [rehypeSlug],
  +      remarkRehype: true,
  +      gfm: true,
  +      smartypants: true,
  +    }),
  -    remarkPlugins: [remarkToc],
  -    rehypePlugins: [rehypeSlug],
  -    remarkRehype: true,
  -    gfm: true,
  -    smartypants: true,
    },
  });
  ```

  For more information on enabling and using this feature in your project, see our [Markdown guide](https://docs.astro.build/en/guides/markdown-content/). To give feedback on this new Rust processor, see the [Native Markdown / MDX parsing and processing RFC](withastro/roadmap#1364).

##### Minor Changes

- [#16848](withastro/astro#16848) [`f732f3c`](withastro/astro@f732f3c) Thanks [@Princesseuh](https://github.com/Princesseuh)! - Adds support for using [`@astrojs/markdown-satteri`](https://www.npmjs.com/package/@astrojs/markdown-satteri) to parse `.mdx` files.

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import mdx from '@astrojs/mdx';
  import { satteri } from '@astrojs/markdown-satteri';

  export default defineConfig({
    markdown: {
      processor: satteri({
        features: { directive: true },
      }),
    },
    integrations: [mdx()],
  });
  ```

  Note that the [`recmaPlugins` option](https://docs.astro.build/en/guides/integrations-guide/mdx/#recmaplugins) is not supported when using Sätteri as your MDX processor. If you would like to use Sätteri for Markdown files, but still use Unified for MDX, you can pass a different Markdown processor to the MDX integration:

  ```js
  // astro.config.mjs
  import { defineConfig } from 'astro/config';
  import mdx from '@astrojs/mdx';
  import { satteri } from '@astrojs/markdown-satteri';
  import { unified } from '@astrojs/markdown-remark';
  import myPlugin from './my-recma-plugin.js';

  export default defineConfig({
    markdown: {
      processor: satteri({
        features: { directive: true },
      }),
    },
    integrations: [
      mdx({
        recmaPlugins: [myPlugin],
        processor: unified(),
      }),
    ],
  });
  ```

##### Patch Changes

- Updated dependencies \[[`f732f3c`](withastro/astro@f732f3c), [`f732f3c`](withastro/astro@f732f3c), [`f732f3c`](withastro/astro@f732f3c)]:
  - [@astrojs/internal-helpers](https://github.com/astrojs/internal-helpers)@0.10.0
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.2.0
  - [@astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@0.2.0
##### [v5.0.6](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#506)

##### Patch Changes

- [#16579](withastro/astro#16579) [`49e10e3`](withastro/astro@49e10e3) Thanks [@igor-koop](https://github.com/igor-koop)! - Fixes an issue where the `smartypants` option was ignored.
##### [v5.0.5](https://github.com/withastro/astro/blob/HEAD/packages/integrations/mdx/CHANGELOG.md#505)

##### Patch Changes

- Updated dependencies \[[`9256345`](withastro/astro@9256345)]:
  - [@astrojs/markdown-remark](https://github.com/astrojs/markdown-remark)@7.1.2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fix verified Reporter confirmed the triage bot fix works pkg: integration Related to any renderer integration (scope)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adding the latest markdown satteri package raises the error that "@astrojs/markdown-satteri is too old to render .mdx files."

1 participant