Back to Biomejs

noSuspiciousSemicolonInJsx

src/content/docs/linter/rules/no-suspicious-semicolon-in-jsx.mdx

latest3.1 KB
Original Source

import { Tabs, TabItem } from '@astrojs/starlight/components';

<Tabs> <TabItem label="JSX and TSX" icon="seti:javascript"> ## Summary - Rule available since: `v1.6.0` - Diagnostic Category: [`lint/suspicious/noSuspiciousSemicolonInJsx`](/reference/diagnostics#diagnostic-category) - This rule is **recommended**, meaning it is enabled by default. - This rule doesn't have a fix. - The default severity of this rule is [**warning**](/reference/diagnostics#warning). ## How to configure ```json title="biome.json" { "linter": { "rules": { "suspicious": { "noSuspiciousSemicolonInJsx": "error" } } } }
## Description
It detects possible "wrong" semicolons inside JSX elements.

Semicolons that appear after a self-closing element or a closing element are usually the result of a typo of a refactor gone wrong.

## Examples

### Invalid

```jsx
const Component = () => {
  return (
    <div>
      <div />;
    </div>
 );
}
<pre class="language-text"><code class="language-text">code-block.jsx:4:14 <a href="https://biomejs.dev/linter/rules/no-suspicious-semicolon-in-jsx">lint/suspicious/noSuspiciousSemicolonInJsx</a> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <strong><span style="color: Orange;">⚠</span></strong> <span style="color: Orange;">There is a suspicious </span><span style="color: Orange;"><strong>semicolon</strong></span><span style="color: Orange;"> in the JSX element.</span> <strong>2 │ </strong> return ( <strong>3 │ </strong> &lt;div&gt; <strong><span style="color: Tomato;">&gt;</span></strong> <strong>4 │ </strong> &lt;div /&gt;; <strong> │ </strong> <strong><span style="color: Tomato;">^</span></strong> <strong><span style="color: Tomato;">&gt;</span></strong> <strong>5 │ </strong> &lt;/div&gt; <strong> │ </strong> <strong>6 │ </strong> ); <strong>7 │ </strong>&#125; <strong><span style="color: lightgreen;">ℹ</span></strong> <span style="color: lightgreen;">This is usually the result of a typo or some refactor gone wrong.</span> <strong><span style="color: lightgreen;">ℹ</span></strong> <span style="color: lightgreen;">Remove the </span><span style="color: lightgreen;"><strong>semicolon</strong></span><span style="color: lightgreen;">, or move it inside a JSX element.</span> </code></pre>

Valid

jsx
const Component = () => {
  return (
    <div>
      <div />
      ;
    </div>
  );
}
const Component2 = () => {
  return (
    <div>
      <span>;</span>
    </div>
  );
}
</TabItem> </Tabs>