Skip to content

Language support

Legend:

  • ✅: Supported
  • 🚫: Not in progress
  • ⌛️: In progress
  • ⚠️: Partially supported (with some caveats)
LanguageParsingFormattingLinting
JavaScript
TypeScript
JSX
TSX
JSON
JSONC
HTML⌛️🚫🚫
Vue⚠️⚠️⚠️
Svelte⚠️⚠️⚠️
Astro⚠️⚠️⚠️
CSS✅️⌛️⌛️
YAML⌛️🚫🚫
GraphQL⌛️🚫🚫
Markdown🚫🚫🚫

Biome supports the ES2023 version of the language.

Biome supports only the official syntax. The team starts development of the new syntax when a proposal reaches Stage 3.

Biome supports TypeScript version 5.2.

JSONC stands for “JSON with Comments.” This format is widely used by various tools like VS Code, TypeScript, Babel, etc. because it lets users add comments to configuration files. However, since JSONC isn’t a strictly defined standard, there’s some variation in how different tools handle trailing commas in JSONC files. To accommodate this, Biome doesn’t provide a dedicated language configuration for JSONC. Instead, we’ve enhanced our JSON parsing and formatting capabilities with options like json.parser.allowComments, json.parser.allowTrailingCommas, and json.formatter.trailingCommas. This approach allows Biome to effectively support different variants of JSON files.

For files with an extension name of .jsonc or those identified as jsonc according to the language identifier, Biome automatically applies the following default settings for parsing and formatting them:

  • json.parser.allowComments: true
  • json.parser.allowTrailingCommas: true
  • json.formatter.trailingCommas: none

Please note, some well-known files like tsconfig.json and .babelrc don’t use the .jsonc extension but still allow comments and trailing commas. While others, such as .eslintrc.json, only allow comments. Biome is able to identify these files and adjusts the json.parser.allowTrailingCommas option accordingly to ensure they are correctly parsed.

This section gives the full list of well-known files that Biome can recognize.

As of version 1.6.0, these languages are partially supported. Biome will get better over time, and it will provide more options to tweak your project. As for today, there are some expectations and limitations to take in consideration:

  • For .astro files, only the frontmatter portion of the file is supported.

  • For .vue and .svelte files, only the <script> tags portion of the file is supported.

  • Diagnostics will only show code frames that belong to the portions mentioned above.

  • When formatting .vue and .svelte files, the indentation of the JavaScript/TypeScript code will start from the beginning.

    file.vue
    <script>
    import Component from "./Component.vue";
    import Component from "./Component.vue";
    </script>
  • When linting .astro files, you have to add "Astro" to javascript.globals, to avoid possible false positives from some lint rules.

    biome.json
    {
    "javascript": {
    "globals": ["Astro"]
    }
    }
  • When linting .svelte files, it’s advised to turn off useConst to prevent compiler errors. Use the option overrides for that:

    {
    "overrides": [
    {
    "include": ["*.svelte"],
    "linter": {
    "rules": {
    "style": {
    "useConst": "off"
    }
    }
    }
    }
    ]
    }