Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 21 additions & 9 deletions src/content/docs/internals/language-support.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ Legend:
| JSX | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> |
| TSX | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> |
| JSON | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> |
| JSONC | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span>|
| HTML* | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img"></span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img"></span> |
| SVG | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img"></span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img"></span> |
| [Vue](#html-super-languages-support) | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> |
| [Svelte](#html-super-languages-support) | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> |
| [Astro](#html-super-languages-support) | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> |
| JSONC | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Supported" role="img">✅</span> |
| HTML* | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Not in Progress" role="img">🚫</span> |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

sed -n '1,140p' src/content/docs/internals/language-support.mdx | cat -n

Repository: biomejs/website

Length of output: 11857


🏁 Script executed:

nl -ba src/content/docs/internals/language-support.mdx | sed -n '1,120p'

Repository: biomejs/website

Length of output: 189


🏁 Script executed:

rg -n "experimental|formatter|HTML\\*" src/content/docs/internals/language-support.mdx

Repository: biomejs/website

Length of output: 2324


Make the HTML formatting status consistent. The matrix shows HTML formatting as Supported, but the HTML section says the formatter is still experimental and must be enabled explicitly. Align the table with the config guidance.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/content/docs/internals/language-support.mdx` at line 20, Update the HTML
row in the language-support matrix so its formatting status is Experimental,
matching the HTML section’s configuration guidance that requires explicit
enablement; leave the other support statuses unchanged.

| SVG | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Supported" role="img">✅</span> | <span aria-label="Not in Progress" role="img">🚫</span> |
| [Vue](#html-super-languages-support) | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Not in Progress" role="img">🚫</span> |
| [Svelte](#html-super-languages-support) | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Not in Progress" role="img">🚫</span> |
| [Astro](#html-super-languages-support) | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Experimental" role="img">🟡</span> | <span aria-label="Not in Progress" role="img">🚫</span> |
| CSS | <span aria-label="Supported" role="img">✅️</span> | <span aria-label="Supported" role="img">✅️</span> | <span aria-label="Supported" role="img">✅️</span> | <span aria-label="Supported" role="img">✅</span> |
| SCSS | <span aria-label="In Progress" role="img">⌛️</span> | <span aria-label="In Progress" role="img">⌛️</span> | <span aria-label="Not in Progress" role="img">🚫</span> | <span aria-label="Not in Progress" role="img">🚫</span> |
| [YAML](https://github.com/biomejs/biome/issues/2365) | <span aria-label="In Progress" role="img">⌛️</span> | <span aria-label="In Progress" role="img">⌛️</span> | <span aria-label="Not in Progress" role="img">🚫</span> | <span aria-label="Not in Progress" role="img">🚫</span> |
Expand Down Expand Up @@ -79,9 +79,21 @@ Since version `v2.3.0`, Biome supports Vue, Svelte and Astro file out of the box

However, this **support must be considered experimental** and subject to changes and improvements. In `v2.3.0`, we landed the architecture that enables this feature, however some formatting and linting rules must be adjusted.

In particular, as for `v2.3.0`, Biome doesn't do any particular parsing for language specific syntax, for example the control-flow syntax of Svelte e.g. `{#if } {/if}`. This means that formatting might not match the desired expectations, and lint rules might not detect some cases.
Since version `v2.4.0`, Biome has much better support for language specific syntax, for example the control-flow syntax of Svelte e.g. `{#if}{/if}`. This should be sufficient for the majority of Svelte 5 projects, but newer features, rare syntax, or edge cases might not be covered yet.
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
Comment thread
dyc3 marked this conversation as resolved.
Outdated

Lint rules that work across embedded languages aren't supported yet.
Lint rules that work across embedded languages have support (and work a bit better since `v2.5.0`), but may flag some false positives, as the work is still in progress.

Since full support is still experimental, it must be enabled explicitly. The formatter is still experimental, so it must also be enabled explicitly.
```json title=biome.json
{
"html": {
"experimentalFullSupportEnabled": true,
"formatter": {
"enabled": true
}
}
}
```

### Linting HTML-ish languages

Expand Down Expand Up @@ -109,7 +121,7 @@ If you **lint** `.svelte`, `.astro` or `.vue` files and `html.experimentalFullSu
}
```

### Formatting with different settings
## Formatting with different settings

With Biome, you can control the formatting of different languages. Now that Biome can process multiple languages in the same file,
the chances of inconsistencies can grow based on your configuration.
Expand Down
Loading