<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://prettier.io/blog</id>
    <title>Prettier Blog</title>
    <updated>2025-11-27T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://prettier.io/blog"/>
    <subtitle>Prettier Blog</subtitle>
    <icon>https://prettier.io/icon.png</icon>
    <entry>
        <title type="html"><![CDATA[Prettier 3.7: Improved formatting consistency and new plugin features!]]></title>
        <id>https://prettier.io/blog/2025/11/27/3.7.0</id>
        <link href="https://prettier.io/blog/2025/11/27/3.7.0"/>
        <updated>2025-11-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We are excited to announce Prettier 3.7! This release focuses on polishing the TypeScript and Flow experience, specifically by aligning the formatting of classes and interfaces to be more consistent and predictable. We also want your opinion on the upcoming change to fix inconsistent opening brace print logic of class and interface body.]]></summary>
        <content type="html"><![CDATA[<p>We are excited to announce Prettier 3.7! This release focuses on polishing the TypeScript and Flow experience, specifically by aligning the formatting of classes and interfaces to be more consistent and predictable. We also want your opinion on the upcoming change to fix <a href="https://github.com/prettier/prettier/issues/18115" target="_blank" rel="noopener noreferrer" class="">inconsistent opening brace print logic of class and interface body</a>.</p>
<p>Additionally, we also fixed lots of bugs, added support for new features in Angular 21 and Graphql 16.12, added Front Matter support to Handlebars.</p>
<p>For plugin developers, we've added new APIs to give you more control over comment attachment and handling of ignored nodes.</p>
<p>If you appreciate Prettier and would like to support our work, please consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on. Thank you for your continued support!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2025/11/27/3.7.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2025/11/27/3.7.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18094">Fix the inconsistent printing between class and interface (<a href="https://github.com/prettier/prettier/pull/18094" target="_blank" rel="noopener noreferrer" class="">#18094</a>, <a href="https://github.com/prettier/prettier/pull/18091" target="_blank" rel="noopener noreferrer" class="">#18091</a>, <a href="https://github.com/prettier/prettier/pull/18215" target="_blank" rel="noopener noreferrer" class="">#18215</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18094" class="hash-link" aria-label="Direct link to change-18094" title="Direct link to change-18094" translate="no">​</a></h4>
<p>In this release, we've focused heavily on improving consistency between Class and Interface formatting. Previously, these two similar constructs were printed quite differently, leading to visual inconsistencies. We've aligned their formatting rules to provide a more predictable and cleaner output.</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-extra-indentation-for-type-parameters-in-class-has-been-removed">The extra indentation for type parameters in class has been removed<a href="https://prettier.io/blog/2025/11/27/3.7.0#the-extra-indentation-for-type-parameters-in-class-has-been-removed" class="hash-link" aria-label="Direct link to The extra indentation for type parameters in class has been removed" title="Direct link to The extra indentation for type parameters in class has been removed" translate="no">​</a></h5>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">MarkDef</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">M</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> </span><span class="token class-name builtin">string</span><span class="token class-name"> </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> Mark </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> Mark</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">declare</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">MarkDef</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">M</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> </span><span class="token class-name builtin">string</span><span class="token class-name"> </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> Mark </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> Mark</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">MarkDef</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">M</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> </span><span class="token class-name builtin">string</span><span class="token class-name"> </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> Mark </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> Mark</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">declare</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">MarkDef</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    </span><span class="token class-name constant" style="color:#36acaa">M</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> </span><span class="token class-name builtin">string</span><span class="token class-name"> </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> Mark </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> Mark</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    </span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">MarkDef</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">M</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> </span><span class="token class-name builtin">string</span><span class="token class-name"> </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> Mark </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> Mark</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">declare</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">MarkDef</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">M</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> </span><span class="token class-name builtin">string</span><span class="token class-name"> </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> Mark </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> Mark</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="align-interface-heritages-print-with-class">Align interface heritages print with class<a href="https://prettier.io/blog/2025/11/27/3.7.0#align-interface-heritages-print-with-class" class="hash-link" aria-label="Direct link to Align interface heritages print with class" title="Direct link to Align interface heritages print with class" translate="no">​</a></h5>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">AreaConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">MarkConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">PointOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">LineOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">AreaConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">MarkConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">PointOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">LineOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">AreaConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">MarkConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token maybe-class-name">PointOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token maybe-class-name">LineOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">AreaConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">MarkConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">PointOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">LineOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">AreaConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">MarkConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">PointOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">LineOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">AreaConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ExprRef </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> SignalRef</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">MarkConfig</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">ES</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">PointOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">LineOverlayMixins</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">ES</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="align-single-heritage-print-with-super-class">Align single heritage print with super class<a href="https://prettier.io/blog/2025/11/27/3.7.0#align-single-heritage-print-with-super-class" class="hash-link" aria-label="Direct link to Align single heritage print with super class" title="Direct link to Align single heritage print with super class" translate="no">​</a></h5>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">ExtendsLongOneWithGenerics</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token class-name">Bar</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">      SomeLongTypeSomeLongTypeSomeLongTypeSomeLongType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">      ToBreakLineToBreakLineToBreakLine</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    </span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">ExtendsLongOneWithGenerics</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token class-name">Bar</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">      SomeLongTypeSomeLongTypeSomeLongTypeSomeLongType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">      ToBreakLineToBreakLineToBreakLine</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    </span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">ExtendsLongOneWithGenerics</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token class-name">Bar</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">      SomeLongTypeSomeLongTypeSomeLongTypeSomeLongType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">      ToBreakLineToBreakLineToBreakLine</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    </span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">ExtendsLongOneWithGenerics</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">Bar</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  SomeLongTypeSomeLongTypeSomeLongTypeSomeLongType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  ToBreakLineToBreakLineToBreakLine</span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">ExtendsLongOneWithGenerics</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token class-name">Bar</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">      SomeLongTypeSomeLongTypeSomeLongTypeSomeLongType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">      ToBreakLineToBreakLineToBreakLine</span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    </span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">ExtendsLongOneWithGenerics</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">Bar</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    SomeLongTypeSomeLongTypeSomeLongTypeSomeLongType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    ToBreakLineToBreakLineToBreakLine</span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">ExtendsLongOneWithGenerics</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">Bar</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  SomeLongTypeSomeLongTypeSomeLongTypeSomeLongType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  ToBreakLineToBreakLineToBreakLine</span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">ExtendsLongOneWithGenerics</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">Bar</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  SomeLongTypeSomeLongTypeSomeLongTypeSomeLongType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  ToBreakLineToBreakLineToBreakLine</span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">ExtendsLongOneWithGenerics</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">Bar</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  SomeLongTypeSomeLongTypeSomeLongTypeSomeLongType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  ToBreakLineToBreakLineToBreakLine</span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="inconsistent-opening-brace-print-logic-of-class-and-interface-body">Inconsistent opening brace print logic of class and interface body<a href="https://prettier.io/blog/2025/11/27/3.7.0#inconsistent-opening-brace-print-logic-of-class-and-interface-body" class="hash-link" aria-label="Direct link to Inconsistent opening brace print logic of class and interface body" title="Direct link to Inconsistent opening brace print logic of class and interface body" translate="no">​</a></h5>
<p>In Prettier v2.3, to improve visual separation between class head and body, <a href="https://prettier.io/blog/2021/05/09/2.3.0.html#improve-visual-separation-between-header-and-body-in-classes-with-multiline-headers-10085-by-sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">we started to print the opening <code>{</code> of the class body on a new line when the class has multiple heritages</a>.</p>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">looooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  property</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">looooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  property</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>However, not everyone is happy with this change.</p>
<p>Let us know what you think about applying this change to interfaces by leaving a comment on <a href="https://github.com/prettier/prettier/issues/18115" target="_blank" rel="noopener noreferrer" class="">this issue</a>.</p>
<p>If you have a better solution for this issue, we'll be happy to discuss it too.</p>
<p>Unless a better solution comes along, we'll align the interface body print with the one for the class body in Prettier v4.</p>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">declare</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">looooooooooooooooooong</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> loooooooooooooooooooong </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  property</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">looooooooooooooooooong</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> loooooooooooooooooooong </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  property</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">declare</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">looooooooooooooooooong</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> loooooooooooooooooooong</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  property</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">looooooooooooooooooong</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> loooooooooooooooooooong </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// &lt;-- This</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  property</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p><em>These changes also affect Flow syntax</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2025/11/27/3.7.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2025/11/27/3.7.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17329">Allow break import attributes into multiple lines (<a href="https://github.com/prettier/prettier/pull/17329" target="_blank" rel="noopener noreferrer" class="">#17329</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17329" class="hash-link" aria-label="Direct link to change-17329" title="Direct link to change-17329" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">syntaxImportAssertions</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@babel/plugin-syntax-import-assertions"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">BABEL_8_BREAKING</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"false"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">USE_ESM</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"true"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">IS_STANDALONE</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"false"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">syntaxImportAssertions</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@babel/plugin-syntax-import-assertions"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">BABEL_8_BREAKING</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"false"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">USE_ESM</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"true"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">IS_STANDALONE</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"false"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">syntaxImportAssertions</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@babel/plugin-syntax-import-assertions"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">BABEL_8_BREAKING</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"false"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">USE_ESM</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"true"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">IS_STANDALONE</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"false"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17708">Add support for "Discard Bindings" proposal (<a href="https://github.com/prettier/prettier/pull/17708" target="_blank" rel="noopener noreferrer" class="">#17708</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17708" class="hash-link" aria-label="Direct link to change-17708" title="Direct link to change-17708" translate="no">​</a></h4>
<p>The Stage 2 proposal <a href="https://github.com/tc39/proposal-discard-binding" target="_blank" rel="noopener noreferrer" class="">"Discard Bindings"</a> is now supported via Babel. Also keep in mind our <a href="https://prettier.io/docs/en/rationale.html#disclaimer-about-non-standard-syntax" target="_blank" rel="noopener noreferrer" class="">policy on non-standardized syntax</a> before using this proposed syntax feature with Prettier.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token literal-property property" style="color:#36acaa">x</span><span class="token operator" style="color:#393A34">:</span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17723">Fix inconsistent comment format (<a href="https://github.com/prettier/prettier/pull/17723" target="_blank" rel="noopener noreferrer" class="">#17723</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17723" class="hash-link" aria-label="Direct link to change-17723" title="Direct link to change-17723" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// This is a really complicated part of the condition, so we need a big ol'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment here to explain it.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> flibble</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">blibble</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">blobble</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">bloo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doThings</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6 (--parser=typescript --experimental-operator-position=start)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// This is a really complicated part of the condition, so we need a big ol'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment here to explain it.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  flibble</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">blibble</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">blobble</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">bloo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doThings</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6 (--parser=babel --experimental-operator-position=start)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// This is a really complicated part of the condition, so we need a big ol'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment here to explain it.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> flibble</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">blibble</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">blobble</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">bloo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doThings</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// This is a really complicated part of the condition, so we need a big ol'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment here to explain it.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> flibble</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">blibble</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">blobble</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">bloo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doThings</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17876">Add additional Playwright test functions (<a href="https://github.com/prettier/prettier/pull/17876" target="_blank" rel="noopener noreferrer" class="">#17876</a> by <a href="https://github.com/BPScott" target="_blank" rel="noopener noreferrer" class="">@BPScott</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17876" class="hash-link" aria-label="Direct link to change-17876" title="Direct link to change-17876" translate="no">​</a></h4>
<p>Prettier already avoids changing indentation for test functions when you add <code>.skip</code> to
them. It now also treats the Playwright functions <a href="https://playwright.dev/docs/api/class-test#test-fixme" target="_blank" rel="noopener noreferrer" class=""><code>test.fixme</code></a>, <a href="https://playwright.dev/docs/api/class-test#test-describe-skip" target="_blank" rel="noopener noreferrer" class=""><code>test.describe.skip</code></a> and <a href="https://playwright.dev/docs/api/class-test#test-describe-fixme" target="_blank" rel="noopener noreferrer" class=""><code>test.describe.fixme</code></a> similar to <code>test.skip</code>.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fixme</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// code</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">skip</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// code</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fixme</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// code</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fixme</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// code</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">skip</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// code</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fixme</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// code</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fixme</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// code</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">skip</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// code</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fixme</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// code</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17882">Avoid break <code>{import,require.resolve,require.resolve.paths,import.meta.resolve}()</code> with long module name (<a href="https://github.com/prettier/prettier/pull/17882" target="_blank" rel="noopener noreferrer" class="">#17882</a>, <a href="https://github.com/prettier/prettier/pull/17908" target="_blank" rel="noopener noreferrer" class="">#17908</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a> &amp; <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17882" class="hash-link" aria-label="Direct link to change-17882" title="Direct link to change-17882" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> b </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> require</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> c </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> require</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">resolve</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">paths</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> d </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> e </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> b </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> require</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> c </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> require</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">resolve</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">paths</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> d </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> e </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> b </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  require</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> c </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> require</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">resolve</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">paths</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> d </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> e </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./a/long/long/long/long/long/long/long/long/long/long/long/path/to/module"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17998">Improve comment handing inside if statement (<a href="https://github.com/prettier/prettier/pull/17998" target="_blank" rel="noopener noreferrer" class="">#17998</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17998" class="hash-link" aria-label="Direct link to change-17998" title="Direct link to change-17998" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doThing</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment for else</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doSomethingElse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doThing</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment for else</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doSomethingElse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doThing</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment for else</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doSomethingElse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18037">Improve <code>require()</code> call with comments (<a href="https://github.com/prettier/prettier/pull/18037" target="_blank" rel="noopener noreferrer" class="">#18037</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18037" class="hash-link" aria-label="Direct link to change-18037" title="Direct link to change-18037" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token string" style="color:#e3116c">"foo"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18087">Remove indention in logical expression in <code>Boolean()</code> call (<a href="https://github.com/prettier/prettier/pull/18087" target="_blank" rel="noopener noreferrer" class="">#18087</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18087" class="hash-link" aria-label="Direct link to change-18087" title="Direct link to change-18087" translate="no">​</a></h4>
<p>Reduce diff when changing a condition to an opposite value, or change between <code>!!</code> and <code>Boolean()</code>.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Boolean</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!</span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Boolean</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a_long_long_long_condition</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!</span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Boolean</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!</span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18099">Fix comments handling for for-statements (<a href="https://github.com/prettier/prettier/pull/18099" target="_blank" rel="noopener noreferrer" class="">#18099</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18099" class="hash-link" aria-label="Direct link to change-18099" title="Direct link to change-18099" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18108">Improve comment printing around empty statement (<a href="https://github.com/prettier/prettier/pull/18108" target="_blank" rel="noopener noreferrer" class="">#18108</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18108" class="hash-link" aria-label="Direct link to change-18108" title="Direct link to change-18108" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  index </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doSomething</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">index</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!==</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">doSomething</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">index</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!==</span><span class="token plain"> baz</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  index </span><span class="token operator" style="color:#393A34">++</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* No op */</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  index </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doSomething</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">index</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!==</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">doSomething</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">index</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!==</span><span class="token plain"> baz</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  index</span><span class="token operator" style="color:#393A34">++</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* No op */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  index </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">doSomething</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">index</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!==</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">doSomething</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">index</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!==</span><span class="token plain"> baz</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  index</span><span class="token operator" style="color:#393A34">++</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* No op */</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18147">Fix inconsistent comment print between class methods and object methods (<a href="https://github.com/prettier/prettier/pull/18147" target="_blank" rel="noopener noreferrer" class="">#18147</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18147" class="hash-link" aria-label="Direct link to change-18147" title="Direct link to change-18147" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">x</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Class method</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> object </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Object method</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">x</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Class method</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> object </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// Object method</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">x</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// class method</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> object </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// object method</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18163">Add missing parentheses in bitwise operators (<a href="https://github.com/prettier/prettier/pull/18163" target="_blank" rel="noopener noreferrer" class="">#18163</a> by <a href="https://github.com/fs0414" target="_blank" rel="noopener noreferrer" class="">@fs0414</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18163" class="hash-link" aria-label="Direct link to change-18163" title="Direct link to change-18163" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">bit </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">bit </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token plain"> bit </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">bit </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">bit </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">bit </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">8</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18172">Fix inconsistent break for array literals (<a href="https://github.com/prettier/prettier/pull/18172" target="_blank" rel="noopener noreferrer" class="">#18172</a> by <a href="https://github.com/Dunqing" target="_blank" rel="noopener noreferrer" class="">@Dunqing</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18172" class="hash-link" aria-label="Direct link to change-18172" title="Direct link to change-18172" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">assert</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">deepStrictEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">linesCollection</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getViewLinesIndentGuides___</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">assert</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">deepStrictEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">linesCollection</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getViewLinesIndentGuides</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">assert</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">deepStrictEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">linesCollection</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getViewLinesIndentGuides___</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">assert</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">deepStrictEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  linesCollection</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getViewLinesIndentGuides</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">assert</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">deepStrictEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  linesCollection</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getViewLinesIndentGuides___</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">assert</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">deepStrictEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  linesCollection</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getViewLinesIndentGuides</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18205">Fix inconsistent logical expression print (<a href="https://github.com/prettier/prettier/pull/18205" target="_blank" rel="noopener noreferrer" class="">#18205</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18205" class="hash-link" aria-label="Direct link to change-18205" title="Direct link to change-18205" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">fn</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a_long_long_long_long_long_long_long_long_long_long_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> b</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">Fn</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a_long_long_long_long_long_long_long_long_long_long_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> b</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">fn</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a_long_long_long_long_long_long_long_long_long_long_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">Fn</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_long_long_long_long_long_long_long_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">fn</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a_long_long_long_long_long_long_long_long_long_long_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">Fn</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a_long_long_long_long_long_long_long_long_long_long_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18206">Fix inconsistent print between <code>CallExpression</code> and <code>NewExpression</code> (<a href="https://github.com/prettier/prettier/pull/18206" target="_blank" rel="noopener noreferrer" class="">#18206</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18206" class="hash-link" aria-label="Direct link to change-18206" title="Direct link to change-18206" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function maybe-class-name" style="color:#d73a49">TelemetryTrustedValue</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  instance</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">capabilities</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token maybe-class-name">TerminalCapability</span><span class="token operator" style="color:#393A34">?.</span><span class="token maybe-class-name">PromptTypeDetection</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">promptType</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">TelemetryTrustedValue</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  instance</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">capabilities</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token maybe-class-name">TerminalCapability</span><span class="token operator" style="color:#393A34">?.</span><span class="token maybe-class-name">PromptTypeDetection</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">promptType</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function maybe-class-name" style="color:#d73a49">TelemetryTrustedValue</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  instance</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">capabilities</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token maybe-class-name">TerminalCapability</span><span class="token operator" style="color:#393A34">?.</span><span class="token maybe-class-name">PromptTypeDetection</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">promptType</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">TelemetryTrustedValue</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  instance</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">capabilities</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token maybe-class-name">TerminalCapability</span><span class="token operator" style="color:#393A34">?.</span><span class="token maybe-class-name">PromptTypeDetection</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">promptType</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function maybe-class-name" style="color:#d73a49">TelemetryTrustedValue</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  instance</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">capabilities</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token maybe-class-name">TerminalCapability</span><span class="token operator" style="color:#393A34">?.</span><span class="token maybe-class-name">PromptTypeDetection</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">promptType</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">TelemetryTrustedValue</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  instance</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">capabilities</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token maybe-class-name">TerminalCapability</span><span class="token operator" style="color:#393A34">?.</span><span class="token maybe-class-name">PromptTypeDetection</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">promptType</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18243">Remove redundant parentheses around JSX element (<a href="https://github.com/prettier/prettier/pull/18243" target="_blank" rel="noopener noreferrer" class="">#18243</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18243" class="hash-link" aria-label="Direct link to change-18243" title="Direct link to change-18243" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18245">Improve formatting of logical expression as callee of new expression (<a href="https://github.com/prettier/prettier/pull/18245" target="_blank" rel="noopener noreferrer" class="">#18245</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18245" class="hash-link" aria-label="Direct link to change-18245" title="Direct link to change-18245" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"> a_long_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"> a_long_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a_long_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_long_condition</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_long_condition </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a_long_long_long_long_condition</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18300">Remove empty line in for statement without "update" (<a href="https://github.com/prettier/prettier/pull/18300" target="_blank" rel="noopener noreferrer" class="">#18300</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18300" class="hash-link" aria-label="Direct link to change-18300" title="Direct link to change-18300" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> j </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> len </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> allMatches</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> lenJ </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> selections</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain">i </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> len</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> j </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> len </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> allMatches</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> lenJ </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> selections</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  i </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> len</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> j </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> len </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> allMatches</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> lenJ </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> selections</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  i </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"> len</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18325">Improve super class format (<a href="https://github.com/prettier/prettier/pull/18325" target="_blank" rel="noopener noreferrer" class="">#18325</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18325" class="hash-link" aria-label="Direct link to change-18325" title="Direct link to change-18325" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">EnsureNoDisposablesAreLeakedInTestSuiteSuite</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">eslint</span><span class="token class-name punctuation" style="color:#393A34">.</span><span class="token class-name">Rule</span><span class="token class-name punctuation" style="color:#393A34">.</span><span class="token class-name">RuleModule</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">EnsureNoDisposablesAreLeakedInTestSuiteSuite</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">eslint</span><span class="token class-name punctuation" style="color:#393A34">.</span><span class="token class-name">Rule</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">RuleModule</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">EnsureNoDisposablesAreLeakedInTestSuiteSuite</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">eslint</span><span class="token class-name punctuation" style="color:#393A34">.</span><span class="token class-name">Rule</span><span class="token class-name punctuation" style="color:#393A34">.</span><span class="token class-name">RuleModule</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript-1">TypeScript<a href="https://prettier.io/blog/2025/11/27/3.7.0#typescript-1" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17421">Fix misplacement of comments after arrow (<a href="https://github.com/prettier/prettier/pull/17421" target="_blank" rel="noopener noreferrer" class="">#17421</a> by <a href="https://github.com/o-m12a" target="_blank" rel="noopener noreferrer" class="">@o-m12a</a>, <a href="https://github.com/t-mangoe" target="_blank" rel="noopener noreferrer" class="">@t-mangoe</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17421" class="hash-link" aria-label="Direct link to change-17421" title="Direct link to change-17421" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> test </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* first line</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">second line</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">*/</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> test </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* first line</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">second line</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">*/</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6 (Second format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Unexpected </span><span class="token function" style="color:#d73a49">token</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">22</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> test </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* first line</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">    |                      ^</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">  2 | second line</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">  3 | */</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">4</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> test </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">/* first line</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">second line</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">*/</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17724">Add missing parentheses to arrow function in instantiation expression (<a href="https://github.com/prettier/prettier/pull/17724" target="_blank" rel="noopener noreferrer" class="">#17724</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17724" class="hash-link" aria-label="Direct link to change-17724" title="Direct link to change-17724" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">_T</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">extends</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">never</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">() =&gt; </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text">)</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">never</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">void </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">_T</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">extends</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">never</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">() =&gt; </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">never</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.7</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">void (</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">_T</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">extends</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">never</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">() =&gt; </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text">)</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">never</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17785">Fix <code>TSMappedType</code> format (<a href="https://github.com/prettier/prettier/pull/17785" target="_blank" rel="noopener noreferrer" class="">#17785</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17785" class="hash-link" aria-label="Direct link to change-17785" title="Direct link to change-17785" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input (--parser=babel-ts)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">C</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">D</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">infer</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">E</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">F</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">G</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">H</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">TypeError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Cannot</span><span class="token plain"> read properties </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">undefined</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">reading </span><span class="token string" style="color:#e3116c">'startsWith'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">C</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">D</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">infer</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">E</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">F</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">G</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">H</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17798">Print trailing comma in <code>TSImportType</code> options (<a href="https://github.com/prettier/prettier/pull/17798" target="_blank" rel="noopener noreferrer" class="">#17798</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17798" class="hash-link" aria-label="Direct link to change-17798" title="Direct link to change-17798" translate="no">​</a></h4>
<p>Trailing comma in import type attribute wasn't allowed before TypeScript v5.9, now <a href="https://github.com/microsoft/TypeScript/issues/61916" target="_blank" rel="noopener noreferrer" class="">the bug</a> has been fixed.</p>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">with</span><span class="token operator" style="color:#393A34">:</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        type</span><span class="token operator" style="color:#393A34">:</span><span class="token string" style="color:#e3116c">'json'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// &lt;- Should be a comma here</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">with</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// &lt;- Should be a comma here</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">with</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// &lt;- Should be a comma here</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18035">Improve CommonJS module <code>require()</code> with comments (<a href="https://github.com/prettier/prettier/pull/18035" target="_blank" rel="noopener noreferrer" class="">#18035</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18035" class="hash-link" aria-label="Direct link to change-18035" title="Direct link to change-18035" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token string" style="color:#e3116c">"foo"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18043">Line breaking after <code>=</code> in type parameters (<a href="https://github.com/prettier/prettier/pull/18043" target="_blank" rel="noopener noreferrer" class="">#18043</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18043" class="hash-link" aria-label="Direct link to change-18043" title="Direct link to change-18043" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">OuterType2</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  LongerLongerLongerLongerInnerType </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> LongerLongerLongerLongerLongerLongerLongerLongerOtherType</span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">OuterType2</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  LongerLongerLongerLongerInnerType </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"> LongerLongerLongerLongerLongerLongerLongerLongerOtherType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">OuterType2</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  LongerLongerLongerLongerInnerType </span><span class="token class-name operator" style="color:#393A34">=</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    LongerLongerLongerLongerLongerLongerLongerLongerOtherType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18109">Remove unexpected blank line before union types (<a href="https://github.com/prettier/prettier/pull/18109" target="_blank" rel="noopener noreferrer" class="">#18109</a> by <a href="https://github.com/jspereiramoura" target="_blank" rel="noopener noreferrer" class="">@jspereiramoura</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18109" class="hash-link" aria-label="Direct link to change-18109" title="Direct link to change-18109" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">SuperLongTypeNameLoremIpsumLoremIpsumBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBla</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">SuperLongTypeNameLoremIpsumLoremIpsumBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBla</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">SuperLongTypeNameLoremIpsumLoremIpsumBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBla</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p><em>This change also affect Flow syntax</em></p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18110">Fix inconsistent comment printing between <code>typescript</code> and <code>flow</code> parser (<a href="https://github.com/prettier/prettier/pull/18110" target="_blank" rel="noopener noreferrer" class="">#18110</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18110" class="hash-link" aria-label="Direct link to change-18110" title="Direct link to change-18110" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  b</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  c</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  	</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6 (--parser=typescript)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  b</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  c</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6 (--parser=flow)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  b</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  c</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7 (Same output for `--parser=typescript` and `--parser=flow`)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  b</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  c</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18118">Fix missing semicolon before call signatures (<a href="https://github.com/prettier/prettier/pull/18118" target="_blank" rel="noopener noreferrer" class="">#18118</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18118" class="hash-link" aria-label="Direct link to change-18118" title="Direct link to change-18118" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">(): T;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">type B = </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">(): T;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.6 (--no-semi, first format)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">interface A </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token generic-function function" style="color:#d73a49">foo</span><span class="token generic-function"></span><br></span><span class="token-line" style="color:#393A34"><span class="token generic-function">  </span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name constant" style="color:#36acaa">T</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">type B = </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token generic-function function" style="color:#d73a49">foo</span><span class="token generic-function"></span><br></span><span class="token-line" style="color:#393A34"><span class="token generic-function">  </span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name constant" style="color:#36acaa">T</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.6 (--no-semi, second format)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">interface A </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token generic-function function" style="color:#d73a49">foo</span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name constant" style="color:#36acaa">T</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">type B = </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token generic-function function" style="color:#d73a49">foo</span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name constant" style="color:#36acaa">T</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.7</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">interface A </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">(): T</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">type B = </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">(): T</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18161">Fix inconsistent print of <code>as const</code> between flow and typescript parsers (<a href="https://github.com/prettier/prettier/pull/18161" target="_blank" rel="noopener noreferrer" class="">#18161</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18161" class="hash-link" aria-label="Direct link to change-18161" title="Direct link to change-18161" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6 (--parser=typescript)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6 (--parser=flow)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7 (Same output for `--parser=typescript` and `--parser=flow`)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18162">Fix comment around <code>as</code>/<code>satisfies</code> expression (<a href="https://github.com/prettier/prettier/pull/18162" target="_blank" rel="noopener noreferrer" class="">#18162</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18162" class="hash-link" aria-label="Direct link to change-18162" title="Direct link to change-18162" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/*</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">*/</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6 (First format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/*</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">*/</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6 (Second format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Unexpected</span><span class="token plain"> keyword or identifier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">3</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/*</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">  2 | comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&gt; 3 | */</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">    </span><span class="token operator" style="color:#393A34">^</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">4</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/*</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">*/</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18165">Fix miss aligned union type (<a href="https://github.com/prettier/prettier/pull/18165" target="_blank" rel="noopener noreferrer" class="">#18165</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18165" class="hash-link" aria-label="Direct link to change-18165" title="Direct link to change-18165" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">I</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  elements</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ObjectExpression</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">I</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  elements</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ObjectExpression</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">I</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  elements</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionNode</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">ObjectExpression</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18197">Remove extra empty line in union type (<a href="https://github.com/prettier/prettier/pull/18197" target="_blank" rel="noopener noreferrer" class="">#18197</a> by <a href="https://github.com/Dunqing" target="_blank" rel="noopener noreferrer" class="">@Dunqing</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18197" class="hash-link" aria-label="Direct link to change-18197" title="Direct link to change-18197" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">SuperLongTypeNameLoremIpsumLoremIpsumBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBla</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">SuperLongTypeNameLoremIpsumLoremIpsumBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBla</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">SuperLongTypeNameLoremIpsumLoremIpsumBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBla</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Fooo1000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">Baz2000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token maybe-class-name">BarLoooooooooooooooooooooooooooooooooooooooooooooooooLong</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow">Flow<a href="https://prettier.io/blog/2025/11/27/3.7.0#flow" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17681">Add basic support for "match" syntax (<a href="https://github.com/prettier/prettier/pull/17681" target="_blank" rel="noopener noreferrer" class="">#17681</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17681" class="hash-link" aria-label="Direct link to change-17681" title="Direct link to change-17681" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> e </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">match</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">a</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">'foo'</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token literal-property property" style="color:#36acaa">obj</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'literal'</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Unexpected</span><span class="token plain"> token </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">{</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> expected the token </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">;</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">21</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> e </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">match</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">a</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">                     </span><span class="token operator" style="color:#393A34">^</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">   </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">   </span><span class="token string" style="color:#e3116c">'foo'</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">4</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">   </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token literal-property property" style="color:#36acaa">obj</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'literal'</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> e </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">match</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">a</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">obj</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"literal"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17792">Add support for opaque type with lower and upper bound (<a href="https://github.com/prettier/prettier/pull/17792" target="_blank" rel="noopener noreferrer" class="">#17792</a> by <a href="https://github.com/SamChou19815" target="_blank" rel="noopener noreferrer" class="">@SamChou19815</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17792" class="hash-link" aria-label="Direct link to change-17792" title="Direct link to change-17792" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">opaque type </span><span class="token maybe-class-name">Counter</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">super</span><span class="token plain"> empty </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">Box</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = Container</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">opaque type Counter super Box</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = Container</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">declare opaque type Counter super empty extends Box</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">declare opaque type Counter super Box</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">SyntaxError: Unexpected identifier, expected the token `=` (1:21)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.7</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">opaque type Counter super empty extends Box</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = Container</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">opaque type Counter super Box</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = Container</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">declare opaque type Counter super empty extends Box</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">declare opaque type Counter super Box</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="css">CSS<a href="https://prettier.io/blog/2025/11/27/3.7.0#css" class="hash-link" aria-label="Direct link to CSS" title="Direct link to CSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17841">Handle attribute selector with case-sensitive and uppercase case-insensitive flags (<a href="https://github.com/prettier/prettier/pull/17841" target="_blank" rel="noopener noreferrer" class="">#17841</a>, <a href="https://github.com/prettier/prettier/pull/17865" target="_blank" rel="noopener noreferrer" class="">#17865</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17841" class="hash-link" aria-label="Direct link to change-17841" title="Direct link to change-17841" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">a</span><span class="token selector attribute" style="color:#00009f"> </span><span class="token selector attribute case-sensitivity keyword" style="color:#00009f">s</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">a</span><span class="token selector attribute" style="color:#00009f"> </span><span class="token selector attribute case-sensitivity keyword" style="color:#00009f">S</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">a</span><span class="token selector attribute" style="color:#00009f"> </span><span class="token selector attribute case-sensitivity keyword" style="color:#00009f">I</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">list-style-type</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> lower-alpha</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.6 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"a s"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"a S"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"a I"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">list-style-type</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> lower-alpha</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.7 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"a"</span><span class="token selector attribute" style="color:#00009f"> </span><span class="token selector attribute case-sensitivity keyword" style="color:#00009f">s</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"a"</span><span class="token selector attribute" style="color:#00009f"> </span><span class="token selector attribute case-sensitivity keyword" style="color:#00009f">S</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"a"</span><span class="token selector attribute" style="color:#00009f"> </span><span class="token selector attribute case-sensitivity keyword" style="color:#00009f">I</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">list-style-type</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> lower-alpha</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17899">Fix crash when formatting special custom properties (<a href="https://github.com/prettier/prettier/pull/17899" target="_blank" rel="noopener noreferrer" class="">#17899</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17899" class="hash-link" aria-label="Direct link to change-17899" title="Direct link to change-17899" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:root</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--l</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token hexcode color">#000</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.6 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property" style="color:#36acaa">TypeError</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Cannot read properties of undefined </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">reading </span><span class="token string" style="color:#e3116c">'value'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.7 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:root</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--l</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token hexcode color">#000</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17929">Fix selector been lowercased incorrectly inside css modules (<a href="https://github.com/prettier/prettier/pull/17929" target="_blank" rel="noopener noreferrer" class="">#17929</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17929" class="hash-link" aria-label="Direct link to change-17929" title="Direct link to change-17929" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">nest:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">myColor</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">blue</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">myColor</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">red</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.6 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">nest:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">mycolor</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">blue</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">myColor</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">red</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.7 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">nest:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">myColor</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">blue</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">myColor</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">red</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17938">Fix formatting of CSS selectors contains <code>//</code> (<a href="https://github.com/prettier/prettier/pull/17938" target="_blank" rel="noopener noreferrer" class="">#17938</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17938" class="hash-link" aria-label="Direct link to change-17938" title="Direct link to change-17938" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">href</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"http://example.com"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">red</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.6 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">href</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"http://example.com"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">red</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.7 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">href</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"http://example.com"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">red</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18114">Remove unexpected space between font size and line height (<a href="https://github.com/prettier/prettier/pull/18114" target="_blank" rel="noopener noreferrer" class="">#18114</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18114" class="hash-link" aria-label="Direct link to change-18114" title="Direct link to change-18114" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">font</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--size</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">/</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.6 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">font</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--size</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.7 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">font</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--size</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">/</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18228">Fix extra indent for CSS comma-separated values after a block comment (<a href="https://github.com/prettier/prettier/pull/18228" target="_blank" rel="noopener noreferrer" class="">#18228</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18228" class="hash-link" aria-label="Direct link to change-18228" title="Direct link to change-18228" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">background-image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">to top</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">blue</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">red</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100</span><span class="token unit">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">/* texture */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">repeating-linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">90</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">yellow</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">green</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">40</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">repeating-linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">90</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">yellow</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">green</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">40</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.6 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">background-image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">to top</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">blue</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">red</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100</span><span class="token unit">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">/* texture */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token function" style="color:#d73a49">repeating-linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">90</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">yellow</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">green</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">40</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">repeating-linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">90</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">yellow</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">green</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">40</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.7 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">background-image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">to top</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">blue</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">red</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">100</span><span class="token unit">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">/* texture */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">repeating-linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">90</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">yellow</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">green</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">40</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">repeating-linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">90</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">yellow</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">green</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token color">pink</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">40</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scss">SCSS<a href="https://prettier.io/blog/2025/11/27/3.7.0#scss" class="hash-link" aria-label="Direct link to SCSS" title="Direct link to SCSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17836">Fix parentheses space problem in mixin argument (<a href="https://github.com/prettier/prettier/pull/17836" target="_blank" rel="noopener noreferrer" class="">#17836</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17836" class="hash-link" aria-label="Direct link to change-17836" title="Direct link to change-17836" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.foo </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">@include</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'A (B)'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.foo </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">@include</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'A( B)'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.foo </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">@include</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'A (B)'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17903">Fix formatting of space-separated values (<a href="https://github.com/prettier/prettier/pull/17903" target="_blank" rel="noopener noreferrer" class="">#17903</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17903" class="hash-link" aria-label="Direct link to change-17903" title="Direct link to change-17903" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.foo </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">@include</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">transition</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">min-height </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">$spacer</span><span class="token plain">/</span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> ease-in-out</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.foo </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">@include</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">transition</span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">min-height</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">$spacer</span><span class="token plain">/</span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> ease-in-out</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.foo </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">@include</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">transition</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">min-height </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">$spacer</span><span class="token plain">/</span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> ease-in-out</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="less">Less<a href="https://prettier.io/blog/2025/11/27/3.7.0#less" class="hash-link" aria-label="Direct link to Less" title="Direct link to Less" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17820">Fix variable name being lowercased incorrectly (<a href="https://github.com/prettier/prettier/pull/17820" target="_blank" rel="noopener noreferrer" class="">#17820</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17820" class="hash-link" aria-label="Direct link to change-17820" title="Direct link to change-17820" translate="no">​</a></h4>
<div class="language-less codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-less codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">@fooBackground</span><span class="token variable punctuation" style="color:#393A34">:</span><span class="token plain">line</span><span class="token operator" style="color:#393A34">-</span><span class="token function" style="color:#d73a49">gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token hexcode color">#f00</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">background</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">@fooBackground</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">@foobackground</span><span class="token variable punctuation" style="color:#393A34">:</span><span class="token plain">line</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">gradient </span><span class="token punctuation" style="color:#393A34">(</span><span class="token hexcode color">#f00</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">background</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">@fooBackground</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">@fooBackground</span><span class="token variable punctuation" style="color:#393A34">:</span><span class="token plain"> line</span><span class="token operator" style="color:#393A34">-</span><span class="token function" style="color:#d73a49">gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token hexcode color">#f00</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">background</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">@fooBackground</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17983">Keep property/variable accessors tight (<a href="https://github.com/prettier/prettier/pull/17983" target="_blank" rel="noopener noreferrer" class="">#17983</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17983" class="hash-link" aria-label="Direct link to change-17983" title="Direct link to change-17983" translate="no">​</a></h4>
<div class="language-less codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-less codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.average(</span><span class="token selector variable" style="color:#36acaa">@x</span><span class="token selector" style="color:#00009f">, </span><span class="token selector variable" style="color:#36acaa">@y</span><span class="token selector" style="color:#00009f">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">@result</span><span class="token variable punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">@x</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">@y</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">div</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">padding</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> .</span><span class="token function" style="color:#d73a49">average</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">16</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">50</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">   [   </span><span class="token variable" style="color:#36acaa">@result</span><span class="token plain">   ]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.average(</span><span class="token selector variable" style="color:#36acaa">@x</span><span class="token selector" style="color:#00009f">, </span><span class="token selector variable" style="color:#36acaa">@y</span><span class="token selector" style="color:#00009f">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">@result</span><span class="token variable punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">@x</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">@y</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">div</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">padding</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> .</span><span class="token function" style="color:#d73a49">average</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">16</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">50</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> [ </span><span class="token variable" style="color:#36acaa">@result</span><span class="token plain">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.average(</span><span class="token selector variable" style="color:#36acaa">@x</span><span class="token selector" style="color:#00009f">, </span><span class="token selector variable" style="color:#36acaa">@y</span><span class="token selector" style="color:#00009f">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">@result</span><span class="token variable punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">@x</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">@y</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">div</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">padding</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> .</span><span class="token function" style="color:#d73a49">average</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">16</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">50</span><span class="token unit">px</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">[</span><span class="token variable" style="color:#36acaa">@result</span><span class="token plain">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2025/11/27/3.7.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17879">Support format <code>allow</code> attribute of iframe element (<a href="https://github.com/prettier/prettier/pull/17879" target="_blank" rel="noopener noreferrer" class="">#17879</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17879" class="hash-link" aria-label="Direct link to change-17879" title="Direct link to change-17879" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">iframe</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">allow</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">layout-animations 'none'; unoptimized-images 'none'; oversized-images 'none'; sync-script 'none'; sync-xhr 'none'; unsized-media 'none';</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">iframe</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">iframe</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">allow</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">layout-animations 'none'; unoptimized-images 'none'; oversized-images 'none'; sync-script 'none'; sync-xhr 'none'; unsized-media 'none';</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">iframe</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.7 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">iframe</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">allow</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    layout-animations 'none';</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    unoptimized-images 'none';</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    oversized-images 'none';</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    sync-script 'none';</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    sync-xhr 'none';</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    unsized-media 'none';</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">  </span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">iframe</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17909">Format inline event handler (<a href="https://github.com/prettier/prettier/pull/17909" target="_blank" rel="noopener noreferrer" class="">#17909</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17909" class="hash-link" aria-label="Direct link to change-17909" title="Direct link to change-17909" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">button</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript console class-name" style="color:#e3116c">console</span><span class="token tag special-attr attr-value value javascript language-javascript" style="color:#e3116c"> </span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">.</span><span class="token tag special-attr attr-value value javascript language-javascript method function property-access" style="color:#d73a49">log</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript" style="color:#e3116c">    </span><span class="token tag special-attr attr-value value javascript language-javascript string" style="color:#e3116c">'Hello, this is my old-fashioned event handler!'</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Press me</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">button</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript console class-name" style="color:#e3116c">console</span><span class="token tag special-attr attr-value value javascript language-javascript" style="color:#e3116c"> </span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">.</span><span class="token tag special-attr attr-value value javascript language-javascript method function property-access" style="color:#d73a49">log</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript" style="color:#e3116c">    </span><span class="token tag special-attr attr-value value javascript language-javascript string" style="color:#e3116c">'Hello, this is my old-fashioned event handler!'</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Press me</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.7 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">button</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript console class-name" style="color:#e3116c">console</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">.</span><span class="token tag special-attr attr-value value javascript language-javascript method function property-access" style="color:#d73a49">log</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript string" style="color:#e3116c">'Hello, this is my old-fashioned event handler!'</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Press me</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular">Angular<a href="https://prettier.io/blog/2025/11/27/3.7.0#angular" class="hash-link" aria-label="Direct link to Angular" title="Direct link to Angular" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17722">Support Angular 21 (<a href="https://github.com/prettier/prettier/pull/17722" target="_blank" rel="noopener noreferrer" class="">#17722</a>, <a href="https://github.com/prettier/prettier/pull/18294" target="_blank" rel="noopener noreferrer" class="">#18294</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17722" class="hash-link" aria-label="Direct link to change-17722" title="Direct link to change-17722" translate="no">​</a></h4>
<p>Angular 20.1 added support for new assignment operators.
Angular 21 added support for regular expression.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">b</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">(click)</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">  a   ??= b</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">{{  /\d+/g}}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">b</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">b</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">(click)</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">  a   ??= b</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">{{  /\d+/g}}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">b</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.7 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">b</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">(click)</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">a ??= b</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">{{ /\d+/g }}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">b</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17862">Fix comments get duplicated in interpolation (<a href="https://github.com/prettier/prettier/pull/17862" target="_blank" rel="noopener noreferrer" class="">#17862</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17862" class="hash-link" aria-label="Direct link to change-17862" title="Direct link to change-17862" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{a() // comment}}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ a(// comment) // comment }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.7 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a() // comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18047">Fix formatting of "non-null assertion" (<a href="https://github.com/prettier/prettier/pull/18047" target="_blank" rel="noopener noreferrer" class="">#18047</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18047" class="hash-link" aria-label="Direct link to change-18047" title="Direct link to change-18047" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ foo?.bar!.baz }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ (foo?.bar)!.baz }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.7 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ foo?.bar!.baz }}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ember--handlebars">Ember / Handlebars<a href="https://prettier.io/blog/2025/11/27/3.7.0#ember--handlebars" class="hash-link" aria-label="Direct link to Ember / Handlebars" title="Direct link to Ember / Handlebars" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17781">Added Front Matter support to Handlebars (<a href="https://github.com/prettier/prettier/pull/17781" target="_blank" rel="noopener noreferrer" class="">#17781</a> by <a href="https://github.com/Codezilluh" target="_blank" rel="noopener noreferrer" class="">@Codezilluh</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17781" class="hash-link" aria-label="Direct link to change-17781" title="Direct link to change-17781" translate="no">​</a></h4>
<p>Front matter can now be used in Handlebars.</p>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token variable" style="color:#36acaa">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">title</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">My</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">page</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">title</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">keywords</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">-</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">word</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">-</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">other</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">word</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">h1</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">title</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">h1</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">ul</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">each</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">keywords</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">li</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">li</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">each</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">ul</span><span class="token punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17856">Preserve <code>else if</code> syntax for custom helpers (<a href="https://github.com/prettier/prettier/pull/17856" target="_blank" rel="noopener noreferrer" class="">#17856</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17856" class="hash-link" aria-label="Direct link to change-17856" title="Direct link to change-17856" translate="no">​</a></h4>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{! Input }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">animated-if</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">foo</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">foo</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">content</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">else</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">bar</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">content</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">animated-if</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 3.6 }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">animated-if</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">foo</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">foo</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">content</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">else</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">bar</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">content</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">if</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">animated-if</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 3.7 }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">animated-if</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">foo</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">foo</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">content</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">else</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">bar</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">content</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">animated-if</span><span class="token delimiter punctuation" style="color:#393A34">}}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18065">Remove extra blank lines in <code>&lt;style&gt;</code> tags (<a href="https://github.com/prettier/prettier/pull/18065" target="_blank" rel="noopener noreferrer" class="">#18065</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18065" class="hash-link" aria-label="Direct link to change-18065" title="Direct link to change-18065" translate="no">​</a></h4>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{! Input }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">red</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 3.6 (--html-whitespace-sensitivity=ignore) }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">red</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 3.7 (--html-whitespace-sensitivity=ignore) }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">red</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18133">Don't force elements to break with <code>--html-whitespace-sensitivity=ignore</code> (<a href="https://github.com/prettier/prettier/pull/18133" target="_blank" rel="noopener noreferrer" class="">#18133</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18133" class="hash-link" aria-label="Direct link to change-18133" title="Direct link to change-18133" translate="no">​</a></h4>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{! Input }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 3.6 (--html-whitespace-ensitivity=ignore) }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 3.7 (--html-whitespace-ensitivity=ignore) }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="graphql">GraphQL<a href="https://prettier.io/blog/2025/11/27/3.7.0#graphql" class="hash-link" aria-label="Direct link to GraphQL" title="Direct link to GraphQL" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18214">Support "executable descriptions" (<a href="https://github.com/prettier/prettier/pull/18214" target="_blank" rel="noopener noreferrer" class="">#18214</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18214" class="hash-link" aria-label="Direct link to change-18214" title="Direct link to change-18214" translate="no">​</a></h4>
<div class="language-gql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-gql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Input</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">"Description"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">query {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  node {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    id</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SyntaxError: Syntax Error: Unexpected description, descriptions are supported only on type definitions. (1:1)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; 1 | "Description"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    | ^</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  2 | query {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  3 |   node {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  4 |     id</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.7</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">"Description"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">query {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  node {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    id</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown">Markdown<a href="https://prettier.io/blog/2025/11/27/3.7.0#markdown" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17813">Improve emoji size measurement (<a href="https://github.com/prettier/prettier/pull/17813" target="_blank" rel="noopener noreferrer" class="">#17813</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17813" class="hash-link" aria-label="Direct link to change-17813" title="Direct link to change-17813" translate="no">​</a></h4>
<p>This change improves table alignment in all languages.</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|     |     |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">| :-: | :-: |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|  ✔  |  ✘  |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|  ✘  |  ✔  |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|  ✔  |  ✘  |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|     |     |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">| :-: | :-: |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">| ✔  |  ✘  |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|  ✘  | ✔  |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">| ✔  |  ✘  |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.7 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|     |     |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">| :-: | :-: |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|  ✔  |  ✘  |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|  ✘  |  ✔  |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|  ✔  |  ✘  |</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17965">Infer TOML parser for Front Matter (<a href="https://github.com/prettier/prettier/pull/17965" target="_blank" rel="noopener noreferrer" class="">#17965</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17965" class="hash-link" aria-label="Direct link to change-17965" title="Direct link to change-17965" translate="no">​</a></h4>
<p>TOML Front Matter can be processed by the appropriate plugin if any.
Works for HTML and CSS files too.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18010">Fix strong emphasis format (<a href="https://github.com/prettier/prettier/pull/18010" target="_blank" rel="noopener noreferrer" class="">#18010</a> by <a href="https://github.com/yin1999" target="_blank" rel="noopener noreferrer" class="">@yin1999</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18010" class="hash-link" aria-label="Direct link to change-18010" title="Direct link to change-18010" translate="no">​</a></h4>
<p>This is a supplementary fix for #17143, where the original PR could not determine whether the contents on the left and right sides were both words.</p>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.7 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mdx">MDX<a href="https://prettier.io/blog/2025/11/27/3.7.0#mdx" class="hash-link" aria-label="Direct link to MDX" title="Direct link to MDX" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17996">Fix <code>import</code> and <code>export</code> parsing (<a href="https://github.com/prettier/prettier/pull/17996" target="_blank" rel="noopener noreferrer" class="">#17996</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a> &amp; <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17996" class="hash-link" aria-label="Direct link to change-17996" title="Direct link to change-17996" translate="no">​</a></h4>
<div class="language-mdx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-mdx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">{/* Input */}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- import is a word in lists</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- export is a word in lists, too!</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{/* Prettier 3.6 */}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- import is a word in list</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  s</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- export is a word in lists, too</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  !</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{/* Prettier 3.7 */}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- import is a word in lists</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- export is a word in lists, too!</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="yaml">YAML<a href="https://prettier.io/blog/2025/11/27/3.7.0#yaml" class="hash-link" aria-label="Direct link to YAML" title="Direct link to YAML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17843">Preserve empty line between map and comment (<a href="https://github.com/prettier/prettier/pull/17843" target="_blank" rel="noopener noreferrer" class="">#17843</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17843" class="hash-link" aria-label="Direct link to change-17843" title="Direct link to change-17843" translate="no">​</a></h4>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">only</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> issues</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">only</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> issues</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">only</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> issues</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Comment</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18296">Preserve explicit document end marker (<a href="https://github.com/prettier/prettier/pull/18296" target="_blank" rel="noopener noreferrer" class="">#18296</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18296" class="hash-link" aria-label="Direct link to change-18296" title="Direct link to change-18296" translate="no">​</a></h4>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">b</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> b</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">c</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> c</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">d</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> d</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">b</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> b</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">c</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> c</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">d</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> d</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">b</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> b</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">c</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> c</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">d</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> d</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18324">Use explicit key style for flow-mapping keys with trailing comments (<a href="https://github.com/prettier/prettier/pull/18324" target="_blank" rel="noopener noreferrer" class="">#18324</a> by <a href="https://github.com/kovsu" target="_blank" rel="noopener noreferrer" class="">@kovsu</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18324" class="hash-link" aria-label="Direct link to change-18324" title="Direct link to change-18324" translate="no">​</a></h4>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">bar </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">"foo"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> bar </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">?</span><span class="token plain"> "foo" </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> bar </span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api">API<a href="https://prettier.io/blog/2025/11/27/3.7.0#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17679">Allow <code>plugin.parser.preprocess()</code> to return a <code>Promise</code> (<a href="https://github.com/prettier/prettier/pull/17679" target="_blank" rel="noopener noreferrer" class="">#17679</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17679" class="hash-link" aria-label="Direct link to change-17679" title="Direct link to change-17679" translate="no">​</a></h4>
<p>Align with <a href="https://prettier.io/docs/plugins#optional-preprocess" target="_blank" rel="noopener noreferrer" class=""><code>plugin.printer.preprocess()</code></a>, which allows to return a <code>Promise</code>.</p>
<p>We still suggest move your async work into <code>plugin.parser.parse()</code>, which already allow to return a <code>Promise</code>, we may remove support for <code>plugin.parser.preprocess()</code> in future.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17860">Allow <code>AstPath#call()</code> to access property of nullish properties (<a href="https://github.com/prettier/prettier/pull/17860" target="_blank" rel="noopener noreferrer" class="">#17860</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-17860" class="hash-link" aria-label="Direct link to change-17860" title="Direct link to change-17860" translate="no">​</a></h4>
<p>Previously, to check for a possible non-existent child node, we had to ensure the node existed first.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> isFoo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">node</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">type </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Uncaught TypeError: Cannot read properties of undefined (reading 'bar')</span><br></span></code></pre></div></div>
<p>We have to</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> isFoo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">node</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">foo</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">bar </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">node</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">type </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>Since Prettier 3.7, accessing a property of nullish properties no longer throws errors.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18055">Pass ancestors to <code>plugin.printer.canAttachComment()</code> (<a href="https://github.com/prettier/prettier/pull/18055" target="_blank" rel="noopener noreferrer" class="">#18055</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18055" class="hash-link" aria-label="Direct link to change-18055" title="Direct link to change-18055" translate="no">​</a></h4>
<p>This prevent attaching comments to a specific child of node.</p>
<p>For example in this JavaScript code <code>const object = {property};</code>, the <code>Identifier</code> node (<code>property</code>) appears as both <code>Property.key</code> and <code>Property.value</code> in the AST, obviously it can only print once, if the comment is attached to the non-printable child the comment will get lost.</p>
<p>Plugins can now avoid this by adding a <code>canAttachComment</code> like this:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">canAttachComment</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">node</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> </span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">parent</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    parent</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">type </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Property"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">shorthand</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">key</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> node </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">key</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!==</span><span class="token plain"> parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">value</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">print</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">path</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> options</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> print</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> node </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> path</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">switch</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">node</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">type</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">case</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Property"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">node</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">shorthand</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"value"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// ...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18070">Add support for <code>plugin.printer.printPrettierIgnored()</code> (<a href="https://github.com/prettier/prettier/pull/18070" target="_blank" rel="noopener noreferrer" class="">#18070</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18070" class="hash-link" aria-label="Direct link to change-18070" title="Direct link to change-18070" translate="no">​</a></h4>
<p>For a node with <code>prettier-ignore</code> comment, Prettier prints the text of the node directly. However, this may cause problems, for example, if the node needs to be parenthesized or needs to print a leading semicolon to prevent ASI issue in <code>--no-semi</code> mode.</p>
<p>Since Prettier 3.7, plugins can add a <code>printPrettierIgnored()</code> function to the printer to customize the <code>prettier-ignore</code>d node print process. This function uses the extract same signature as <a href="https://prettier.io/docs/plugins#print" target="_blank" rel="noopener noreferrer" class=""><code>plugin.printer.print()</code></a></p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18072">Allow plugin to provide an <code>estree</code> printer (<a href="https://github.com/prettier/prettier/pull/18072" target="_blank" rel="noopener noreferrer" class="">#18072</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18072" class="hash-link" aria-label="Direct link to change-18072" title="Direct link to change-18072" translate="no">​</a></h4>
<p>Previously, if a plugin wanted to make a plugin with an <code>estree</code> printer that outputs different code based on the built-in one, the plugin needed to provide both <code>parsers</code> and <code>printers</code>. Prettier 3.7 allows a plugin to create a plugin that only provides an <code>estree</code> printer.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://prettier.io/blog/2025/11/27/3.7.0#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-18124">Avoid creating <code>node_modules/.cache/</code> directory when <code>--cache</code> is not enabled (<a href="https://github.com/prettier/prettier/pull/18124" target="_blank" rel="noopener noreferrer" class="">#18124</a> by <a href="https://github.com/chiawendt" target="_blank" rel="noopener noreferrer" class="">@chiawendt</a>)<a href="https://prettier.io/blog/2025/11/27/3.7.0#change-18124" class="hash-link" aria-label="Direct link to change-18124" title="Direct link to change-18124" translate="no">​</a></h4>
<p>Running <code>prettier .</code> without <code>--cache</code> no longer creates an empty <code>node_modules/.cache/</code> directory.</p>]]></content>
        <author>
            <name>Fisker Cheung</name>
            <uri>https://github.com/fisker</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 3.6: Experimental fast CLI and new OXC and Hermes plugins!]]></title>
        <id>https://prettier.io/blog/2025/06/23/3.6.0</id>
        <link href="https://prettier.io/blog/2025/06/23/3.6.0"/>
        <updated>2025-06-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release includes several important feature additions that we're excited to share with you.]]></summary>
        <content type="html"><![CDATA[<p>This release includes several important feature additions that we're excited to share with you.</p>
<p>First, we're shipping a new experimental high-performance CLI behind a feature flag (<code>--experimental-cli</code>). This CLI was previously only available in <code>prettier@next</code>, but now you can enable it simply by using a flag. We encourage you to try it out and share your feedback! If you are interested in the internal implementation, please read <a href="https://prettier.io/blog/2023/11/30/cli-deep-dive" target="_blank" rel="noopener noreferrer" class="">Prettier's CLI: Performance Deep Dive by Fabio</a>.</p>
<p>Additionally, we're releasing two new official plugins: <a href="https://github.com/prettier/prettier/tree/main/packages/plugin-oxc" target="_blank" rel="noopener noreferrer" class=""><code>@prettier/plugin-oxc</code></a> and <a href="https://github.com/prettier/prettier/tree/main/packages/plugin-hermes" target="_blank" rel="noopener noreferrer" class=""><code>@prettier/plugin-hermes</code></a>. These plugins are provided separately from Prettier's core.</p>
<p>We want to extend our heartfelt gratitude to everyone who made this amazing release possible: <a href="https://github.com/fabiospampinato" target="_blank" rel="noopener noreferrer" class="">@fabiospampinato</a>, <a href="https://github.com/43081j" target="_blank" rel="noopener noreferrer" class="">@43081j</a>, and <a href="https://github.com/pralkarz" target="_blank" rel="noopener noreferrer" class="">@pralkarz</a> along with the new CLI contributors, <a href="https://github.com/boshen" target="_blank" rel="noopener noreferrer" class="">@boshen</a> and <a href="https://github.com/overlookmotel" target="_blank" rel="noopener noreferrer" class="">@overlookmotel</a> along with other OXC contributors, the <a href="https://flow.org/" target="_blank" rel="noopener noreferrer" class="">Flow</a> and <a href="https://github.com/facebook/hermes/blob/main/README.md" target="_blank" rel="noopener noreferrer" class="">Hermes</a> teams at Meta. Thank you all for your incredible contributions!</p>
<p>We're excited to see how these new features enhance your development experience. Happy formatting!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2025/06/23/3.6.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://prettier.io/blog/2025/06/23/3.6.0#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17151">Support experimental CLI (<a href="https://github.com/prettier/prettier/pull/17151" target="_blank" rel="noopener noreferrer" class="">#17151</a>, <a href="https://github.com/prettier/prettier/pull/17396" target="_blank" rel="noopener noreferrer" class="">#17396</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17151" class="hash-link" aria-label="Direct link to change-17151" title="Direct link to change-17151" translate="no">​</a></h4>
<p>You may have already heard of or used our new <a href="https://prettier.io/blog/2023/11/30/cli-deep-dive" target="_blank" rel="noopener noreferrer" class="">performance improved CLI</a>. From Prettier 3.6, you can now use it without installing unstable v4 version.</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Run CLI with `--experimental-cli`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier </span><span class="token builtin class-name">.</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--check</span><span class="token plain"> --experimental-cli</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Or use environment variable `PRETTIER_EXPERIMENTAL_CLI=1`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">PRETTIER_EXPERIMENTAL_CLI</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> prettier </span><span class="token builtin class-name">.</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--check</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2025/06/23/3.6.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17472">Added a new official plugin <code>@prettier/plugin-oxc</code> (<a href="https://github.com/prettier/prettier/pull/17472" target="_blank" rel="noopener noreferrer" class="">#17472</a>, <a href="https://github.com/prettier/prettier/pull/17483" target="_blank" rel="noopener noreferrer" class="">#17483</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17472" class="hash-link" aria-label="Direct link to change-17472" title="Direct link to change-17472" translate="no">​</a></h4>
<p><code>@prettier/plugin-oxc</code> is based on <a href="https://oxc.rs/" target="_blank" rel="noopener noreferrer" class="">OXC</a>(A <strong>fast</strong> JavaScript and TypeScript parser in Rust).</p>
<p>This plugin includes two new parsers <code>oxc</code> (JavaScript syntax) and <code>oxc-ts</code> (TypeScript syntax), to use this plugin:</p>
<ol>
<li class="">
<p>Install the plugin</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">yarn</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">add</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--dev</span><span class="token plain"> prettier @prettier/plugin-oxc</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Add the following to your <code>.prettierrc</code> file</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">plugins</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@prettier/plugin-oxc"</span><br></span></code></pre></div></div>
</li>
</ol>
<p>Due to package size limitations, this plugin is not included in the <code>prettier</code> package, it needs to be installed separately.</p>
<p>For more information, check <a href="https://github.com/prettier/prettier/tree/main/packages/plugin-oxc" target="_blank" rel="noopener noreferrer" class="">the package homepage</a>.</p>
<p>Many thanks to the OXC team(<a href="https://github.com/boshen" target="_blank" rel="noopener noreferrer" class="">@boshen</a>, <a href="https://github.com/overlookmotel" target="_blank" rel="noopener noreferrer" class="">@overlookmotel</a>, and other contributors).</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow">Flow<a href="https://prettier.io/blog/2025/06/23/3.6.0#flow" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17520">Added a new official plugin <code>@prettier/plugin-hermes</code> (<a href="https://github.com/prettier/prettier/pull/17520" target="_blank" rel="noopener noreferrer" class="">#17520</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17520" class="hash-link" aria-label="Direct link to change-17520" title="Direct link to change-17520" translate="no">​</a></h4>
<p><code>@prettier/plugin-hermes</code> is based on <a href="https://github.com/facebook/hermes/blob/main/README.md" target="_blank" rel="noopener noreferrer" class="">Hermes JS Engine</a>.</p>
<p>This plugin includes a new parser <code>hermes</code> (Flow syntax), to use this plugin:</p>
<ol>
<li class="">
<p>Install the plugin</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">yarn</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">add</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--dev</span><span class="token plain"> prettier @prettier/plugin-hermes</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Add the following to your <code>.prettierrc</code> file</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">plugins</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@prettier/plugin-hermes"</span><br></span></code></pre></div></div>
</li>
</ol>
<p>Due to package size limitations, this plugin is not included in the <code>prettier</code> package, it needs to be installed separately.</p>
<p><strong>We plan to make this as the default parser for Flow syntax support in v4, we'll also remove <code>babel-flow</code> parser in v4, please give it a try.</strong></p>
<p>For more information, check <a href="https://github.com/prettier/prettier/tree/main/packages/plugin-hermes" target="_blank" rel="noopener noreferrer" class="">the package homepage</a>.</p>
<p>Many thanks to the Hermes team.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2025/06/23/3.6.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript-1">JavaScript<a href="https://prettier.io/blog/2025/06/23/3.6.0#javascript-1" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17085">Add parentheses to <code>SequenceExpression</code> in <code>ReturnStatement</code> and <code>ExpressionStatement</code> (<a href="https://github.com/prettier/prettier/pull/17085" target="_blank" rel="noopener noreferrer" class="">#17085</a> by <a href="https://github.com/TYKevin" target="_blank" rel="noopener noreferrer" class="">@TYKevin</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17085" class="hash-link" aria-label="Direct link to change-17085" title="Direct link to change-17085" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17145">Add parentheses to <code>AssignmentExpression</code> in class property keys (<a href="https://github.com/prettier/prettier/pull/17145" target="_blank" rel="noopener noreferrer" class="">#17145</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17145" class="hash-link" aria-label="Direct link to change-17145" title="Direct link to change-17145" translate="no">​</a></h4>
<p>Previously we only add parentheses to <code>AssignmentExpression</code> in object keys, but not in class property keys. Thanks to <a href="https://biomejs.dev/formatter/differences-with-prettier/#prettier-has-an-inconsistent-behavior-for-assignment-in-computed-keys" target="_blank" rel="noopener noreferrer" class="">Biome</a> for bringing our attention to this inconsistency.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"key"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"property"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"method"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"key"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"property"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"method"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"key"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"property"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"method"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17190">Add parentheses to numbers in optional member expression (<a href="https://github.com/prettier/prettier/pull/17190" target="_blank" rel="noopener noreferrer" class="">#17190</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17190" class="hash-link" aria-label="Direct link to change-17190" title="Direct link to change-17190" translate="no">​</a></h4>
<p>There is an inconsistency when formatting member expression where the object is a number before Prettier 3.6.</p>
<p>When using <code>babel</code> parser(and other Babel based parsers), we print the number as unparenthesized, when using <code>typescript</code> parser(and other ESTree parsers), we print it as parenthesized.</p>
<p>Technically parentheses are not needed, but if we print it as <code>1?.toString()</code> and later users realize it's unnecessary to use <code>?.</code>, users can't simply remove the question mark because <code>1.toString()</code> will raise a <code>SyntaxError</code>, for this reason, we decide to always put parentheses around it.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1.5</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (--parser=babel)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">1.5</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (--parser=typescript)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1.5</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1.5</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17363">Removed support for experimental <code>Records &amp; Tuples</code> (<a href="https://github.com/prettier/prettier/pull/17363" target="_blank" rel="noopener noreferrer" class="">#17363</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17363" class="hash-link" aria-label="Direct link to change-17363" title="Direct link to change-17363" translate="no">​</a></h4>
<p>The ES proposal <a href="https://github.com/tc39/proposal-record-tuple" target="_blank" rel="noopener noreferrer" class="">JavaScript Records &amp; Tuples Proposal</a> has been withdrawn.</p>
<ul>
<li class=""><a href="https://prettier.io/docs/en/rationale.html#disclaimer-about-non-standard-syntax" target="_blank" rel="noopener noreferrer" class="">Disclaimer about non-standard syntax</a></li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17398">Preserve spaces between CSS words and embedded expression (<a href="https://github.com/prettier/prettier/pull/17398" target="_blank" rel="noopener noreferrer" class="">#17398</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17398" class="hash-link" aria-label="Direct link to change-17398" title="Direct link to change-17398" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">Heading</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> styled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">h1</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">    </span><span class="token template-string css language-css property" style="color:#36acaa">font-size</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css function" style="color:#d73a49">var</span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css variable" style="color:#36acaa">--font-size-h</span><span class="token template-string css language-css variable interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css variable interpolation" style="color:#36acaa">level</span><span class="token template-string css language-css variable interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">Heading</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> styled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">h1</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">    </span><span class="token template-string css language-css property" style="color:#36acaa">font-size</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css function" style="color:#d73a49">var</span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css variable" style="color:#36acaa">--font-size-h</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">level</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">Heading</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> styled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">h1</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">    </span><span class="token template-string css language-css property" style="color:#36acaa">font-size</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css function" style="color:#d73a49">var</span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css variable" style="color:#36acaa">--font-size-h</span><span class="token template-string css language-css variable interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css variable interpolation" style="color:#36acaa">level</span><span class="token template-string css language-css variable interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17469">Fix inconsistent assignment format (<a href="https://github.com/prettier/prettier/pull/17469" target="_blank" rel="noopener noreferrer" class="">#17469</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17469" class="hash-link" aria-label="Direct link to change-17469" title="Direct link to change-17469" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">didScheduleRenderPhaseUpdateDuringThisPassFoo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> didScheduleRenderPhaseUpdate </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (--parser=babel)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">didScheduleRenderPhaseUpdateDuringThisPassFoo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  didScheduleRenderPhaseUpdate </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (--parser=typescript)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">didScheduleRenderPhaseUpdateDuringThisPassFoo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> didScheduleRenderPhaseUpdate </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">didScheduleRenderPhaseUpdateDuringThisPassFoo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  didScheduleRenderPhaseUpdate </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17470">Fix inconsistent member chain format (<a href="https://github.com/prettier/prettier/pull/17470" target="_blank" rel="noopener noreferrer" class="">#17470</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17470" class="hash-link" aria-label="Direct link to change-17470" title="Direct link to change-17470" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">s</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">u</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">trigger</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">triggerKind</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">SignatureHelpTriggerKind</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">InvokeFooBarBaz123</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (--parser=babel)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">s</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">u</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">trigger</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">triggerKind</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">SignatureHelpTriggerKind</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">InvokeFooBarBaz123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (--parser=typescript)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">s</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">u</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">trigger</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">triggerKind</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">SignatureHelpTriggerKind</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">InvokeFooBarBaz123</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">s</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">get</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">u</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">trigger</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">triggerKind</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">SignatureHelpTriggerKind</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">InvokeFooBarBaz123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17486">Fix optional chaining as computed key (<a href="https://github.com/prettier/prettier/pull/17486" target="_blank" rel="noopener noreferrer" class="">#17486</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17486" class="hash-link" aria-label="Direct link to change-17486" title="Direct link to change-17486" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">y</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">z</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">y</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">z</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">y</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">z</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">?</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">y</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">z</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">?</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">y</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">z</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">y</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">z</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17491">Support type cast comments for <code>acorn</code> and <code>meriyah</code> parser (<a href="https://github.com/prettier/prettier/pull/17491" target="_blank" rel="noopener noreferrer" class="">#17491</a>, <a href="https://github.com/prettier/prettier/pull/17566" target="_blank" rel="noopener noreferrer" class="">#17566</a> by <a href="https://github.com/ArnaudBarre" target="_blank" rel="noopener noreferrer" class="">@ArnaudBarre</a>, <a href="https://github.com/prettier/prettier/pull/17600" target="_blank" rel="noopener noreferrer" class="">#17600</a> by #fisker)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17491" class="hash-link" aria-label="Direct link to change-17491" title="Direct link to change-17491" translate="no">​</a></h4>
<p>This was previously only supported by the Babel parser.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@type</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">MyType</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">foo</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (--parser=acorn|meriyah)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@type</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">MyType</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">foo</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@type</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">MyType</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">foo</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17510">Fix unstable comment format in tagged template literal (<a href="https://github.com/prettier/prettier/pull/17510" target="_blank" rel="noopener noreferrer" class="">#17510</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17510" class="hash-link" aria-label="Direct link to change-17510" title="Direct link to change-17510" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">x</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (First format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">x</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (Second format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">x</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">x</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17616">Improve consistency for JSX in optional method call (<a href="https://github.com/prettier/prettier/pull/17616" target="_blank" rel="noopener noreferrer" class="">#17616</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17616" class="hash-link" aria-label="Direct link to change-17616" title="Direct link to change-17616" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">SuspendyTree</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript literal-property property" style="color:#36acaa">height</span><span class="token tag script language-javascript operator" style="color:#393A34">:</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript number" style="color:#36acaa">200</span><span class="token tag script language-javascript punctuation" style="color:#393A34">,</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript literal-property property" style="color:#36acaa">overflow</span><span class="token tag script language-javascript operator" style="color:#393A34">:</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript string" style="color:#e3116c">"scroll"</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token known-class-name class-name">Array</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">20</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fill</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">_</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> i</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">key</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">i</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">i </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag class-name" style="color:#00009f">SuspendyTree</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (ESTree based parsers like espree and typescript)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">SuspendyTree</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript literal-property property" style="color:#36acaa">height</span><span class="token tag script language-javascript operator" style="color:#393A34">:</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript number" style="color:#36acaa">200</span><span class="token tag script language-javascript punctuation" style="color:#393A34">,</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript literal-property property" style="color:#36acaa">overflow</span><span class="token tag script language-javascript operator" style="color:#393A34">:</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript string" style="color:#e3116c">"scroll"</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token known-class-name class-name">Array</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">20</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fill</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">_</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> i</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">key</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">i</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">i </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag class-name" style="color:#00009f">SuspendyTree</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (babel and babel-ts parser)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">SuspendyTree</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript literal-property property" style="color:#36acaa">height</span><span class="token tag script language-javascript operator" style="color:#393A34">:</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript number" style="color:#36acaa">200</span><span class="token tag script language-javascript punctuation" style="color:#393A34">,</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript literal-property property" style="color:#36acaa">overflow</span><span class="token tag script language-javascript operator" style="color:#393A34">:</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript string" style="color:#e3116c">"scroll"</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token known-class-name class-name">Array</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">20</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fill</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">_</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> i</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">key</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">i</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">i </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag class-name" style="color:#00009f">SuspendyTree</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6 (parsers of both types)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">SuspendyTree</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">style</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript literal-property property" style="color:#36acaa">height</span><span class="token tag script language-javascript operator" style="color:#393A34">:</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript number" style="color:#36acaa">200</span><span class="token tag script language-javascript punctuation" style="color:#393A34">,</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript literal-property property" style="color:#36acaa">overflow</span><span class="token tag script language-javascript operator" style="color:#393A34">:</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript string" style="color:#e3116c">"scroll"</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token known-class-name class-name">Array</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">20</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">fill</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">_</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> i</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">key</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">i</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">i </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag class-name" style="color:#00009f">SuspendyTree</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2025/06/23/3.6.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-16881">Support import type attribute in <code>TSImportType</code> (<a href="https://github.com/prettier/prettier/pull/16881" target="_blank" rel="noopener noreferrer" class="">#16881</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-16881" class="hash-link" aria-label="Direct link to change-16881" title="Direct link to change-16881" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token keyword" style="color:#00009f">with</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token literal-property property" style="color:#36acaa">type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">with</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17193">Fix comments in logical expression and intersection type (<a href="https://github.com/prettier/prettier/pull/17193" target="_blank" rel="noopener noreferrer" class="">#17193</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17193" class="hash-link" aria-label="Direct link to change-17193" title="Direct link to change-17193" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> type </span><span class="token maybe-class-name">ErrorLike</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">SerializedProps</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Error</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> &amp; </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  // cause is a new addition to Error that is not yet available in all runtimes. We have added</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  // it to try and pinpoint additional reasoning for failures such as Node's fetch.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> cause</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> unknown </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">export type ErrorLike =</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  SerializedProps</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Error</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> &amp; // cause is a new addition to Error that is not yet available in all runtimes. We have added</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  // it to try and pinpoint additional reasoning for failures such as Node's fetch.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> cause</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> unknown </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.5 (second format)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">export type ErrorLike =</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  SerializedProps</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Error</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> &amp; // it to try and pinpoint additional reasoning for failures such as Node's fetch. // cause is a new addition to Error that is not yet available in all runtimes. We have added</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> cause</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> unknown </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">export type ErrorLike = SerializedProps</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Error</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> &amp;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  // cause is a new addition to Error that is not yet available in all runtimes. We have added</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  // it to try and pinpoint additional reasoning for failures such as Node's fetch.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> cause</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> unknown </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17498">Improve new line detect in mapped type (<a href="https://github.com/prettier/prettier/pull/17498" target="_blank" rel="noopener noreferrer" class="">#17498</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17498" class="hash-link" aria-label="Direct link to change-17498" title="Direct link to change-17498" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> readonly</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  readonly </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> readonly </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17538">Don't print extra semicolon after <code>prettier-ignore</code>d index-signature (<a href="https://github.com/prettier/prettier/pull/17538" target="_blank" rel="noopener noreferrer" class="">#17538</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17538" class="hash-link" aria-label="Direct link to change-17538" title="Direct link to change-17538" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow-1">Flow<a href="https://prettier.io/blog/2025/06/23/3.6.0#flow-1" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17196">Fix missing parentheses in <code>ConditionalTypeAnnotation</code> (<a href="https://github.com/prettier/prettier/pull/17196" target="_blank" rel="noopener noreferrer" class="">#17196</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17196" class="hash-link" aria-label="Direct link to change-17196" title="Direct link to change-17196" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">T</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">U</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = 'a' | ('b' extends U ? 'c' : empty);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">type T</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">U</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = 'a' &amp; ('b' extends U ? 'c' : empty);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">type T</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">U</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = "a" | "b" extends U ? "c" : empty;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">type T</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">U</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = "a" &amp; "b" extends U ? "c" : empty;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">type T</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">U</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = "a" | ("b" extends U ? "c" : empty);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">type T</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">U</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = "a" &amp; ("b" extends U ? "c" : empty);</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="json">JSON<a href="https://prettier.io/blog/2025/06/23/3.6.0#json" class="hash-link" aria-label="Direct link to JSON" title="Direct link to JSON" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17269">Allow format comment-only JSONC files (<a href="https://github.com/prettier/prettier/pull/17269" target="_blank" rel="noopener noreferrer" class="">#17269</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17269" class="hash-link" aria-label="Direct link to change-17269" title="Direct link to change-17269" translate="no">​</a></h4>
<div class="language-jsonc codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsonc codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">// Input</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SyntaxError: Unexpected token (1:11)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; 1 | // Comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    |           ^</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Comment</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17598">Forbid parenthesized expressions (<a href="https://github.com/prettier/prettier/pull/17598" target="_blank" rel="noopener noreferrer" class="">#17598</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17598" class="hash-link" aria-label="Direct link to change-17598" title="Direct link to change-17598" translate="no">​</a></h4>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> (</span><span class="token number" style="color:#36acaa">2</span><span class="token plain">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> 'ParenthesizedExpression' is not allowed in JSON. (</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">5</span><span class="token plain">)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> | </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> (</span><span class="token number" style="color:#36acaa">2</span><span class="token plain">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    |     ^^^</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="css">CSS<a href="https://prettier.io/blog/2025/06/23/3.6.0#css" class="hash-link" aria-label="Direct link to CSS" title="Direct link to CSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17362">Support <code>@utility</code> directive for Tailwind (<a href="https://github.com/prettier/prettier/pull/17362" target="_blank" rel="noopener noreferrer" class="">#17362</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17362" class="hash-link" aria-label="Direct link to change-17362" title="Direct link to change-17362" translate="no">​</a></h4>
<p>This change supports <code>@utility</code> directive for Tailwind CSS V4.</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@utility</span><span class="token atrule" style="color:#00a4db"> tab-*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">tab-size</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">--value</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--tab-size-</span><span class="token plain">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.5 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@utility</span><span class="token atrule" style="color:#00a4db"> tab-*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">tab-size</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">--value</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--tab-size-</span><span class="token plain"> *</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.6 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@utility</span><span class="token atrule" style="color:#00a4db"> tab-*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">tab-size</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">--value</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--tab-size-</span><span class="token plain">*</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17541">Remove extra indentation for <code>:has</code> pseudo call (<a href="https://github.com/prettier/prettier/pull/17541" target="_blank" rel="noopener noreferrer" class="">#17541</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17541" class="hash-link" aria-label="Direct link to change-17541" title="Direct link to change-17541" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">li</span><span class="token selector pseudo-class" style="color:#00009f">:has</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  path</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">d</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"M544,272H480V150.627L523.314,107.314A16,16,0,0,0,500.686,84.687L457.373,128H415a127.00381,127.00381,0,1,0-254,0H118.627L75.314,84.687A16,16,0,1,0,52.686,107.314L96,150.627V272H32a16,16,0,0,0,0,32H96v24a174.98856,174.98856,0,0,0,30.484,98.889L68.687,484.686a15.99972,15.99972,0,1,0,22.627,22.627l55.616-55.616A175.45165,175.45165,0,0,0,272,504h32a175.45165,175.45165,0,0,0,125.07-52.303l55.616,55.616a15.99972,15.99972,0,0,0,22.627-22.627l-57.797-57.797A174.98856,174.98856,0,0,0,480,328V304h64a16,16,0,0,0,0-32ZM288,32.01263A95.99568,95.99568,0,0,1,383,128H193A95.99568,95.99568,0,0,1,288,32.01263ZM448,328c0,79.401-64.598,144-144,144V236a12.00052,12.00052,0,0,0-12-12h-8a12.00052,12.00052,0,0,0-12,12V472c-79.402,0-144-64.599-144-144V160H448Z"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">display</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> none</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.5 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">li</span><span class="token selector pseudo-class" style="color:#00009f">:has</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">    path</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">d</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"M544,272H480V150.627L523.314,107.314A16,16,0,0,0,500.686,84.687L457.373,128H415a127.00381,127.00381,0,1,0-254,0H118.627L75.314,84.687A16,16,0,1,0,52.686,107.314L96,150.627V272H32a16,16,0,0,0,0,32H96v24a174.98856,174.98856,0,0,0,30.484,98.889L68.687,484.686a15.99972,15.99972,0,1,0,22.627,22.627l55.616-55.616A175.45165,175.45165,0,0,0,272,504h32a175.45165,175.45165,0,0,0,125.07-52.303l55.616,55.616a15.99972,15.99972,0,0,0,22.627-22.627l-57.797-57.797A174.98856,174.98856,0,0,0,480,328V304h64a16,16,0,0,0,0-32ZM288,32.01263A95.99568,95.99568,0,0,1,383,128H193A95.99568,95.99568,0,0,1,288,32.01263ZM448,328c0,79.401-64.598,144-144,144V236a12.00052,12.00052,0,0,0-12-12h-8a12.00052,12.00052,0,0,0-12,12V472c-79.402,0-144-64.599-144-144V160H448Z"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  </span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">display</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> none</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.6 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">li</span><span class="token selector pseudo-class" style="color:#00009f">:has</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  path</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">d</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"M544,272H480V150.627L523.314,107.314A16,16,0,0,0,500.686,84.687L457.373,128H415a127.00381,127.00381,0,1,0-254,0H118.627L75.314,84.687A16,16,0,1,0,52.686,107.314L96,150.627V272H32a16,16,0,0,0,0,32H96v24a174.98856,174.98856,0,0,0,30.484,98.889L68.687,484.686a15.99972,15.99972,0,1,0,22.627,22.627l55.616-55.616A175.45165,175.45165,0,0,0,272,504h32a175.45165,175.45165,0,0,0,125.07-52.303l55.616,55.616a15.99972,15.99972,0,0,0,22.627-22.627l-57.797-57.797A174.98856,174.98856,0,0,0,480,328V304h64a16,16,0,0,0,0-32ZM288,32.01263A95.99568,95.99568,0,0,1,383,128H193A95.99568,95.99568,0,0,1,288,32.01263ZM448,328c0,79.401-64.598,144-144,144V236a12.00052,12.00052,0,0,0-12-12h-8a12.00052,12.00052,0,0,0-12,12V472c-79.402,0-144-64.599-144-144V160H448Z"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">display</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> none</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="less">Less<a href="https://prettier.io/blog/2025/06/23/3.6.0#less" class="hash-link" aria-label="Direct link to Less" title="Direct link to Less" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17502">Fix function argument incorrectly lowercased (<a href="https://github.com/prettier/prettier/pull/17502" target="_blank" rel="noopener noreferrer" class="">#17502</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17502" class="hash-link" aria-label="Direct link to change-17502" title="Direct link to change-17502" translate="no">​</a></h4>
<div class="language-less codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-less codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.what</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token mixin-usage function" style="color:#d73a49">.make-modifier</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token plain">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1a.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token mixin-usage function" style="color:#d73a49">.make-modifier</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">AA</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1a.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.what</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token mixin-usage function" style="color:#d73a49">.make-modifier</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token unit">a</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1a.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token mixin-usage function" style="color:#d73a49">.make-modifier</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">AA</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1a.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.what</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token mixin-usage function" style="color:#d73a49">.make-modifier</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token plain">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1a.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token mixin-usage function" style="color:#d73a49">.make-modifier</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">AA</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1a.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2025/06/23/3.6.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17501">Fix formatting when tag name is an object prototype property (<a href="https://github.com/prettier/prettier/pull/17501" target="_blank" rel="noopener noreferrer" class="">#17501</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17501" class="hash-link" aria-label="Direct link to change-17501" title="Direct link to change-17501" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">constructor</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	text</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">constructor</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">TypeError: Vn(...).startsWith is not a function</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">constructor</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"> text </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">constructor</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular">Angular<a href="https://prettier.io/blog/2025/06/23/3.6.0#angular" class="hash-link" aria-label="Direct link to Angular" title="Direct link to Angular" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17238">Support <code>TemplateLiteral</code> introduced in Angular 19.2 (<a href="https://github.com/prettier/prettier/pull/17238" target="_blank" rel="noopener noreferrer" class="">#17238</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17238" class="hash-link" aria-label="Direct link to change-17238" title="Direct link to change-17238" translate="no">​</a></h4>
<p>Angular 19.2 added <a href="https://blog.angular.dev/angular-19-2-is-now-available-673ec70aea12#ed7b" target="_blank" rel="noopener noreferrer" class="">support for <code>TemplateLiteral</code></a>.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">{{ `Hello, ${</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">getName('world')}` }}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {{ `Hello, ${</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">getName('world')}` }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">{{ `Hello, ${getName("world")}` }}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17280">Remove extra colon after <code>track</code> in angular <code>@for</code> control-flow (<a href="https://github.com/prettier/prettier/pull/17280" target="_blank" rel="noopener noreferrer" class="">#17280</a> by <a href="https://github.com/claudio-herger" target="_blank" rel="noopener noreferrer" class="">@claudio-herger</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17280" class="hash-link" aria-label="Direct link to change-17280" title="Direct link to change-17280" translate="no">​</a></h4>
<div class="language-angular codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-angular codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">// Input</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@for (item of items; let i = $index; let count = $count; track block) {}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@for (item of items; let i = $index; let count = $count; track: block) {}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@for (item of items; let i = $index; let count = $count; track block) {}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17534">Support Angular 20 (<a href="https://github.com/prettier/prettier/pull/17534" target="_blank" rel="noopener noreferrer" class="">#17534</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17534" class="hash-link" aria-label="Direct link to change-17534" title="Direct link to change-17534" translate="no">​</a></h4>
<div class="language-angular codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-angular codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">// Input</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ( (a in  (b)))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ( (tag ` a ${ b } \u0063 `))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  (  (` a ${ b } \u0063 `))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ void(1 + 2) }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">The new syntax is not correctly recognized.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ a in b }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ tag` a ${b} \u0063 ` }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ ` a ${b} \u0063 ` }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ void (1 + 2) }}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mjml">MJML<a href="https://prettier.io/blog/2025/06/23/3.6.0#mjml" class="hash-link" aria-label="Direct link to MJML" title="Direct link to MJML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17338">Enabling CSS formatting within <code>&lt;mj-style&gt;</code> tag (<a href="https://github.com/prettier/prettier/pull/17338" target="_blank" rel="noopener noreferrer" class="">#17338</a> by <a href="https://github.com/iryusa" target="_blank" rel="noopener noreferrer" class="">@iryusa</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17338" class="hash-link" aria-label="Direct link to change-17338" title="Direct link to change-17338" translate="no">​</a></h4>
<div class="language-mjml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-mjml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Input --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;mj-style&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">.hello {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  color: blue;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    border: 1px solid blue;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">font-size:12px;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">} p { font-size: 14px; }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/mj-style&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 3.5 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;mj-style&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  .hello { color: blue; border: 1px solid blue; font-size:12px; } p { font-size:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  14px; }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/mj-style&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 3.6 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;mj-style&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  .hello {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    color: blue;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    border: 1px solid blue;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    font-size: 12px;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  p {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    font-size: 14px;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/mj-style&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17400">Correctly parse <code>&lt;mj-style&gt;</code> and <code>&lt;mj-raw&gt;</code> (<a href="https://github.com/prettier/prettier/pull/17400" target="_blank" rel="noopener noreferrer" class="">#17400</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17400" class="hash-link" aria-label="Direct link to change-17400" title="Direct link to change-17400" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">mj-style</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a::before {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    content: "</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">";</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">mj-style</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SyntaxError: Unexpected closing tag "p". </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Correctly parsed as CSS.</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown">Markdown<a href="https://prettier.io/blog/2025/06/23/3.6.0#markdown" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-16596">Fix adjacent markdown syntax in blockquote (<a href="https://github.com/prettier/prettier/pull/16596" target="_blank" rel="noopener noreferrer" class="">#16596</a> by <a href="https://github.com/fiji-flo" target="_blank" rel="noopener noreferrer" class="">@fiji-flo</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-16596" class="hash-link" aria-label="Direct link to change-16596" title="Direct link to change-16596" translate="no">​</a></h4>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token code-snippet code keyword" style="color:#00009f">`x`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token code-snippet code keyword" style="color:#00009f">`y`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token italic content">x</span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token italic content">y</span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">foo</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">http://foo</span><span class="token url" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">bar</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">http://bar</span><span class="token url" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token code-snippet code keyword" style="color:#00009f">`this`</span><span class="token plain"> behaves</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token code-snippet code keyword" style="color:#00009f">`correctly`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token code-snippet code keyword" style="color:#00009f">`x`</span><span class="token plain"> &gt; </span><span class="token code-snippet code keyword" style="color:#00009f">`y`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token italic content">x</span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token plain"> &gt; </span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token italic content">y</span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">foo</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">http://foo</span><span class="token url" style="color:#36acaa">)</span><span class="token plain"> &gt; </span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">bar</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">http://bar</span><span class="token url" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token code-snippet code keyword" style="color:#00009f">`this`</span><span class="token plain"> behaves </span><span class="token code-snippet code keyword" style="color:#00009f">`correctly`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token code-snippet code keyword" style="color:#00009f">`x`</span><span class="token plain"> </span><span class="token code-snippet code keyword" style="color:#00009f">`y`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token italic content">x</span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token plain"> </span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token italic content">y</span><span class="token italic punctuation" style="color:#393A34">_</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">foo</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">http://foo</span><span class="token url" style="color:#36acaa">)</span><span class="token plain"> </span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">bar</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">http://bar</span><span class="token url" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token blockquote punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token code-snippet code keyword" style="color:#00009f">`this`</span><span class="token plain"> behaves </span><span class="token code-snippet code keyword" style="color:#00009f">`correctly`</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-16637">Fix markdown inserts unexpected newline in lists (<a href="https://github.com/prettier/prettier/pull/16637" target="_blank" rel="noopener noreferrer" class="">#16637</a> by <a href="https://github.com/byplayer" target="_blank" rel="noopener noreferrer" class="">@byplayer</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-16637" class="hash-link" aria-label="Direct link to change-16637" title="Direct link to change-16637" translate="no">​</a></h4>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> Level 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> Level 1-1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> Level 2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> Level 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> Level 1-1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> Level 2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> Level 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> Level 1-1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> Level 2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17143">Fix strong emphasis (<a href="https://github.com/prettier/prettier/pull/17143" target="_blank" rel="noopener noreferrer" class="">#17143</a> by <a href="https://github.com/fiji-flo" target="_blank" rel="noopener noreferrer" class="">@fiji-flo</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17143" class="hash-link" aria-label="Direct link to change-17143" title="Direct link to change-17143" translate="no">​</a></h4>
<p>Most markdown implementations don't support <code>1**_2_**3</code> so prefer <code>1***2***3</code>.</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">_</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold content italic content">2</span><span class="token bold content italic punctuation" style="color:#393A34">*</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain">3</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="yaml">YAML<a href="https://prettier.io/blog/2025/06/23/3.6.0#yaml" class="hash-link" aria-label="Direct link to YAML" title="Direct link to YAML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-16074">Do not add line break before empty map or sequence (<a href="https://github.com/prettier/prettier/pull/16074" target="_blank" rel="noopener noreferrer" class="">#16074</a> by <a href="https://github.com/BapRx" target="_blank" rel="noopener noreferrer" class="">@BapRx</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-16074" class="hash-link" aria-label="Direct link to change-16074" title="Direct link to change-16074" translate="no">​</a></h4>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">myDict</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">myList</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">myDict</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">myList</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">myDict</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">myList</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api">API<a href="https://prettier.io/blog/2025/06/23/3.6.0#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17166">Accept <code>URL</code> in <code>plugins</code> option (<a href="https://github.com/prettier/prettier/pull/17166" target="_blank" rel="noopener noreferrer" class="">#17166</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17166" class="hash-link" aria-label="Direct link to change-17166" title="Direct link to change-17166" translate="no">​</a></h4>
<p><code>plugins</code> option now accepts <a href="https://developer.mozilla.org/en-US/docs/Web/API/URL" target="_blank" rel="noopener noreferrer" class="">URL</a> with <code>file:</code> protocol or a url string that starts with <code>file:</code> in all public APIs.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// `URL`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">check</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-cool-parser"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">URL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./path/to/plugin.js"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">format</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-cool-parser"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">URL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./path/to/plugin.js"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">formatWithCursor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-cool-parser"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">cursorOffset</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">URL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./path/to/plugin.js"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getFileInfo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"/path/to/file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">URL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./path/to/plugin.js"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getSupportInfo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">URL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./path/to/plugin.js"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// URL string</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">check</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-cool-parser"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"file:///path/to/plugin.js"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">format</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-cool-parser"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"file:///path/to/plugin.js"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">formatWithCursor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"my-cool-parser"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">cursorOffset</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"file:///path/to/plugin.js"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getFileInfo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"/path/to/file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"file:///path/to/plugin.js"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getSupportInfo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"file:///path/to/plugin.js"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17167">Accept <code>URL</code> as custom config file in <code>resolveConfig</code> (<a href="https://github.com/prettier/prettier/pull/17167" target="_blank" rel="noopener noreferrer" class="">#17167</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17167" class="hash-link" aria-label="Direct link to change-17167" title="Direct link to change-17167" translate="no">​</a></h4>
<p><a href="https://prettier.io/docs/api#prettierresolveconfigfileurlorpath--options" target="_blank" rel="noopener noreferrer" class=""><code>prettier.resolveConfig()</code></a> now accepts an <a href="https://developer.mozilla.org/en-US/docs/Web/API/URL" target="_blank" rel="noopener noreferrer" class="">URL</a> with <code>file:</code> protocol or a url string that starts with <code>file:</code> as custom config file location.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// `URL`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolveConfig</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"path/to/file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">config</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">URL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"/path/to/prettier-config-file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// URL string</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolveConfig</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"path/to/file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">config</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"file:///path/to/prettier-config-file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17178">Stop interpret <code>*.frag</code> files as JavaScript files (<a href="https://github.com/prettier/prettier/pull/17178" target="_blank" rel="noopener noreferrer" class="">#17178</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17178" class="hash-link" aria-label="Direct link to change-17178" title="Direct link to change-17178" translate="no">​</a></h4>
<p><code>*.frag</code> was interpreted as JavaScript files, but <code>.frag</code> is also used in GLSL(<a href="https://en.wikipedia.org/wiki/OpenGL_Shading_Language" target="_blank" rel="noopener noreferrer" class="">OpenGL Shading Language</a>). It causes error when Prettier try to format them as JavaScript files.</p>
<p>Since Prettier 3.6, <code>*.frag</code> files except <code>*.start.frag</code>, <code>*.end.frag</code>, <code>start.frag</code>, and <code>end.frag</code> are no longer treated as JavaScript files.</p>
<p>If you have JavaScript files with <code>.frag</code> that do not match the patterns mentioned above, you can config with <code>overrides</code>.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">overrides</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">files</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"**/*.frag"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">options</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"babel"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17331">Add <code>isSupported</code> function support for <code>languages</code> API (<a href="https://github.com/prettier/prettier/pull/17331" target="_blank" rel="noopener noreferrer" class="">#17331</a> by <a href="https://github.com/JounQin" target="_blank" rel="noopener noreferrer" class="">@JounQin</a>, <a href="https://github.com/prettier/prettier/pull/17490" target="_blank" rel="noopener noreferrer" class="">#17490</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17331" class="hash-link" aria-label="Direct link to change-17331" title="Direct link to change-17331" translate="no">​</a></h4>
<p>Previously, <code>languages</code> API for custom plugins only supported inferring parser based on the file basename or extension.</p>
<p>Prettier 3.6 added <code>isSupported: (options: { filepath: string }) =&gt; boolean</code> function to allow plugin check if file is supported based on the full path (eg: files in a specific directory).</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_BuS1"><p>Prettier can not ensure that <code>filepath</code> exists on disk.<br>
<!-- -->When using from APIs(eg: <code>prettier.format()</code>), Prettier can not ensure it's a valid path either.</p></div></div>
<p>If no <code>isSupported</code> provided, it just behaves the same way as before.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> languages </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">parsers</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function-variable function" style="color:#d73a49">isSupported</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">{</span><span class="token parameter"> filepath </span><span class="token parameter punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> filepath</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">includes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">".foo"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17339">Add <code>mjml</code> parser (<a href="https://github.com/prettier/prettier/pull/17339" target="_blank" rel="noopener noreferrer" class="">#17339</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17339" class="hash-link" aria-label="Direct link to change-17339" title="Direct link to change-17339" translate="no">​</a></h4>
<p>We already support <a href="https://mjml.io/" target="_blank" rel="noopener noreferrer" class="">MJML</a> in previous version with <code>html</code> parser, in order to distinguish MJML-specific a new <code>mjml</code> parser added.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17344">Ignore files with <code>--check-ignore-pragma</code> (<a href="https://github.com/prettier/prettier/pull/17344" target="_blank" rel="noopener noreferrer" class="">#17344</a> by <a href="https://github.com/wnayes" target="_blank" rel="noopener noreferrer" class="">@wnayes</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17344" class="hash-link" aria-label="Direct link to change-17344" title="Direct link to change-17344" translate="no">​</a></h4>
<p>Individual files can now opt out of formatting via <code>@noformat</code> or <code>@noprettier</code> "pragma" comments at the top of the file.</p>
<p>To enable this feature, use the new option <a href="https://prettier.io/docs/options#check-ignore-pragma" target="_blank" rel="noopener noreferrer" class=""><code>--check-ignore-pragma</code></a> (<code>checkIgnorePragma</code> via configuration or API).</p>
<p>Language plugins can <a href="https://prettier.io/docs/plugins#parsers" target="_blank" rel="noopener noreferrer" class="">implement support</a> for this feature. Most built-in parsers, including JavaScript (TypeScript), CSS, HTML, JSON, Markdown (MDX), YAML, and GraphQL, were updated to support this feature.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/**</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @noformat</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">matrix</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17548">Fix plugin loading in <code>prettier.getFileInfo()</code> (<a href="https://github.com/prettier/prettier/pull/17548" target="_blank" rel="noopener noreferrer" class="">#17548</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17548" class="hash-link" aria-label="Direct link to change-17548" title="Direct link to change-17548" translate="no">​</a></h4>
<p>In previous version, <code>prettier.getFileInfo()</code> only read <code>parser</code> config from <code>.prettierrc</code>, but doesn't load plugins to infer parser from plugin <code>languages</code>, Prettier 3.6 fixed it.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// prettier-plugin-foo</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> languages </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">parsers</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">extensions</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">".foo"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># .prettierrc</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">plugins</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">plugin</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">foo</span><br></span></code></pre></div></div>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier --file-info file.foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{ "ignored": false, "inferredParser": null }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{ "ignored": false, "inferredParser": "foo" }</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17549">Allow plugin to override builtin parsers when inferring parser (<a href="https://github.com/prettier/prettier/pull/17549" target="_blank" rel="noopener noreferrer" class="">#17549</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17549" class="hash-link" aria-label="Direct link to change-17549" title="Direct link to change-17549" translate="no">​</a></h4>
<p>Previously when inferring parser for file, builtin plugins are checked first, so plugins are not able to override parsers for files like <code>.js</code>.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// prettier-plugin-foo</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> languages </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">parsers</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">extensions</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">".js"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// prettier.config.js</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports operator" style="color:#393A34">*</span><span class="token imports"> </span><span class="token imports keyword module" style="color:#00009f">as</span><span class="token imports"> prettierPluginFoo</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"prettier-plugin-foo"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">prettierPluginFoo</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier --file-info file.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{ "ignored": false, "inferredParser": "babel" }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{ "ignored": false, "inferredParser": "foo" }</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-1">CLI<a href="https://prettier.io/blog/2025/06/23/3.6.0#cli-1" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-12221">Forbid use <code>--config</code> and <code>--no-config</code> together (<a href="https://github.com/prettier/prettier/pull/12221" target="_blank" rel="noopener noreferrer" class="">#12221</a> by <a href="https://github.com/Balastrong" target="_blank" rel="noopener noreferrer" class="">@Balastrong</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-12221" class="hash-link" aria-label="Direct link to change-12221" title="Direct link to change-12221" translate="no">​</a></h4>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier --config=.prettierrc --no-config .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error] Cannot use --no-config and --config together.</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17438">Ignore file modified time when <code>--cache-strategy=content</code> (<a href="https://github.com/prettier/prettier/pull/17438" target="_blank" rel="noopener noreferrer" class="">#17438</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17438" class="hash-link" aria-label="Direct link to change-17438" title="Direct link to change-17438" translate="no">​</a></h4>
<p>In previous version, when using <code>--cache-strategy=content</code>, if the file modified time changed, it still gets re-formatted even the file content didn't change, Prettier 3.6 fixed it.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17505-2">Fix result message for files can not be formatted (<a href="https://github.com/prettier/prettier/pull/17505" target="_blank" rel="noopener noreferrer" class="">#17505</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17505-2" class="hash-link" aria-label="Direct link to change-17505-2" title="Direct link to change-17505-2" translate="no">​</a></h4>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">touch unknown</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier --check unknown</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checking formatting...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">unknown</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error] No parser could be inferred for file "&lt;/path/to/unknown&gt;".</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">All matched files use Prettier code style!</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checking formatting...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">unknown</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error] No parser could be inferred for file "&lt;/path/to/unknown&gt;".</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Error occurred when checking code style in the above file.</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17505">Fix exitCode when parser cannot infer (<a href="https://github.com/prettier/prettier/pull/17505" target="_blank" rel="noopener noreferrer" class="">#17505</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17505" class="hash-link" aria-label="Direct link to change-17505" title="Direct link to change-17505" translate="no">​</a></h4>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">touch unknown</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier --check unknown &gt; /dev/null;echo $?</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error] No parser could be inferred for file "&lt;/path/to/unknown&gt;".</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error] No parser could be inferred for file "&lt;/path/to/unknown&gt;".</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="miscellaneous">Miscellaneous<a href="https://prettier.io/blog/2025/06/23/3.6.0#miscellaneous" class="hash-link" aria-label="Direct link to Miscellaneous" title="Direct link to Miscellaneous" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-17254">Fix embedded format with <code>cursorOffset</code> (<a href="https://github.com/prettier/prettier/pull/17254" target="_blank" rel="noopener noreferrer" class="">#17254</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/06/23/3.6.0#change-17254" class="hash-link" aria-label="Direct link to change-17254" title="Direct link to change-17254" translate="no">​</a></h4>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input (--cursor-offset=1) --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> Angular note</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">typescript</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-typescript">  import {Component} from '@angular/core';</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  </span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  @Component({</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">    selector: 'app-root',</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">    standalone: true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">    imports: [],</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">    template: `</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">      &lt;h1&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">      </span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">      {{ title }}&lt;/h1&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">    `,</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">    styleUrls: ['./app.component.css'],</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  })</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  export class AppComponent {</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">    title = 'default';</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  }</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Error: There are too many 'cursor' in doc.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> Angular note</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">typescript</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-typescript">import { Component } from "@angular/core";</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">@Component({</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  selector: "app-root",</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  standalone: true,</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  imports: [],</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  template: `</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">    &lt;h1&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">      {{ title }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">    &lt;/h1&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  `,</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  styleUrls: ["./app.component.css"],</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">})</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">export class AppComponent {</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">  title = "default";</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-typescript">}</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 3.5: New objectWrap option, experimentalOperatorPosition option and TS config file support!]]></title>
        <id>https://prettier.io/blog/2025/02/09/3.5.0</id>
        <link href="https://prettier.io/blog/2025/02/09/3.5.0"/>
        <updated>2025-02-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release includes a lot of bug fixes and the following new features:]]></summary>
        <content type="html"><![CDATA[<p>This release includes a lot of bug fixes and the following new features:</p>
<ul>
<li class="">Support for the new <code>objectWrap</code> option</li>
<li class="">Support for the new experimental <code>experimentalOperatorPosition</code> option</li>
<li class="">Support for TypeScript configuration file</li>
</ul>
<p>See each section for details.</p>
<p>If you appreciate Prettier and would like to support our work, please consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on, such as <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>. Thank you for your continued support!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-we-added-two-new-options">Why We Added Two New Options<a href="https://prettier.io/blog/2025/02/09/3.5.0#why-we-added-two-new-options" class="hash-link" aria-label="Direct link to Why We Added Two New Options" title="Direct link to Why We Added Two New Options" translate="no">​</a></h2>
<p>This release introduces two new options. If you’re familiar with Prettier’s <a href="https://prettier.io/docs/option-philosophy/" target="_blank" rel="noopener noreferrer" class="">Option Philosophy</a>, you might be wondering: “Why add new options?” Rest assured, these aren’t your typical options, nor do they violate our option philosophy.</p>
<p>As the name suggests, <code>experimentalOperatorPosition</code> is experimental. We have a <a href="https://github.com/prettier/prettier/issues/14527" target="_blank" rel="noopener noreferrer" class="">policy for experimental options</a>, which means it will eventually be removed. In the future, the new behavior could become the default, or this option might be dropped entirely. If you’ve been following Prettier for a while, you may recall we once added an <code>experimentalTernaries</code> option, and this follows the same approach.</p>
<p><code>objectWrap</code> is a bit special. For a long time, we’ve struggled with how to print multi-line objects. We haven’t yet found the perfect solution, so we’ve resorted to a semi-manual approach. For more details, see our <a href="https://prettier.io/docs/rationale/#multi-line-objects" target="_blank" rel="noopener noreferrer" class="">Rationale</a>. The current behavior isn’t ideal because the final output can vary based on how the user writes their code. To provide a more consistent format, we’ve decided to introduce the <code>objectWrap</code> option.</p>
<p>Although this release includes two new options, <strong>we want to emphasize that we haven’t forgotten Prettier’s option philosophy</strong>. These options address specific, long-standing formatting challenges without compromising our option philosophy.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2025/02/09/3.5.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2025/02/09/3.5.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-experimental-option-for-breaking-lines-before-binary-operators-7111-by-btmills">Add experimental option for breaking lines before binary operators (<a href="https://github.com/prettier/prettier/pull/7111" target="_blank" rel="noopener noreferrer" class="">#7111</a> by <a href="https://github.com/btmills" target="_blank" rel="noopener noreferrer" class="">@btmills</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#add-experimental-option-for-breaking-lines-before-binary-operators-7111-by-btmills" class="hash-link" aria-label="Direct link to add-experimental-option-for-breaking-lines-before-binary-operators-7111-by-btmills" title="Direct link to add-experimental-option-for-breaking-lines-before-binary-operators-7111-by-btmills" translate="no">​</a></h4>
<p>This is implemented behind the <code>--experimental-operator-position &lt;start|end&gt;</code> flag.</p>
<p>When binary expressions wrap lines, <code>start</code> prints the operators at the start of new lines. Placing binary operators at the beginning of wrapped lines can make the operators more prominent and easier to scan.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Math</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">random</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">yRange </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> minVerticalFraction</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> minVerticalFraction </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> yRange </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> offset</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// `experimentalOperatorPosition: end` (default behavior)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token known-class-name class-name">Math</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">random</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">yRange </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> minVerticalFraction</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  minVerticalFraction </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> yRange </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  offset</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// `experimentalOperatorPosition: start`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token known-class-name class-name">Math</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">random</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">yRange </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> minVerticalFraction</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> minVerticalFraction </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> yRange</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> offset</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="implement-objectwrap-config-option-16163-by-pauldraper-sosukesuzuki">Implement <code>objectWrap</code> config option (<a href="https://github.com/prettier/prettier/pull/16163" target="_blank" rel="noopener noreferrer" class="">#16163</a> by <a href="https://github.com/pauldraper" target="_blank" rel="noopener noreferrer" class="">@pauldraper</a>, <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#implement-objectwrap-config-option-16163-by-pauldraper-sosukesuzuki" class="hash-link" aria-label="Direct link to implement-objectwrap-config-option-16163-by-pauldraper-sosukesuzuki" title="Direct link to implement-objectwrap-config-option-16163-by-pauldraper-sosukesuzuki" translate="no">​</a></h4>
<p>Prettier has historically done semi-manual formatting of multi-line JavaScript object literals.</p>
<p>Namely, an object is kept on multiple lines if there is a newline prior to the first property, even if it could fit on a single line. See <a href="https://prettier.io/docs/rationale#multi-line-objects" target="_blank" rel="noopener noreferrer" class="">Multi-line objects</a> for more details.</p>
<p>While this behavior continues to be the default, <code>--object-wrap=collapse</code> instead ignores whitespace when formatting object literals.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> obj1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">name1</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">name2</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> obj2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">name1</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">name2</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> obj1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">name1</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">name2</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value2"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> obj2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">name1</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">name2</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value2"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5 (with `--object-wrapping=collapse`)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> obj1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">name1</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">name2</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value2"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> obj2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">name1</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">name2</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value2"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api">API<a href="https://prettier.io/blog/2025/02/09/3.5.0#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-support-for-typescript-config-files-16828-by-itsyoboieltr--fisker">Add support for TypeScript config files (<a href="https://github.com/prettier/prettier/pull/16828" target="_blank" rel="noopener noreferrer" class="">#16828</a> by <a href="https://github.com/itsyoboieltr" target="_blank" rel="noopener noreferrer" class="">@itsyoboieltr</a> &amp; <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#add-support-for-typescript-config-files-16828-by-itsyoboieltr--fisker" class="hash-link" aria-label="Direct link to add-support-for-typescript-config-files-16828-by-itsyoboieltr--fisker" title="Direct link to add-support-for-typescript-config-files-16828-by-itsyoboieltr--fisker" translate="no">​</a></h4>
<p>Added new format of configuration files:</p>
<ul>
<li class=""><code>.prettierrc.ts</code></li>
<li class=""><code>.prettierrc.mts</code></li>
<li class=""><code>.prettierrc.cts</code></li>
<li class=""><code>prettier.config.ts</code></li>
<li class=""><code>prettier.config.mts</code></li>
<li class=""><code>prettier.config.cts</code></li>
</ul>
<p>Note:</p>
<p>Currently TypeScript support in Node.js is experimental.</p>
<p>To make TypeScript config files work, Node.js&gt;=22.6.0 is required and Node.js v22 requires <code>--experimental-strip-types</code>.</p>
<p>You can run prettier with</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">node</span><span class="token plain"> --experimental-strip-types node_modules/prettier/bin/prettier.cjs </span><span class="token builtin class-name">.</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--write</span><br></span></code></pre></div></div>
<p>or</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token assign-left variable" style="color:#36acaa">NODE_OPTIONS</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"--experimental-strip-types"</span><span class="token plain"> prettier </span><span class="token builtin class-name">.</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--write</span><br></span></code></pre></div></div>
<p>Other TS loaders should also work, but not tested, use at your own risk.</p>
<p>For example, with <a href="https://tsx.is/" target="_blank" rel="noopener noreferrer" class=""><code>tsx</code></a>, you can</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">node</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--import</span><span class="token plain"> tsx node_modules/prettier/bin/prettier.cjs </span><span class="token builtin class-name">.</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--write</span><br></span></code></pre></div></div>
<p>or</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">tsx node_modules/prettier/bin/prettier.cjs </span><span class="token builtin class-name">.</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--write</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2025/02/09/3.5.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript-1">JavaScript<a href="https://prettier.io/blog/2025/02/09/3.5.0#javascript-1" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-word-wrapping-edge-cases-in-jsx-16700-by-seiyab">Improve word wrapping edge cases in JSX (<a href="https://github.com/prettier/prettier/pull/16700" target="_blank" rel="noopener noreferrer" class="">#16700</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#improve-word-wrapping-edge-cases-in-jsx-16700-by-seiyab" class="hash-link" aria-label="Direct link to improve-word-wrapping-edge-cases-in-jsx-16700-by-seiyab" title="Direct link to improve-word-wrapping-edge-cases-in-jsx-16700-by-seiyab" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">br_triggers_expression_break </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">br</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  text text text text text text text text text text text </span><span class="token punctuation" style="color:#393A34">{</span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">props</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">type</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"> </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">br_triggers_expression_break </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">br</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    text text text text text text text text text text text </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">props</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">type</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">" "</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">br_triggers_expression_break </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">br</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    text text text text text text text text text text text</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">" "</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">props</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">type</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">" "</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow">Flow<a href="https://prettier.io/blog/2025/02/09/3.5.0#flow" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-const-type-parameters-in-flow-16947-by-gkz">Support <code>const</code> type parameters in Flow (<a href="https://github.com/prettier/prettier/pull/16947" target="_blank" rel="noopener noreferrer" class="">#16947</a> by <a href="https://github.com/gkz" target="_blank" rel="noopener noreferrer" class="">@gkz</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#support-const-type-parameters-in-flow-16947-by-gkz" class="hash-link" aria-label="Direct link to support-const-type-parameters-in-flow-16947-by-gkz" title="Direct link to support-const-type-parameters-in-flow-16947-by-gkz" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> f</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">const</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">(): void </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.4</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Parse error</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">function f</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">const</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">(): void </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="css">CSS<a href="https://prettier.io/blog/2025/02/09/3.5.0#css" class="hash-link" aria-label="Direct link to CSS" title="Direct link to CSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="break-before-breaking-comma-separated-values-16907-by-seiyab">Break before breaking comma separated values (<a href="https://github.com/prettier/prettier/pull/16907" target="_blank" rel="noopener noreferrer" class="">#16907</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#break-before-breaking-comma-separated-values-16907-by-seiyab" class="hash-link" aria-label="Direct link to break-before-breaking-comma-separated-values-16907-by-seiyab" title="Direct link to break-before-breaking-comma-separated-values-16907-by-seiyab" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">background-image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">to bottom</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rgb</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">255</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">255</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">50</span><span class="token unit">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rgb</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">255</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">50</span><span class="token unit">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token url function" style="color:#d73a49">url</span><span class="token url punctuation" style="color:#393A34">(</span><span class="token url string url" style="color:#36acaa">"catfront.png"</span><span class="token url punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.4 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">background-image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      to bottom</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token function" style="color:#d73a49">rgb</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">255</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">255</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">50</span><span class="token unit">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token function" style="color:#d73a49">rgb</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">255</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">50</span><span class="token unit">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token url function" style="color:#d73a49">url</span><span class="token url punctuation" style="color:#393A34">(</span><span class="token url string url" style="color:#36acaa">"catfront.png"</span><span class="token url punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.5 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">background-image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">linear-gradient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">to bottom</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rgb</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">255</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">255</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">50</span><span class="token unit">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rgb</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">255</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">50</span><span class="token unit">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token url function" style="color:#d73a49">url</span><span class="token url punctuation" style="color:#393A34">(</span><span class="token url string url" style="color:#36acaa">"catfront.png"</span><span class="token url punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="vue">Vue<a href="https://prettier.io/blog/2025/02/09/3.5.0#vue" class="hash-link" aria-label="Direct link to Vue" title="Direct link to Vue" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-prop-shorthand-16920-by-fisker">Support <code>.prop</code> shorthand (<a href="https://github.com/prettier/prettier/pull/16920" target="_blank" rel="noopener noreferrer" class="">#16920</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#support-prop-shorthand-16920-by-fisker" class="hash-link" aria-label="Direct link to support-prop-shorthand-16920-by-fisker" title="Direct link to support-prop-shorthand-16920-by-fisker" translate="no">​</a></h4>
<p><code>.foo</code> is shorthand for <code>v-bind:foo.prop</code>. See <a href="https://vuejs.org/api/built-in-directives.html#v-bind" target="_blank" rel="noopener noreferrer" class=""><code>v-bind</code> builtin directive</a> for details.</p>
<div class="language-vue codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-vue codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Input --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;button .disabled="   a &amp;&amp;b "&gt;Click!&lt;/button&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 3.4 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;button .disabled="   a &amp;&amp;b "&gt;Click!&lt;/button&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 3.5 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;button .disabled="a &amp;&amp; b"&gt;Click!&lt;/button&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular">Angular<a href="https://prettier.io/blog/2025/02/09/3.5.0#angular" class="hash-link" aria-label="Direct link to Angular" title="Direct link to Angular" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-line-breaks-inside-icu-blocks-16922-by-fisker">Improve line breaks inside ICU blocks (<a href="https://github.com/prettier/prettier/pull/16922" target="_blank" rel="noopener noreferrer" class="">#16922</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#improve-line-breaks-inside-icu-blocks-16922-by-fisker" class="hash-link" aria-label="Direct link to improve-line-breaks-inside-icu-blocks-16922-by-fisker" title="Direct link to improve-line-breaks-inside-icu-blocks-16922-by-fisker" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">The author is {gender, select, male {male} female {female} other {other}}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">The author is </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">male consectetur adipiscing elit, sed do eiusmod</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">The author is {gender, select, male {male} female {female} other {other}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">The author is</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">male consectetur adipiscing elit, sed do eiusmod</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">The author is</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {gender, select, male {male} female {female} other {other}}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">The author is</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">male consectetur adipiscing elit, sed do eiusmod</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-extra-new-line-inside-icu-blocks-16922-by-fisker">Fix extra new line inside ICU blocks (<a href="https://github.com/prettier/prettier/pull/16922" target="_blank" rel="noopener noreferrer" class="">#16922</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#fix-extra-new-line-inside-icu-blocks-16922-by-fisker" class="hash-link" aria-label="Direct link to fix-extra-new-line-inside-icu-blocks-16922-by-fisker" title="Direct link to fix-extra-new-line-inside-icu-blocks-16922-by-fisker" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{active, select,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  true {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  false {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{active, select,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  true {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  false {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{active, select,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  true {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  false {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ember--handlebars">Ember / Handlebars<a href="https://prettier.io/blog/2025/02/09/3.5.0#ember--handlebars" class="hash-link" aria-label="Direct link to Ember / Handlebars" title="Direct link to Ember / Handlebars" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="handle-style-and-pre-tags-in-handlebarsglimmer-15087-by-jurgenwerk">Handle <code>&lt;style&gt;</code> and <code>&lt;pre&gt;</code> tags in Handlebars/Glimmer (<a href="https://github.com/prettier/prettier/pull/15087" target="_blank" rel="noopener noreferrer" class="">#15087</a> by <a href="https://github.com/jurgenwerk" target="_blank" rel="noopener noreferrer" class="">@jurgenwerk</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#handle-style-and-pre-tags-in-handlebarsglimmer-15087-by-jurgenwerk" class="hash-link" aria-label="Direct link to handle-style-and-pre-tags-in-handlebarsglimmer-15087-by-jurgenwerk" title="Direct link to handle-style-and-pre-tags-in-handlebarsglimmer-15087-by-jurgenwerk" translate="no">​</a></h4>
<div class="language-handlebars codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-handlebars codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{!-- Input --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">pre</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">cd</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">~</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">ls</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">echo</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"hey"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">pre</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">red</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">red</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">blue</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">red</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 3.4 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">pre</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">cd</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">~</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">ls</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">echo</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"hey"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">pre</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">red</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">red</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">blue</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">blue</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 3.5 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">pre</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">cd</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">~</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">ls</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">echo</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"hey"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">pre</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">red</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">red</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">blue</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">red</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown">Markdown<a href="https://prettier.io/blog/2025/02/09/3.5.0#markdown" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="uff5e-as-cjk-punctuation-16832-by-tats-u">U+FF5E as CJK punctuation (<a href="https://github.com/prettier/prettier/pull/16832" target="_blank" rel="noopener noreferrer" class="">#16832</a> by <a href="https://github.com/tats-u" target="_blank" rel="noopener noreferrer" class="">@tats-u</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#uff5e-as-cjk-punctuation-16832-by-tats-u" class="hash-link" aria-label="Direct link to uff5e-as-cjk-punctuation-16832-by-tats-u" title="Direct link to uff5e-as-cjk-punctuation-16832-by-tats-u" translate="no">​</a></h4>
<p>U+FF5E FULLWIDTH TILDE (～) is commonly used as a substitute for U+301C WAVE DASH (〜) in Windows for Japanese. Full width alphabets are less used in Markdown documents comparing to other types of documents (e.g. Microsoft Office documents), and the full width tilde is much less used as this purpose compared to full width alphabets and digits. Therefore, we can assume that the full width tilde in Markdown documents in the wild are a alternative form of the wave dash and a part of CJK punctuation.</p>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input (--prose-wrap=never) --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a 字 a 字 a 字</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">60～</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">100点</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">60〜</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">100点</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a 字 a 字 a 字 60～ 100点 60〜10点</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a 字 a 字 a 字 60～10点 60〜100点</span><br></span></code></pre></div></div>
<p>The first symbol between 60 and 100 in the above example is U+FF5E FULLWIDTH TILDE (～) and the second one is U+301C WAVE DASH (〜).</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-1">API<a href="https://prettier.io/blog/2025/02/09/3.5.0#api-1" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-read-config-from-packagejson-with-jsonc-syntax-on-bun-17041-by-fisker">Support read config from <code>package.json</code> with JSONC syntax on Bun (<a href="https://github.com/prettier/prettier/pull/17041" target="_blank" rel="noopener noreferrer" class="">#17041</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#support-read-config-from-packagejson-with-jsonc-syntax-on-bun-17041-by-fisker" class="hash-link" aria-label="Direct link to support-read-config-from-packagejson-with-jsonc-syntax-on-bun-17041-by-fisker" title="Direct link to support-read-config-from-packagejson-with-jsonc-syntax-on-bun-17041-by-fisker" translate="no">​</a></h4>
<p><a href="https://bun.sh/blog/bun-v1.2#jsonc-support-in-package-json" target="_blank" rel="noopener noreferrer" class="">Bun 1.2 added JSONC support in <code>package.json</code></a>, in previous version of Prettier, it will ignore <code>prettier</code> config in it. Since Prettier 3.5, we can read <code>prettier</code> config from it without error.</p>
<p>However, since it's just a Bun feature and not supported by Node.js, it can only work when running Prettier with Bun.</p>
<p>Important note: Prettier uses <a href="https://prettier.io/docs/options#parser" target="_blank" rel="noopener noreferrer" class=""><code>json-stringify</code> parser</a> to format <code>package.json</code> file by default, to support formatting <code>package.json</code> file with JSONC syntax, you need override the parser option</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">overrides</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token literal-property property" style="color:#36acaa">files</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"package.json"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token literal-property property" style="color:#36acaa">options</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"jsonc"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>If you can't upgrade Prettier for some reason, you can still use JSONC syntax in <code>package.json</code>, but don't put your <code>prettier</code> config in it, you'll have to use another <a href="https://prettier.io/docs/configuration" target="_blank" rel="noopener noreferrer" class="">configuration file</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="miscellaneous">Miscellaneous<a href="https://prettier.io/blog/2025/02/09/3.5.0#miscellaneous" class="hash-link" aria-label="Direct link to Miscellaneous" title="Direct link to Miscellaneous" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="use-esm-entrypoint-for-requireesm-16958-by-tats-u">Use ESM entrypoint for <code>require(ESM)</code> (<a href="https://github.com/prettier/prettier/pull/16958" target="_blank" rel="noopener noreferrer" class="">#16958</a> by <a href="https://github.com/tats-u" target="_blank" rel="noopener noreferrer" class="">@tats-u</a>)<a href="https://prettier.io/blog/2025/02/09/3.5.0#use-esm-entrypoint-for-requireesm-16958-by-tats-u" class="hash-link" aria-label="Direct link to use-esm-entrypoint-for-requireesm-16958-by-tats-u" title="Direct link to use-esm-entrypoint-for-requireesm-16958-by-tats-u" translate="no">​</a></h4>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>This change has been reverted in v3.5.2, check <a href="https://github.com/prettier/prettier/pull/17139" target="_blank" rel="noopener noreferrer" class="">#17139</a> for details.</p></div></div>
<p>Node.js 22.12 or later <a href="https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require" target="_blank" rel="noopener noreferrer" class="">can (experimentally) load ESM modules with <code>require</code> function</a> without runtime flags. This change enables <code>require</code> to load Prettier without the CommonJS entrypoint with almost only the ability to import the ESM entrypoint.</p>
<p>The feature to load ES modules with <code>require</code> is not completely stable but can be used without ExperimentalWarning as of Node 22.13.</p>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 3.4: A lot of bug fixes]]></title>
        <id>https://prettier.io/blog/2024/11/26/3.4.0</id>
        <link href="https://prettier.io/blog/2024/11/26/3.4.0"/>
        <updated>2024-11-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release includes numerous bug fixes and other improvements.]]></summary>
        <content type="html"><![CDATA[<p>This release includes numerous bug fixes and other improvements.</p>
<p>If you appreciate Prettier and would like to support our work, please consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on, such as <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>. Thank you for your continued support!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2024/11/26/3.4.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2024/11/26/3.4.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-template-literal-print-with-array-13315-by-fisker-syi0808">Fix template literal print with array (<a href="https://github.com/prettier/prettier/pull/13315" target="_blank" rel="noopener noreferrer" class="">#13315</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/syi0808" target="_blank" rel="noopener noreferrer" class="">@syi0808</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#fix-template-literal-print-with-array-13315-by-fisker-syi0808" class="hash-link" aria-label="Direct link to fix-template-literal-print-with-array-13315-by-fisker-syi0808" title="Direct link to fix-template-literal-print-with-array-13315-by-fisker-syi0808" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> string </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation punctuation" style="color:#393A34">[</span><span class="token template-string interpolation punctuation" style="color:#393A34">[</span><span class="token template-string interpolation number" style="color:#36acaa">1</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"> </span><span class="token template-string interpolation number" style="color:#36acaa">2</span><span class="token template-string interpolation punctuation" style="color:#393A34">]</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"> </span><span class="token template-string interpolation punctuation" style="color:#393A34">[</span><span class="token template-string interpolation number" style="color:#36acaa">3</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"> </span><span class="token template-string interpolation number" style="color:#36acaa">4</span><span class="token template-string interpolation punctuation" style="color:#393A34">]</span><span class="token template-string interpolation punctuation" style="color:#393A34">]</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> string </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation punctuation" style="color:#393A34">[</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">  </span><span class="token template-string interpolation punctuation" style="color:#393A34">[</span><span class="token template-string interpolation number" style="color:#36acaa">2</span><span class="token template-string interpolation punctuation" style="color:#393A34">]</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">  </span><span class="token template-string interpolation punctuation" style="color:#393A34">[</span><span class="token template-string interpolation number" style="color:#36acaa">4</span><span class="token template-string interpolation punctuation" style="color:#393A34">]</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation"></span><span class="token template-string interpolation punctuation" style="color:#393A34">]</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> string </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation punctuation" style="color:#393A34">[</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">  </span><span class="token template-string interpolation punctuation" style="color:#393A34">[</span><span class="token template-string interpolation number" style="color:#36acaa">1</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"> </span><span class="token template-string interpolation number" style="color:#36acaa">2</span><span class="token template-string interpolation punctuation" style="color:#393A34">]</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">  </span><span class="token template-string interpolation punctuation" style="color:#393A34">[</span><span class="token template-string interpolation number" style="color:#36acaa">3</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"> </span><span class="token template-string interpolation number" style="color:#36acaa">4</span><span class="token template-string interpolation punctuation" style="color:#393A34">]</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation"></span><span class="token template-string interpolation punctuation" style="color:#393A34">]</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-missing-parentheses-in-tagged-template-literals-16500-by-syi0808">Add missing parentheses in tagged template literals (<a href="https://github.com/prettier/prettier/pull/16500" target="_blank" rel="noopener noreferrer" class="">#16500</a> by <a href="https://github.com/syi0808" target="_blank" rel="noopener noreferrer" class="">@syi0808</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#add-missing-parentheses-in-tagged-template-literals-16500-by-syi0808" class="hash-link" aria-label="Direct link to add-missing-parentheses-in-tagged-template-literals-16500-by-syi0808" title="Direct link to add-missing-parentheses-in-tagged-template-literals-16500-by-syi0808" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token known-class-name class-name">String</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">raw</span><span class="token punctuation" style="color:#393A34">)</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">getTag</span><span class="token operator" style="color:#393A34">?.</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">String</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">raw</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">getTag</span><span class="token operator" style="color:#393A34">?.</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token known-class-name class-name">String</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">raw</span><span class="token punctuation" style="color:#393A34">)</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">getTag</span><span class="token operator" style="color:#393A34">?.</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dont-remove-useless--in-string-literals-16563-by-sosukesuzuki-16763-by-fisker">Don't remove useless <code>\</code> in string literals (<a href="https://github.com/prettier/prettier/pull/16563" target="_blank" rel="noopener noreferrer" class="">#16563</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>, <a href="https://github.com/prettier/prettier/pull/16763" target="_blank" rel="noopener noreferrer" class="">#16763</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#dont-remove-useless--in-string-literals-16563-by-sosukesuzuki-16763-by-fisker" class="hash-link" aria-label="Direct link to dont-remove-useless--in-string-literals-16563-by-sosukesuzuki-16763-by-fisker" title="Direct link to dont-remove-useless--in-string-literals-16563-by-sosukesuzuki-16763-by-fisker" translate="no">​</a></h4>
<p>Previously, Prettier would remove useless escape characters (<code>\</code>) from string literals. However, this behavior was inconsistent as it did not apply to template literals, which was reported in <a href="https://github.com/prettier/prettier/issues/16542" target="_blank" rel="noopener noreferrer" class="">issue #16542</a>.</p>
<p>This issue is a feature request to extend this behavior to template literals as well.</p>
<p>After discussing this internally, the Prettier team concluded that removing useless escape characters, whether in string literals or template literals, is the responsibility of a linter, not a formatter.</p>
<p>This change disables the removal of useless escape characters in string literals across all languages supported by Prettier. To keep the previous behavior, we recommend using ESLint rules like <a href="https://eslint.org/docs/latest/rules/no-useless-escape" target="_blank" rel="noopener noreferrer" class=""><code>no-useless-escape</code></a>.</p>
<p>Escaped quotes (e.g. <code>"\"\'"</code>) may get unescaped when changing between different quotes. This is explained on the <a href="https://prettier.io/docs/rationale#strings" target="_blank" rel="noopener noreferrer" class="">Rationale</a> page of the official documentation.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> str </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"\a"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> str </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"a"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> str </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"\a"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-comment-formatting-for-logical-expression-in-unary-expression-16593-by-sosukesuzuki">Improve comment formatting for logical expression in unary expression (<a href="https://github.com/prettier/prettier/pull/16593" target="_blank" rel="noopener noreferrer" class="">#16593</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#improve-comment-formatting-for-logical-expression-in-unary-expression-16593-by-sosukesuzuki" class="hash-link" aria-label="Direct link to improve-comment-formatting-for-logical-expression-in-unary-expression-16593-by-sosukesuzuki" title="Direct link to improve-comment-formatting-for-logical-expression-in-unary-expression-16593-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  cond1 </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// foo</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  cond2 </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// bar</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  cond3 </span><span class="token comment" style="color:#999988;font-style:italic">// baz</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    cond1 </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// foo</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    cond2 </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// bar</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    cond3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// baz</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  cond1 </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// foo</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  cond2 </span><span class="token operator" style="color:#393A34">||</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// bar</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  cond3 </span><span class="token comment" style="color:#999988;font-style:italic">// baz</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="removed-support-for-experimental-syntax-16643-16705-by-fisker">Removed support for experimental syntax (<a href="https://github.com/prettier/prettier/pull/16643" target="_blank" rel="noopener noreferrer" class="">#16643</a>, <a href="https://github.com/prettier/prettier/pull/16705" target="_blank" rel="noopener noreferrer" class="">#16705</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#removed-support-for-experimental-syntax-16643-16705-by-fisker" class="hash-link" aria-label="Direct link to removed-support-for-experimental-syntax-16643-16705-by-fisker" title="Direct link to removed-support-for-experimental-syntax-16643-16705-by-fisker" translate="no">​</a></h4>
<ul>
<li class="">
<p><code>DecimalLiteral</code> - The <a href="https://github.com/tc39/proposal-decimal" target="_blank" rel="noopener noreferrer" class="">Decimal proposal</a> decided not to introduce new syntax. The <code>decimal</code> plugin will be removed from Babel 8.</p>
</li>
<li class="">
<p><code>importReflection</code> - The "Import Reflection" proposal has been renamed to <a href="https://github.com/tc39/proposal-source-phase-imports" target="_blank" rel="noopener noreferrer" class="">"Source Phase Imports"</a></p>
</li>
<li class="">
<p><a href="https://prettier.io/docs/rationale#disclaimer-about-non-standard-syntax" target="_blank" rel="noopener noreferrer" class="">Disclaimer about non-standard syntax</a></p>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2024/11/26/3.4.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-missing-parentheses-in-tagged-template-literals-16500-by-syi0808-1">Add missing parentheses in tagged template literals (<a href="https://github.com/prettier/prettier/pull/16500" target="_blank" rel="noopener noreferrer" class="">#16500</a> by <a href="https://github.com/syi0808" target="_blank" rel="noopener noreferrer" class="">@syi0808</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#add-missing-parentheses-in-tagged-template-literals-16500-by-syi0808-1" class="hash-link" aria-label="Direct link to add-missing-parentheses-in-tagged-template-literals-16500-by-syi0808-1" title="Direct link to add-missing-parentheses-in-tagged-template-literals-16500-by-syi0808-1" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token known-class-name class-name">String</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">raw</span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">)</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token known-class-name class-name">String</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">raw</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">!</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">String</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">raw</span><span class="token operator" style="color:#393A34">!</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">String</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">raw</span><span class="token operator" style="color:#393A34">!</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token known-class-name class-name">String</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">raw</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">!</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token known-class-name class-name">String</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">raw</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">!</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-a-comment-on-between-decorator-and-modified-parameter-property-16574-by-sosukesuzuki">Preserve a comment on between decorator and modified parameter property (<a href="https://github.com/prettier/prettier/pull/16574" target="_blank" rel="noopener noreferrer" class="">#16574</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#preserve-a-comment-on-between-decorator-and-modified-parameter-property-16574-by-sosukesuzuki" class="hash-link" aria-label="Direct link to preserve-a-comment-on-between-decorator-and-modified-parameter-property-16574-by-sosukesuzuki" title="Direct link to preserve-a-comment-on-between-decorator-and-modified-parameter-property-16574-by-sosukesuzuki" translate="no">​</a></h4>
<p>The current version of Prettier unexpectedly moves a line comment between a parameter property modified by <code>readonly</code>, <code>private</code>, <code>public</code>, etc and a decorator. This output results in invalid TypeScript code.</p>
<p>This change ensures that the original format is preserved.</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token decorator at operator" style="color:#393A34">@</span><span class="token decorator function" style="color:#d73a49">decorator</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> foo</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token decorator at operator" style="color:#393A34">@</span><span class="token decorator function" style="color:#d73a49">decorator</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    foo</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token decorator at operator" style="color:#393A34">@</span><span class="token decorator function" style="color:#d73a49">decorator</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> foo</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-a-comment-between-modifier-and-the-decorated-property-name-16578-by-sosukesuzuki">Preserve a comment between modifier and the decorated property name (<a href="https://github.com/prettier/prettier/pull/16578" target="_blank" rel="noopener noreferrer" class="">#16578</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#preserve-a-comment-between-modifier-and-the-decorated-property-name-16578-by-sosukesuzuki" class="hash-link" aria-label="Direct link to preserve-a-comment-between-modifier-and-the-decorated-property-name-16578-by-sosukesuzuki" title="Direct link to preserve-a-comment-between-modifier-and-the-decorated-property-name-16578-by-sosukesuzuki" translate="no">​</a></h4>
<p>There was a bug where block comments between the modifier and the name of a decorated property were being treated as trailing comments of the decorator. This behavior was not only unexpected but also lacked idempotency.</p>
<p>With this change, the position of the block comment between the modifier and the property name is preserved.</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token decorator at operator" style="color:#393A34">@</span><span class="token decorator function" style="color:#d73a49">decorator</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"> propertyName</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token decorator at operator" style="color:#393A34">@</span><span class="token decorator function" style="color:#d73a49">decorator</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> propertyName</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3 (second output)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token decorator at operator" style="color:#393A34">@</span><span class="token decorator function" style="color:#d73a49">decorator</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> propertyName</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token decorator at operator" style="color:#393A34">@</span><span class="token decorator function" style="color:#d73a49">decorator</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"> propertyName</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dont-print-an-extra-line-break-for-arrow-function-with-type-parameter-in-assignment-16586-by-sosukesuzuki">Don't print an extra line break for arrow function with type parameter in assignment (<a href="https://github.com/prettier/prettier/pull/16586" target="_blank" rel="noopener noreferrer" class="">#16586</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#dont-print-an-extra-line-break-for-arrow-function-with-type-parameter-in-assignment-16586-by-sosukesuzuki" class="hash-link" aria-label="Direct link to dont-print-an-extra-line-break-for-arrow-function-with-type-parameter-in-assignment-16586-by-sosukesuzuki" title="Direct link to dont-print-an-extra-line-break-for-arrow-function-with-type-parameter-in-assignment-16586-by-sosukesuzuki" translate="no">​</a></h4>
<p>There was a bug where an extra line was inserted when assigning a chained arrow function with type parameters to a variable if there was a line comment above it.</p>
<p>This change ensures that the extra line is no longer inserted.</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">,</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">,</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">,</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-top-level-await-statements-16729-by-fisker">Support "Top-level await statements" (<a href="https://github.com/prettier/prettier/pull/16729" target="_blank" rel="noopener noreferrer" class="">#16729</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#support-top-level-await-statements-16729-by-fisker" class="hash-link" aria-label="Direct link to support-top-level-await-statements-16729-by-fisker" title="Direct link to support-top-level-await-statements-16729-by-fisker" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fetch</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">await</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fetch</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fetch</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-class-heritage-breaks-even-though-it-remains-inside-the-line-width-16730-by-fisker">Fix class heritage breaks even though it remains inside the line width (<a href="https://github.com/prettier/prettier/pull/16730" target="_blank" rel="noopener noreferrer" class="">#16730</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#fix-class-heritage-breaks-even-though-it-remains-inside-the-line-width-16730-by-fisker" class="hash-link" aria-label="Direct link to fix-class-heritage-breaks-even-though-it-remains-inside-the-line-width-16730-by-fisker" title="Direct link to fix-class-heritage-breaks-even-though-it-remains-inside-the-line-width-16730-by-fisker" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">JiraCreatePixFraudDetectionGateway</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">Pick</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name">IssuePixFraudDetectionGateway</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"> </span><span class="token class-name string" style="color:#e3116c">"createPixFraudDetectionIssue"</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> logger</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Logger</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">logger </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> logger</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">child</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      context</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> JiraCreatePixFraudDetectionGateway</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">name</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">JiraCreatePixFraudDetectionGateway</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token class-name">Pick</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name">IssuePixFraudDetectionGateway</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"> </span><span class="token class-name string" style="color:#e3116c">"createPixFraudDetectionIssue"</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> logger</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Logger</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">logger </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> logger</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">child</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      context</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> JiraCreatePixFraudDetectionGateway</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">name</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">JiraCreatePixFraudDetectionGateway</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">Pick</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name">IssuePixFraudDetectionGateway</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"> </span><span class="token class-name string" style="color:#e3116c">"createPixFraudDetectionIssue"</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> logger</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Logger</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">logger </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> logger</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">child</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      context</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> JiraCreatePixFraudDetectionGateway</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">name</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-declare-before-accessibility-in-class-properties-16731-by-fisker">Print <code>declare</code> before accessibility in class properties (<a href="https://github.com/prettier/prettier/pull/16731" target="_blank" rel="noopener noreferrer" class="">#16731</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#print-declare-before-accessibility-in-class-properties-16731-by-fisker" class="hash-link" aria-label="Direct link to print-declare-before-accessibility-in-class-properties-16731-by-fisker" title="Direct link to print-declare-before-accessibility-in-class-properties-16731-by-fisker" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">declare</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">declare</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">declare</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="css">CSS<a href="https://prettier.io/blog/2024/11/26/3.4.0#css" class="hash-link" aria-label="Direct link to CSS" title="Direct link to CSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="resolve-some-types-of-overrun-in-css-16570-by-seiyab">Resolve some types of overrun in CSS (<a href="https://github.com/prettier/prettier/pull/16570" target="_blank" rel="noopener noreferrer" class="">#16570</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#resolve-some-types-of-overrun-in-css-16570-by-seiyab" class="hash-link" aria-label="Direct link to resolve-some-types-of-overrun-in-css-16570-by-seiyab" title="Direct link to resolve-some-types-of-overrun-in-css-16570-by-seiyab" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@media</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule property" style="color:#36acaa">prefers-reduced-data</span><span class="token atrule punctuation" style="color:#393A34">:</span><span class="token atrule" style="color:#00a4db"> no-preference</span><span class="token atrule punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token atrule rule" style="color:#00a4db">@font-face</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">unicode-range</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">0000</span><span class="token number" style="color:#36acaa">-00</span><span class="token plain">FF</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">0131</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">U+</span><span class="token number" style="color:#36acaa">0152</span><span class="token number" style="color:#36acaa">-0153</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">BB-02BC</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">C6</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">DA</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">DC</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2000</span><span class="token number" style="color:#36acaa">-206</span><span class="token plain">F</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2074</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">20</span><span class="token plain">AC</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2122</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2191</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2193</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2212</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2215</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+FEFF</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+FFFD</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.3 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@media</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule property" style="color:#36acaa">prefers-reduced-data</span><span class="token atrule punctuation" style="color:#393A34">:</span><span class="token atrule" style="color:#00a4db"> no-preference</span><span class="token atrule punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token atrule rule" style="color:#00a4db">@font-face</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">unicode-range</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">0000</span><span class="token number" style="color:#36acaa">-00</span><span class="token plain">FF</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">0131</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">0152</span><span class="token number" style="color:#36acaa">-0153</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">BB-02BC</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">C6</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">DA</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">DC</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2000</span><span class="token number" style="color:#36acaa">-206</span><span class="token plain">F</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2074</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">20</span><span class="token plain">AC</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2122</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2191</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2193</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2212</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      U+</span><span class="token number" style="color:#36acaa">2215</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+FEFF</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+FFFD</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.4 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@media</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule property" style="color:#36acaa">prefers-reduced-data</span><span class="token atrule punctuation" style="color:#393A34">:</span><span class="token atrule" style="color:#00a4db"> no-preference</span><span class="token atrule punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token atrule rule" style="color:#00a4db">@font-face</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">unicode-range</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">0000</span><span class="token number" style="color:#36acaa">-00</span><span class="token plain">FF</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">0131</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">0152</span><span class="token number" style="color:#36acaa">-0153</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">BB-02BC</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">C6</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">DA</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">02</span><span class="token plain">DC</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2000</span><span class="token number" style="color:#36acaa">-206</span><span class="token plain">F</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2074</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">20</span><span class="token plain">AC</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2122</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2191</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2193</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      U+</span><span class="token number" style="color:#36acaa">2212</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+</span><span class="token number" style="color:#36acaa">2215</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+FEFF</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> U+FFFD</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="remove-extra-indentation-in-pseudo-class-function-16572-by-sosukesuzuki">Remove extra indentation in pseudo-class function (<a href="https://github.com/prettier/prettier/pull/16572" target="_blank" rel="noopener noreferrer" class="">#16572</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#remove-extra-indentation-in-pseudo-class-function-16572-by-sosukesuzuki" class="hash-link" aria-label="Direct link to remove-extra-indentation-in-pseudo-class-function-16572-by-sosukesuzuki" title="Direct link to remove-extra-indentation-in-pseudo-class-function-16572-by-sosukesuzuki" translate="no">​</a></h4>
<p>This change fixes a bug where extra indentation was added when line breaks were included in the argument list of pseudo-class functions like <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:where" target="_blank" rel="noopener noreferrer" class=""><code>:where()</code></a>, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:is" target="_blank" rel="noopener noreferrer" class=""><code>:is()</code></a>, and <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:not" target="_blank" rel="noopener noreferrer" class=""><code>:not</code></a>.</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:where</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f">input</span><span class="token selector pseudo-class" style="color:#00009f">:not</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"button"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> </span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"reset"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> </span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"submit"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> textarea</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> select</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">/* CSS here */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.3 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:where</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">    input</span><span class="token selector pseudo-class" style="color:#00009f">:not</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"button"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> </span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"reset"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> </span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"submit"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">    textarea</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">    select</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  </span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">/* CSS here */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.4 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:where</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  input</span><span class="token selector pseudo-class" style="color:#00009f">:not</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"button"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> </span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"reset"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> </span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">type</span><span class="token selector attribute operator" style="color:#393A34">=</span><span class="token selector attribute attr-value" style="color:#e3116c">"submit"</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  textarea</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  select</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">/* CSS here */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-of-incomplete-css-value-comments-16583-by-sosukesuzuki-fisker">Fix formatting of incomplete CSS value comments (<a href="https://github.com/prettier/prettier/pull/16583" target="_blank" rel="noopener noreferrer" class="">#16583</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#fix-formatting-of-incomplete-css-value-comments-16583-by-sosukesuzuki-fisker" class="hash-link" aria-label="Direct link to fix-formatting-of-incomplete-css-value-comments-16583-by-sosukesuzuki-fisker" title="Direct link to fix-formatting-of-incomplete-css-value-comments-16583-by-sosukesuzuki-fisker" translate="no">​</a></h4>
<p>When formatting CSS value comments, the trailing <code>/</code> may be lost, resulting in an invalid comment.</p>
<p>This change ensures that value comments are not truncated.</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">h1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--OFF</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* OFF */</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.3 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">h1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--OFF</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">/* OFF *;</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"></span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.4 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">h1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--OFF</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* OFF */</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scss">SCSS<a href="https://prettier.io/blog/2024/11/26/3.4.0#scss" class="hash-link" aria-label="Direct link to SCSS" title="Direct link to SCSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-error-thrown-when-formatting-scss-file-16607-by-fisker">Fix error thrown when formatting SCSS file (<a href="https://github.com/prettier/prettier/pull/16607" target="_blank" rel="noopener noreferrer" class="">#16607</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#fix-error-thrown-when-formatting-scss-file-16607-by-fisker" class="hash-link" aria-label="Direct link to fix-error-thrown-when-formatting-scss-file-16607-by-fisker" title="Direct link to fix-error-thrown-when-formatting-scss-file-16607-by-fisker" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@if</span><span class="token plain"> </span><span class="token selector" style="color:#00009f">true </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property variable" style="color:#36acaa">$newKey</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token property variable" style="color:#36acaa">$key</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"> </span><span class="token property variable" style="color:#36acaa">$theme-name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">$value</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Error</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@if</span><span class="token plain"> </span><span class="token selector" style="color:#00009f">true </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property variable" style="color:#36acaa">$newKey</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property variable" style="color:#36acaa">$key</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token property variable" style="color:#36acaa">$theme-name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">$value</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-wrong-trailing-comma-position-after-comment-in-scss-16617-by-ma-hawaj-fisker">Fix wrong trailing comma position after comment in SCSS (<a href="https://github.com/prettier/prettier/pull/16617" target="_blank" rel="noopener noreferrer" class="">#16617</a> by <a href="https://github.com/Ma-hawaj" target="_blank" rel="noopener noreferrer" class="">@Ma-hawaj</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#fix-wrong-trailing-comma-position-after-comment-in-scss-16617-by-ma-hawaj-fisker" class="hash-link" aria-label="Direct link to fix-wrong-trailing-comma-position-after-comment-in-scss-16617-by-ma-hawaj-fisker" title="Direct link to fix-wrong-trailing-comma-position-after-comment-in-scss-16617-by-ma-hawaj-fisker" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property variable" style="color:#36acaa">$z-indexes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">header</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1035</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">overlay</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1202</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// TODO: change to 1050 after bootstrap modals will be removed</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.3 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property variable" style="color:#36acaa">$z-indexes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">header</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1035</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">overlay</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1202</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// TODO: change to 1050 after bootstrap modals will be removed,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.4 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property variable" style="color:#36acaa">$z-indexes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">header</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1035</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">overlay</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1202</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// TODO: change to 1050 after bootstrap modals will be removed</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2024/11/26/3.4.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="keep-doctype-in-non-html-files-unchanged-16765-by-fisker">Keep doctype in non-html files unchanged (<a href="https://github.com/prettier/prettier/pull/16765" target="_blank" rel="noopener noreferrer" class="">#16765</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#keep-doctype-in-non-html-files-unchanged-16765-by-fisker" class="hash-link" aria-label="Direct link to keep-doctype-in-non-html-files-unchanged-16765-by-fisker" title="Direct link to keep-doctype-in-non-html-files-unchanged-16765-by-fisker" translate="no">​</a></h4>
<p>In Prettier v3, <a href="https://prettier.io/blog/2023/07/05/3.0.0#print-html5-doctype-in-lowercase-7391httpsgithubcomprettierprettierpull7391-by-fiskerhttpsgithubcomfisker" target="_blank" rel="noopener noreferrer" class="">we print HTML5 doctype in lowercase</a>, it's safe for HTML files, however users may use the <code>html</code> parser to format other files eg: XHTML files, lowercase the <code>doctype</code> will break XHTML documents.</p>
<p>Starting with Prettier 3.4, we'll only lowercase <a href="https://developer.mozilla.org/en-US/docs/MDN/Writing_guidelines/Writing_style_guide/Code_style_guide/HTML#doctype" target="_blank" rel="noopener noreferrer" class="">HTML5 doctype (<code>&lt;!doctype html&gt;</code>)</a> when the file extension is <code>.html</code> or <code>.htm</code>, otherwise they will be untouched.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- foo.xhtml --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&lt;!</span><span class="token doctype doctype-tag" style="color:#999988;font-style:italic">DOCTYPE</span><span class="token doctype" style="color:#999988;font-style:italic"> </span><span class="token doctype name" style="color:#999988;font-style:italic">html</span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&lt;!</span><span class="token doctype doctype-tag" style="color:#999988;font-style:italic">doctype</span><span class="token doctype" style="color:#999988;font-style:italic"> </span><span class="token doctype name" style="color:#999988;font-style:italic">html</span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&lt;!</span><span class="token doctype doctype-tag" style="color:#999988;font-style:italic">DOCTYPE</span><span class="token doctype" style="color:#999988;font-style:italic"> </span><span class="token doctype name" style="color:#999988;font-style:italic">html</span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="vue">Vue<a href="https://prettier.io/blog/2024/11/26/3.4.0#vue" class="hash-link" aria-label="Direct link to Vue" title="Direct link to Vue" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-extra-semicolon-inserted-in-vue-event-binding-with-non-ascii-characters-16733-by-fisker">Fix extra semicolon inserted in Vue event binding with non-ascii characters (<a href="https://github.com/prettier/prettier/pull/16733" target="_blank" rel="noopener noreferrer" class="">#16733</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#fix-extra-semicolon-inserted-in-vue-event-binding-with-non-ascii-characters-16733-by-fisker" class="hash-link" aria-label="Direct link to fix-extra-semicolon-inserted-in-vue-event-binding-with-non-ascii-characters-16733-by-fisker" title="Direct link to fix-extra-semicolon-inserted-in-vue-event-binding-with-non-ascii-characters-16733-by-fisker" translate="no">​</a></h4>
<div class="language-vue codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-vue codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Input --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;button @click="点击事件"&gt;点击!&lt;/button&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;button @click="onClick"&gt;Click!&lt;/button&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 3.3 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;button @click="点击事件;"&gt;点击!&lt;/button&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;button @click="onClick"&gt;Click!&lt;/button&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 3.4 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;button @click="点击事件"&gt;点击!&lt;/button&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;button @click="onClick"&gt;Click!&lt;/button&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular">Angular<a href="https://prettier.io/blog/2024/11/26/3.4.0#angular" class="hash-link" aria-label="Direct link to Angular" title="Direct link to Angular" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-angular-19-16862-by-fisker">Support Angular 19 (<a href="https://github.com/prettier/prettier/pull/16862" target="_blank" rel="noopener noreferrer" class="">#16862</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#support-angular-19-16862-by-fisker" class="hash-link" aria-label="Direct link to support-angular-19-16862-by-fisker" title="Direct link to support-angular-19-16862-by-fisker" translate="no">​</a></h4>
<p>Angular 19 added <a href="https://github.com/angular/angular/pull/58183" target="_blank" rel="noopener noreferrer" class="">support for <code>typeof</code> keyword in template expressions</a>.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">{{ typeof</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      x ===</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    'object' ? 'Y' : 'N'}}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {{ typeof</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      x ===</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    'object' ? 'Y' : 'N'}}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 3.4</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">{{ typeof x === "object" ? "Y" : "N" }}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown">Markdown<a href="https://prettier.io/blog/2024/11/26/3.4.0#markdown" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="remove-excessive-spaces-after-line-prefixes-for-unordered-lists-in-markdown-15526-by-tomasludvik">Remove excessive spaces after line prefixes for unordered lists in Markdown (<a href="https://github.com/prettier/prettier/pull/15526" target="_blank" rel="noopener noreferrer" class="">#15526</a> by <a href="https://github.com/TomasLudvik" target="_blank" rel="noopener noreferrer" class="">@TomasLudvik</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#remove-excessive-spaces-after-line-prefixes-for-unordered-lists-in-markdown-15526-by-tomasludvik" class="hash-link" aria-label="Direct link to remove-excessive-spaces-after-line-prefixes-for-unordered-lists-in-markdown-15526-by-tomasludvik" title="Direct link to remove-excessive-spaces-after-line-prefixes-for-unordered-lists-in-markdown-15526-by-tomasludvik" translate="no">​</a></h4>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> first line</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> second line indented</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> third line</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> fourth line</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> fifth line</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain">   first line</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain">   second line indented</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain">   third line</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain">   fourth line</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain">   fifth line</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> first line</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> second line indented</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> third line</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> fourth line</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token list punctuation" style="color:#393A34">-</span><span class="token plain"> fifth line</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-incorrect-wrap-in-sentence-with-linkreference-16546-by-seiyab">Fix incorrect wrap in sentence with linkReference (<a href="https://github.com/prettier/prettier/pull/16546" target="_blank" rel="noopener noreferrer" class="">#16546</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#fix-incorrect-wrap-in-sentence-with-linkreference-16546-by-seiyab" class="hash-link" aria-label="Direct link to fix-incorrect-wrap-in-sentence-with-linkreference-16546-by-seiyab" title="Direct link to fix-incorrect-wrap-in-sentence-with-linkreference-16546-by-seiyab" translate="no">​</a></h4>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input (--prose-wrap=always) --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">This folder has [VHS] tape files to create gifs for the [Widget Showcase]. To run them, install VHS from main (the theme and screenshot commands are not yet released).</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">This folder has [VHS] tape files to create gifs for the [Widget Showcase]. To run</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">them, install VHS from main (the theme and screenshot commands are not yet released).</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">This folder has [VHS] tape files to create gifs for the [Widget Showcase]. To</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">run them, install VHS from main (the theme and screenshot commands are not yet</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">released).</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-non-ascii-whitespaces-at-the-end-of-the-line-and-beginning-of-the-next-line-16619-by-tats-u">Preserve non-ASCII whitespaces at the end of the line and beginning of the next line (<a href="https://github.com/prettier/prettier/pull/16619" target="_blank" rel="noopener noreferrer" class="">#16619</a> by <a href="https://github.com/tats-u" target="_blank" rel="noopener noreferrer" class="">@tats-u</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#preserve-non-ascii-whitespaces-at-the-end-of-the-line-and-beginning-of-the-next-line-16619-by-tats-u" class="hash-link" aria-label="Direct link to preserve-non-ascii-whitespaces-at-the-end-of-the-line-and-beginning-of-the-next-line-16619-by-tats-u" title="Direct link to preserve-non-ascii-whitespaces-at-the-end-of-the-line-and-beginning-of-the-next-line-16619-by-tats-u" translate="no">​</a></h4>
<p>Prettier removes non-ASCII spaces at the end of the line and beginning of the next line. However, this behavior is not consistent with the CommonMark spec.</p>
<p><a href="https://spec.commonmark.org/0.31.2/#soft-line-breaks" target="_blank" rel="noopener noreferrer" class="">https://spec.commonmark.org/0.31.2/#soft-line-breaks</a></p>
<blockquote>
<p>Spaces at the end of the line and beginning of the next line are removed:</p>
</blockquote>
<p><a href="https://spec.commonmark.org/0.31.2/#unicode-whitespace-character" target="_blank" rel="noopener noreferrer" class="">https://spec.commonmark.org/0.31.2/#unicode-whitespace-character</a></p>
<blockquote>
<p>A Unicode whitespace character is a character in the Unicode Zs general category, or a tab (U+0009), line feed (U+000A), form feed (U+000C), or carriage return (U+000D).</p>
</blockquote>
<blockquote>
<p>Unicode whitespace is a sequence of one or more Unicode whitespace characters.</p>
</blockquote>
<blockquote>
<p>A space is U+0020.</p>
</blockquote>
<p>The CommonMark spec doesn't mention non-ASCII spaces here, so removing them changes the content of the Markdown document.</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> EM Space (U+2003) EM Space</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">　全角スペース (U+3000) 全形空白</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">EM Space (U+2003) EM Space</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">全角スペース (U+3000) 全形空白</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> EM Space (U+2003) EM Space</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">　全角スペース (U+3000) 全形空白</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dont-break-a-line-a-between-chinese-or-japanese-and-others-16691-by-tats-u">Don't break a line a between Chinese or Japanese and others (<a href="https://github.com/prettier/prettier/pull/16691" target="_blank" rel="noopener noreferrer" class="">#16691</a> by <a href="https://github.com/tats-u" target="_blank" rel="noopener noreferrer" class="">@tats-u</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#dont-break-a-line-a-between-chinese-or-japanese-and-others-16691-by-tats-u" class="hash-link" aria-label="Direct link to dont-break-a-line-a-between-chinese-or-japanese-and-others-16691-by-tats-u" title="Direct link to dont-break-a-line-a-between-chinese-or-japanese-and-others-16691-by-tats-u" translate="no">​</a></h4>
<p>Markdown documents are mainly converted to HTML or components of JavaScript-based frameworks. This means that paragraphs in Markdown are eventually processed by the browser according to <a href="https://drafts.csswg.org/css-text-4/" target="_blank" rel="noopener noreferrer" class="">CSS rules</a>. This is because many Markdown converter preserve line breaks in paragraphs in input Markdown and HTML itself does not specify how browsers should handle line breaks in text in HTML.</p>
<p>According to <a href="https://drafts.csswg.org/css-text-4/#line-break-transform" target="_blank" rel="noopener noreferrer" class="">CSS rules (CSS Text Module Level 3 or later)</a>, browsers should remove line breaks between Chinese/Japanese characters instead of replacing them with spaces. However, this rule has been ignored by WebKit-based or Webkit-derived browsers (Chrome, Safari, and so on) for long time.</p>
<p>For example, the following HTML paragraph:</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">汉语</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">漢語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<p>generated from the following Markdown:</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">日本語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">汉语</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">漢語</span><br></span></code></pre></div></div>
<p>should be rendered as follows according to CSS rules and actually is rendered such by Firefox:</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">日本語汉语漢語</span><br></span></code></pre></div></div>
<p>However, Chrome and Safari render it as follows:</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">日本語 汉语 漢語</span><br></span></code></pre></div></div>
<p>This is why we should stop Prettier from line breaking between Chinese/Japanese characters. We decided to stop Prettier from forcing users to use a plugin for a Markdown converter that concatenates lines that start or end with Chinese/Japanese characters (<a href="https://www.npmjs.com/package/remark-join-cjk-lines" target="_blank" rel="noopener noreferrer" class="">remark-join-cjk-lines</a>, for example).</p>
<p>Also, <a href="https://github.com/w3c/csswg-drafts/blob/076914a198bf3ac642001619e08acefdf607d61d/css-text/Overview.bs#L712" target="_blank" rel="noopener noreferrer" class="">a line break between Chinese/Japanese and others are equivalent to a space</a> according to before <a href="https://github.com/w3c/csswg-drafts/commit/b3bb0ed18b3168981c54c437bcfb5881ef49975b" target="_blank" rel="noopener noreferrer" class="">the commit suspending a concrete rule in CSS Text Module Level 3 by commenting it out</a> fixing <a href="https://github.com/w3c/csswg-drafts/issues/5086" target="_blank" rel="noopener noreferrer" class="">an issue on the CSS Working Group Editor Drafts</a>. Firefox follows this rule. Therefore, all browsers render the following paragraph:</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- prettier-ignore --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">```html</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">日本語 English 汉语 한국어 漢語</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<p>as follows:</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">日本語 English 汉语 한국어 漢語</span><br></span></code></pre></div></div>
<p>However, Prettier has broken a line between Chinese/Japanese characters in Markdown for a long time, and between Chinese/Japanese and latin characters in some cases since 3.0.0. For example, the following Markdown paragraph:</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">日本語English汉语</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">English</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">漢語</span><br></span></code></pre></div></div>
<p>is formatted as follows if <code>--prose-wrap</code> is set to the other value than <code>preserve</code> in Prettier 3.x:</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">日本語English汉语English漢語</span><br></span></code></pre></div></div>
<p>However, the following HTML, which is generated by a Markdown-to-HTML converter based on the above Markdown:</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語English汉语</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">English</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">漢語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<p>is rendered as follows by all browsers:</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">日本語English汉语 English 漢語</span><br></span></code></pre></div></div>
<p>This is why we should stop Prettier from line breaking al　so around Chinese/Japanese characters in Markdown. We are going to conform Prettier's behavior to this rule in a future version. After that, line breaks between Chinese/Japanese and others will be allowed again under certain rules.</p>
<p>One of the few exceptions is spaces and line breaks between Chinese/Japanese and Korean letters. The following Markdown paragraphs are equivalent even in the current Prettier version:</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">현재 韓國의 大統領은 尹錫悅이다.</span><br></span></code></pre></div></div>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">현재</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">韓國의</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">大統領은</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">尹錫悅이다.</span><br></span></code></pre></div></div>
<p>You get the former if you format the latter with <code>--prose-wrap=always</code> and a sufficiently long <code>--print-width</code> value or with <code>--prose-wrap=never</code>, and you get the latter if you format the former with <code>--prose-wrap=always</code> with a extremely short <code>--print-width</code> value. Therefore, we do not have to touch such spaces and line breaks.</p>
<p>Another exception is those between a Chinese/Japanese character and a meaningful symbol in Markdown like <code>*</code>, <code>`</code>, <code>[</code>, and <code>]</code>. For example, the following Markdown paragraph is equivalent even in the current Prettier version:</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content">Yarn</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain"> のCLI経由でフォーマットするには </span><span class="token code-snippet code keyword" style="color:#00009f">`yarn prettier -w `</span><span class="token plain"> を実行してください。</span><br></span></code></pre></div></div>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token bold punctuation" style="color:#393A34">**</span><span class="token bold content">Yarn</span><span class="token bold punctuation" style="color:#393A34">**</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">のCLI経由でフォーマットするには</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code-snippet code keyword" style="color:#00009f">`yarn prettier -w .`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">を実行してください。</span><br></span></code></pre></div></div>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input (--prose-wrap=always --print-width=20) --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語 汉语 漢語 English 한국어 日本語 汉语 漢語 English 한국어 日本語 汉语 漢語 English 한국어 日本語 汉语 漢語 English 한국어</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語汉语漢語English한국어日本語汉语漢語English한국어日本語汉语漢語English한국어日本語汉语漢語English한국어</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語 汉语 漢語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">English 한국어 日本</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">語 汉语 漢語 English</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">한국어 日本語 汉语</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">漢語 English 한국어</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語 汉语 漢語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">English 한국어</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語汉语漢語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">English한국어日本語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">汉语漢語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">English한국어日本語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">汉语漢語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">English한국어日本語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">汉语漢語</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">English한국어</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語 汉语 漢語 English</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">한국어</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語 汉语 漢語 English</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">한국어</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語 汉语 漢語 English</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">한국어</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語 汉语 漢語 English</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">한국어</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">日本語汉语漢語English한국어日本語汉语漢語English한국어日本語汉语漢語English한국어日本語汉语漢語English한국어</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="tell-regexp-util-to-generate-regex-compatible-with-u-flag-16816-by-tats-u">Tell regexp-util to generate regex compatible with u flag (<a href="https://github.com/prettier/prettier/pull/16816" target="_blank" rel="noopener noreferrer" class="">#16816</a> by <a href="https://github.com/tats-u" target="_blank" rel="noopener noreferrer" class="">@tats-u</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#tell-regexp-util-to-generate-regex-compatible-with-u-flag-16816-by-tats-u" class="hash-link" aria-label="Direct link to tell-regexp-util-to-generate-regex-compatible-with-u-flag-16816-by-tats-u" title="Direct link to tell-regexp-util-to-generate-regex-compatible-with-u-flag-16816-by-tats-u" translate="no">​</a></h4>
<p>CJK characters outside of BMP and Ideographic Variation Sequences (IVS; variation selectors dedicated for han/kanji), which consume 2 characters in JavaScript string, have not been treated as CJK. This is due to the fact that Prettier has not passed the appropriate flag <code>"u"</code> to the <code>regexp-util</code> package.</p>
<p>In the following example, “𠮷” (U+20BB7) is out of BMP, and “葛󠄀” is a combination of a han “葛” (U+845B) in BMP and an IVS U+E0100. The latter requires a font with the support of Adobe Japan-1 (e.g. Yu Gothic UI and Source Han Sans) to be rendered as a form different from that of the character without IVS (葛).</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input (--prose-wrap=never) --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a 字 a 字 a 字</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">𠮷</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">𠮷</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">葛󠄀</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">葛󠄀</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">終</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a 字 a 字 a 字 𠮷 𠮷 葛󠄀 葛󠄀 終</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a 字 a 字 a 字𠮷𠮷葛󠄀葛󠄀終</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="yaml">YAML<a href="https://prettier.io/blog/2024/11/26/3.4.0#yaml" class="hash-link" aria-label="Direct link to YAML" title="Direct link to YAML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-yaml-comment-in-non-singleline-items-missing-space-before--16489-by-fyc09">Fix yaml comment in non-singleline items missing space before <code>#</code> (<a href="https://github.com/prettier/prettier/pull/16489" target="_blank" rel="noopener noreferrer" class="">#16489</a> by <a href="https://github.com/fyc09" target="_blank" rel="noopener noreferrer" class="">@fyc09</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#fix-yaml-comment-in-non-singleline-items-missing-space-before--16489-by-fyc09" class="hash-link" aria-label="Direct link to fix-yaml-comment-in-non-singleline-items-missing-space-before--16489-by-fyc09" title="Direct link to fix-yaml-comment-in-non-singleline-items-missing-space-before--16489-by-fyc09" translate="no">​</a></h4>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">123</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># hello</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">123</span><span class="token punctuation" style="color:#393A34">:</span><span class="token comment" style="color:#999988;font-style:italic"># hello</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">123</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># hello</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api">API<a href="https://prettier.io/blog/2024/11/26/3.4.0#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="stop-doc-mutation-in-prettierdocprintdoctostring-13315-by-fisker">Stop doc mutation in <code>prettier.doc.printDocToString</code> (<a href="https://github.com/prettier/prettier/pull/13315" target="_blank" rel="noopener noreferrer" class="">#13315</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#stop-doc-mutation-in-prettierdocprintdoctostring-13315-by-fisker" class="hash-link" aria-label="Direct link to stop-doc-mutation-in-prettierdocprintdoctostring-13315-by-fisker" title="Direct link to stop-doc-mutation-in-prettierdocprintdoctostring-13315-by-fisker" translate="no">​</a></h4>
<p>For performance reason, <code>prettier.doc.printDocToString</code> used to mutate <code>.parts</code> of the <a href="https://github.com/prettier/prettier/blob/main/commands.md#fill" target="_blank" rel="noopener noreferrer" class=""><code>fill</code></a> command during print. It was converted to a <a href="https://en.wikipedia.org/wiki/Pure_function" target="_blank" rel="noopener noreferrer" class="">pure function</a> to ensure output correctness.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="make-getpreferredquote-public-16567-by-sosukesuzuki">Make <code>getPreferredQuote</code> public (<a href="https://github.com/prettier/prettier/pull/16567" target="_blank" rel="noopener noreferrer" class="">#16567</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#make-getpreferredquote-public-16567-by-sosukesuzuki" class="hash-link" aria-label="Direct link to make-getpreferredquote-public-16567-by-sosukesuzuki" title="Direct link to make-getpreferredquote-public-16567-by-sosukesuzuki" translate="no">​</a></h4>
<p>This change makes the internal <code>getPreferredQuote</code> function a part of the public API.</p>
<p>In languages like JavaScript, both single quotes and double quotes can be used for string literals. Prettier determines the quote to enclose a string literal based on the number of quotes within the string and the value of the <a href="https://prettier.io/docs/options#quotes" target="_blank" rel="noopener noreferrer" class=""><code>singleQuote</code></a> option. For more details, please refer to the <a href="https://prettier.io/docs/rationale#strings" target="_blank" rel="noopener noreferrer" class="">Rationale</a> page.</p>
<p>The <code>getPreferredQuote</code> function determines the appropriate quote to enclose a string literal and has the following interface:</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Quote</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'"'</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"'"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">getPreferredQuote</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  text</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  preferredQuoteOrPreferSingleQuote</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Quote </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token builtin">boolean</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Quote</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>Here are some examples of how to use it:</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports operator" style="color:#393A34">*</span><span class="token imports"> </span><span class="token imports keyword module" style="color:#00009f">as</span><span class="token imports"> prettier</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"prettier"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">SINGLE_QUOTE</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">'</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">DOUBLE_QUOTE</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">"</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">util</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getPreferredQuote</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">Hello World Test</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">SINGLE_QUOTE</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// '</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">util</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getPreferredQuote</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">Hello World Test</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">DOUBLE_QUOTE</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// "</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">util</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getPreferredQuote</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">'Hello' "World" 'Test'</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">SINGLE_QUOTE</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// "</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">util</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getPreferredQuote</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">"Hello" 'World' "Test"</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">DOUBLE_QUOTE</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// '</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">util</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getPreferredQuote</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">"Hello" "World" "Test"</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">SINGLE_QUOTE</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// '</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">util</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getPreferredQuote</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">'Hello' 'World' 'Test'</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">DOUBLE_QUOTE</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// "</span><br></span></code></pre></div></div>
<p>Making this function public will benefit plugin developers. Since the function is relatively short, you can find more details in the <a href="https://github.com/prettier/prettier/blob/509a0cc10f12cbfa5304737965f99284449aca88/src/utils/get-preferred-quote.js" target="_blank" rel="noopener noreferrer" class="">implementation</a>.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-loading-esm-style-shared-config-file-in-nodejs-23-16857-by-sosukesuzuki">Fix loading ESM-style shared config file in Node.js 23 (<a href="https://github.com/prettier/prettier/pull/16857" target="_blank" rel="noopener noreferrer" class="">#16857</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#fix-loading-esm-style-shared-config-file-in-nodejs-23-16857-by-sosukesuzuki" class="hash-link" aria-label="Direct link to fix-loading-esm-style-shared-config-file-in-nodejs-23-16857-by-sosukesuzuki" title="Direct link to fix-loading-esm-style-shared-config-file-in-nodejs-23-16857-by-sosukesuzuki" translate="no">​</a></h4>
<p>In Prettier 3.3, attempting to load an ESM-style <a href="https://prettier.io/docs/sharing-configurations" target="_blank" rel="noopener noreferrer" class="">shared config file</a> in Node.js 23 resulted in the following warnings, preventing the options from being loaded:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[warn] Ignored unknown option { __esModule: true }.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[warn] Ignored unknown option { default: { trailingComma: "es5", tabWidth: 4, singleQuote: true } }.</span><br></span></code></pre></div></div>
<p>This issue was caused by a new module feature in Node.js 23, known as <a href="https://nodejs.org/api/modules.html#loading-ecmascript-modules-using-require" target="_blank" rel="noopener noreferrer" class=""><code>require(ESM)</code></a>. Prettier 3.4 resolves this problem, allowing the options to load correctly.</p>
<p>For more details, please see <a href="https://github.com/prettier/prettier/issues/16812" target="_blank" rel="noopener noreferrer" class="">https://github.com/prettier/prettier/issues/16812</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://prettier.io/blog/2024/11/26/3.4.0#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="ignore-files-in-the-jujutsu-directory-16684-by-marcusirgens">Ignore files in the Jujutsu directory (<a href="https://github.com/prettier/prettier/pull/16684" target="_blank" rel="noopener noreferrer" class="">#16684</a> by <a href="https://github.com/marcusirgens" target="_blank" rel="noopener noreferrer" class="">@marcusirgens</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#ignore-files-in-the-jujutsu-directory-16684-by-marcusirgens" class="hash-link" aria-label="Direct link to ignore-files-in-the-jujutsu-directory-16684-by-marcusirgens" title="Direct link to ignore-files-in-the-jujutsu-directory-16684-by-marcusirgens" translate="no">​</a></h4>
<p>The Jujutsu VCS uses the <code>.jj</code> directory, similarly to how Git uses <code>.git</code>.</p>
<p>This change adds <code>.jj</code> to the list of directories which are silently ignored by prettier.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="miscellaneous">Miscellaneous<a href="https://prettier.io/blog/2024/11/26/3.4.0#miscellaneous" class="hash-link" aria-label="Direct link to Miscellaneous" title="Direct link to Miscellaneous" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-cursoroffset-feature-sometimes-being-catastrophically-slow-15709-by-explodingcabbage">Fix <code>cursorOffset</code> feature sometimes being catastrophically slow (<a href="https://github.com/prettier/prettier/pull/15709" target="_blank" rel="noopener noreferrer" class="">#15709</a> by <a href="https://github.com/ExplodingCabbage" target="_blank" rel="noopener noreferrer" class="">@ExplodingCabbage</a>)<a href="https://prettier.io/blog/2024/11/26/3.4.0#fix-cursoroffset-feature-sometimes-being-catastrophically-slow-15709-by-explodingcabbage" class="hash-link" aria-label="Direct link to fix-cursoroffset-feature-sometimes-being-catastrophically-slow-15709-by-explodingcabbage" title="Direct link to fix-cursoroffset-feature-sometimes-being-catastrophically-slow-15709-by-explodingcabbage" translate="no">​</a></h4>
<p>Previously, Prettier's <code>cursorOffset</code> feature would be spectacularly slow in certain unfortunate circumstances (namely when the user's cursor was not contained within a leaf node of the AST, and the non-leaf node containing it was very large and being significantly reformatted by Prettier). As a consequence, if you used Prettier via an editor integration that used <code>cursorOffset</code> under the hood, your editor would sometimes inexplicably hang when you tried to format a file.</p>
<p>All examples of this phenomenon that we are aware of should now be fixed, but bug reports of any further pathological examples would be welcome.</p>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 3.3: New Flow features and a lot of bug fixes]]></title>
        <id>https://prettier.io/blog/2024/06/01/3.3.0</id>
        <link href="https://prettier.io/blog/2024/06/01/3.3.0"/>
        <updated>2024-06-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release includes support for new Flow features such as component and hook declarations. All of these features were implemented by the engineers on the Flow team, thank you.]]></summary>
        <content type="html"><![CDATA[<p>This release includes support for new Flow features such as component and hook declarations. All of these features were implemented by the engineers on the Flow team, thank you.</p>
<p>If you appreciate Prettier and would like to support our work, please consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on, such as <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>. Thank you for your continued support!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2024/06/01/3.3.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow">Flow<a href="https://prettier.io/blog/2024/06/01/3.3.0#flow" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="declare-namespace-printing-support-16066-by-samchou19815"><code>declare namespace</code> printing support (<a href="https://github.com/prettier/prettier/pull/16066" target="_blank" rel="noopener noreferrer" class="">#16066</a> by <a href="https://github.com/SamChou19815" target="_blank" rel="noopener noreferrer" class="">@SamChou19815</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#declare-namespace-printing-support-16066-by-samchou19815" class="hash-link" aria-label="Direct link to declare-namespace-printing-support-16066-by-samchou19815" title="Direct link to declare-namespace-printing-support-16066-by-samchou19815" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">declare namespace foo </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  declare </span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// does not parse</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">declare namespace foo </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  declare </span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="component-syntax-printing-support-16191-by-samchou19815">Component syntax printing support (<a href="https://github.com/prettier/prettier/pull/16191" target="_blank" rel="noopener noreferrer" class="">#16191</a> by <a href="https://github.com/SamChou19815" target="_blank" rel="noopener noreferrer" class="">@SamChou19815</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#component-syntax-printing-support-16191-by-samchou19815" class="hash-link" aria-label="Direct link to component-syntax-printing-support-16191-by-samchou19815" title="Direct link to component-syntax-printing-support-16191-by-samchou19815" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">component </span><span class="token function maybe-class-name" style="color:#d73a49">MyComponent</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">b</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> number</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> renders </span><span class="token maybe-class-name">SomeComponent</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">OtherComponent</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hook </span><span class="token function" style="color:#d73a49">useMyHook</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">useState</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// does not parse</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">component </span><span class="token function maybe-class-name" style="color:#d73a49">MyComponent</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">b</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> number</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> renders </span><span class="token maybe-class-name">SomeComponent</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">OtherComponent</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hook </span><span class="token function" style="color:#d73a49">useMyHook</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">useState</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-big-int-enums-16268-by-gkz">Support big int Enums (<a href="https://github.com/prettier/prettier/pull/16268" target="_blank" rel="noopener noreferrer" class="">#16268</a> by <a href="https://github.com/gkz" target="_blank" rel="noopener noreferrer" class="">@gkz</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#support-big-int-enums-16268-by-gkz" class="hash-link" aria-label="Direct link to support-big-int-enums-16268-by-gkz" title="Direct link to support-big-int-enums-16268-by-gkz" translate="no">​</a></h4>
<p>Adds support for big int <a href="https://flow.org/en/docs/enums/" target="_blank" rel="noopener noreferrer" class="">Flow Enums</a>.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">enum</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">E</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// error</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">enum</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">E</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-inexact-tuple-types-16271-by-gkz">Support inexact tuple types (<a href="https://github.com/prettier/prettier/pull/16271" target="_blank" rel="noopener noreferrer" class="">#16271</a> by <a href="https://github.com/gkz" target="_blank" rel="noopener noreferrer" class="">@gkz</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#support-inexact-tuple-types-16271-by-gkz" class="hash-link" aria-label="Direct link to support-inexact-tuple-types-16271-by-gkz" title="Direct link to support-inexact-tuple-types-16271-by-gkz" translate="no">​</a></h4>
<p>Adds support for Flow's inexact tuple types.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">number</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token spread operator" style="color:#393A34">...</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">number</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">number</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token spread operator" style="color:#393A34">...</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-implies-type-guard-variant-16272-by-gkz">Support 'implies' type guard variant (<a href="https://github.com/prettier/prettier/pull/16272" target="_blank" rel="noopener noreferrer" class="">#16272</a> by <a href="https://github.com/gkz" target="_blank" rel="noopener noreferrer" class="">@gkz</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#support-implies-type-guard-variant-16272-by-gkz" class="hash-link" aria-label="Direct link to support-implies-type-guard-variant-16272-by-gkz" title="Direct link to support-implies-type-guard-variant-16272-by-gkz" translate="no">​</a></h4>
<p>Adds support for Flow's <code>implies</code> type guard variant. Also updates the <code>flow-parser</code> dependency.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">declare </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter literal-property property" style="color:#36acaa">x</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> mixed</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> implies x is </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// error</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">declare </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter literal-property property" style="color:#36acaa">x</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> mixed</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> implies x is </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2024/06/01/3.3.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2024/06/01/3.3.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="unquote-keys-in-import-attributes-15888-by-sosukesuzuki">Unquote keys in import attributes (<a href="https://github.com/prettier/prettier/pull/15888" target="_blank" rel="noopener noreferrer" class="">#15888</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#unquote-keys-in-import-attributes-15888-by-sosukesuzuki" class="hash-link" aria-label="Direct link to unquote-keys-in-import-attributes-15888-by-sosukesuzuki" title="Direct link to unquote-keys-in-import-attributes-15888-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">json</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./mod.json"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string-property property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">json</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./mod.json"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string-property property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">json</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./mod.json"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-unstable-object-print-16058-by-fisker">Fix unstable object print (<a href="https://github.com/prettier/prettier/pull/16058" target="_blank" rel="noopener noreferrer" class="">#16058</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#fix-unstable-object-print-16058-by-fisker" class="hash-link" aria-label="Direct link to fix-unstable-object-print-16058-by-fisker" title="Direct link to fix-unstable-object-print-16058-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string-property property" style="color:#36acaa">"\a"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string-property property" style="color:#36acaa">"b"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2 (--quote-props consistent)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string-property property" style="color:#36acaa">"a"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string-property property" style="color:#36acaa">"b"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2 (--quote-props as-needed)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string-property property" style="color:#36acaa">"a"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">b</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">b</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="format-embedded-gql-in-template-literal-statements-16064-by-keithlayne">Format embedded GQL in template literal statements (<a href="https://github.com/prettier/prettier/pull/16064" target="_blank" rel="noopener noreferrer" class="">#16064</a> by <a href="https://github.com/keithlayne" target="_blank" rel="noopener noreferrer" class="">@keithlayne</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#format-embedded-gql-in-template-literal-statements-16064-by-keithlayne" class="hash-link" aria-label="Direct link to format-embedded-gql-in-template-literal-statements-16064-by-keithlayne" title="Direct link to format-embedded-gql-in-template-literal-statements-16064-by-keithlayne" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* GraphQL */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  query foo { id }</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* GraphQL */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  query foo { id }</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* GraphQL */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  query foo {</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    id</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-formatting-of-react-useimperativehandle-hook-16070-by-jaswanth-sriram-veturi">Improve formatting of React <code>useImperativeHandle</code> hook (<a href="https://github.com/prettier/prettier/pull/16070" target="_blank" rel="noopener noreferrer" class="">#16070</a> by <a href="https://github.com/Jaswanth-Sriram-Veturi" target="_blank" rel="noopener noreferrer" class="">@Jaswanth-Sriram-Veturi</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#improve-formatting-of-react-useimperativehandle-hook-16070-by-jaswanth-sriram-veturi" class="hash-link" aria-label="Direct link to improve-formatting-of-react-useimperativehandle-hook-16070-by-jaswanth-sriram-veturi" title="Direct link to improve-formatting-of-react-useimperativehandle-hook-16070-by-jaswanth-sriram-veturi" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">useImperativeHandle</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ref</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">/* Function body */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">useImperativeHandle</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ref</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">/* Function body */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">useImperativeHandle</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ref</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">/* Function body */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="allow-linebreaks-in-member-expressions-in-template-interpolations-16116-by-bakkot">Allow linebreaks in member expressions in template interpolations (<a href="https://github.com/prettier/prettier/pull/16116" target="_blank" rel="noopener noreferrer" class="">#16116</a> by <a href="https://github.com/bakkot" target="_blank" rel="noopener noreferrer" class="">@bakkot</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#allow-linebreaks-in-member-expressions-in-template-interpolations-16116-by-bakkot" class="hash-link" aria-label="Direct link to allow-linebreaks-in-member-expressions-in-template-interpolations-16116-by-bakkot" title="Direct link to allow-linebreaks-in-member-expressions-in-template-interpolations-16116-by-bakkot" translate="no">​</a></h4>
<p>When there is already a linebreak in a template interpolation, allow it to stay there even if it is a member expression. Note that (as of <a href="https://github.com/prettier/prettier/pull/15209" target="_blank" rel="noopener noreferrer" class="">#15209</a>) Prettier will not insert a linebreak inside an interpolation when one is not already present.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">template with </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">    very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">long</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">chain</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation"></span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">template with </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">long</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">chain</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">template with </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">  very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">very</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">long</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">chain</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation"></span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-dynamic-import-when-the-module-source-is-a-template-string-16267-by-fisker">Fix dynamic import when the module source is a template string (<a href="https://github.com/prettier/prettier/pull/16267" target="_blank" rel="noopener noreferrer" class="">#16267</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#fix-dynamic-import-when-the-module-source-is-a-template-string-16267-by-fisker" class="hash-link" aria-label="Direct link to fix-dynamic-import-when-the-module-source-is-a-template-string-16267-by-fisker" title="Direct link to fix-dynamic-import-when-the-module-source-is-a-template-string-16267-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> module </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">data:text/javascript,</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  console.log("RUN");</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> module </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">data:text/javascript,</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  console.log("RUN");</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> module </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">data:text/javascript,</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  console.log("RUN");</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2024/06/01/3.3.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-missing-parentheses-to-tsinfertype-16031-by-fisker">Add missing parentheses to <code>TSInferType</code> (<a href="https://github.com/prettier/prettier/pull/16031" target="_blank" rel="noopener noreferrer" class="">#16031</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#add-missing-parentheses-to-tsinfertype-16031-by-fisker" class="hash-link" aria-label="Direct link to add-missing-parentheses-to-tsinfertype-16031-by-fisker" title="Direct link to add-missing-parentheses-to-tsinfertype-16031-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Foo</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = T extends (infer U extends number) | </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> infer </span><span class="token constant" style="color:#36acaa">U</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">number</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  ? U</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  : never;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">type Foo</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = T extends infer U extends number | </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> infer </span><span class="token constant" style="color:#36acaa">U</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">number</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  ? U</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  : never;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">type Foo</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = T extends (infer U extends number) | </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> infer </span><span class="token constant" style="color:#36acaa">U</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">number</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  ? U</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  : never;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="throw-errors-for-duplicated-accessibility-modifiers-16040-by-fisker-auvred">Throw errors for duplicated accessibility modifiers (<a href="https://github.com/prettier/prettier/pull/16040" target="_blank" rel="noopener noreferrer" class="">#16040</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/auvred" target="_blank" rel="noopener noreferrer" class="">@auvred</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#throw-errors-for-duplicated-accessibility-modifiers-16040-by-fisker-auvred" class="hash-link" aria-label="Direct link to throw-errors-for-duplicated-accessibility-modifiers-16040-by-fisker-auvred" title="Direct link to throw-errors-for-duplicated-accessibility-modifiers-16040-by-fisker-auvred" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Accessibility</span><span class="token plain"> modifier already seen</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">2</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">   </span><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">public</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">          </span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="respect---no-semi-for-readonly-class-field-16133-by-sxzz">Respect <code>--no-semi</code> for readonly class field (<a href="https://github.com/prettier/prettier/pull/16133" target="_blank" rel="noopener noreferrer" class="">#16133</a> by <a href="https://github.com/sxzz" target="_blank" rel="noopener noreferrer" class="">@sxzz</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#respect---no-semi-for-readonly-class-field-16133-by-sxzz" class="hash-link" aria-label="Direct link to respect---no-semi-for-readonly-class-field-16133-by-sxzz" title="Direct link to respect---no-semi-for-readonly-class-field-16133-by-sxzz" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  field</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">expr</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  field</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">expr</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  field</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">expr</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-necessary-parentheses-to-yield-expressions-16194-by-kirkwaiblinger">Add necessary parentheses to yield expressions (<a href="https://github.com/prettier/prettier/pull/16194" target="_blank" rel="noopener noreferrer" class="">#16194</a> by <a href="https://github.com/kirkwaiblinger" target="_blank" rel="noopener noreferrer" class="">@kirkwaiblinger</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#add-necessary-parentheses-to-yield-expressions-16194-by-kirkwaiblinger" class="hash-link" aria-label="Direct link to add-necessary-parentheses-to-yield-expressions-16194-by-kirkwaiblinger" title="Direct link to add-necessary-parentheses-to-yield-expressions-16194-by-kirkwaiblinger" translate="no">​</a></h4>
<p>Add parentheses around yield expressions if parent is an angle-bracket type assertion.</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">g</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> y </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">T</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">yield</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">g</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> y </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">T</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token keyword" style="color:#00009f">yield</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">g</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> y </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">T</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">yield</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown">Markdown<a href="https://prettier.io/blog/2024/06/01/3.3.0#markdown" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-wrapping-for-code-block-in-markdown-and-jsx-in-mdx-15993-by-seiyab">Improve wrapping for code block in markdown and jsx in mdx (<a href="https://github.com/prettier/prettier/pull/15993" target="_blank" rel="noopener noreferrer" class="">#15993</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#improve-wrapping-for-code-block-in-markdown-and-jsx-in-mdx-15993-by-seiyab" class="hash-link" aria-label="Direct link to improve-wrapping-for-code-block-in-markdown-and-jsx-in-mdx-15993-by-seiyab" title="Direct link to improve-wrapping-for-code-block-in-markdown-and-jsx-in-mdx-15993-by-seiyab" translate="no">​</a></h4>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">css</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-css">img {</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">  filter: drop-shadow(2px 2px 0 hsl(300deg 100% 50%)) drop-shadow(</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">      -2px -2px 0 hsl(210deg 100% 50%)</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">)</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">    drop-shadow(2px 2px 0 hsl(120deg 100% 50%)) drop-shadow(</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">      -2px -2px 0 hsl(30deg 100% 50%)</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">    );</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">}</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">css</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-css">img {</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">  filter: drop-shadow(2px 2px 0 hsl(300deg 100% 50%)) drop-shadow(</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">      -2px -2px 0 hsl(210deg 100% 50%)</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">    )</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">    drop-shadow(2px 2px 0 hsl(120deg 100% 50%)) drop-shadow(</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">      -2px -2px 0 hsl(30deg 100% 50%)</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">    );</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">}</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">css</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-css">img {</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">  filter: drop-shadow(2px 2px 0 hsl(300deg 100% 50%))</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">    drop-shadow(-2px -2px 0 hsl(210deg 100% 50%))</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">    drop-shadow(2px 2px 0 hsl(120deg 100% 50%))</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">    drop-shadow(-2px -2px 0 hsl(30deg 100% 50%));</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-css">}</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><br></span></code></pre></div></div>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ExternalLink</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">href</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">http://example.com</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Prettier</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ExternalLink</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"> is an opinionated-code-formatter-that-support-many-languages-and-integrate-with-most-editors</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ExternalLink</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">href</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">http://example.com</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Prettier</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ExternalLink</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"> is an opinionated-code-formatter-that-support-many-languages-and-integrate-with-most-editors</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ExternalLink</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">href</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">http://example.com</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Prettier</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ExternalLink</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"> is an</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">opinionated-code-formatter-that-support-many-languages-and-integrate-with-most-editors</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-newline-between-markdown-footnote-definitions-16063-by-atema">Add newline between markdown footnote definitions (<a href="https://github.com/prettier/prettier/pull/16063" target="_blank" rel="noopener noreferrer" class="">#16063</a> by <a href="https://github.com/Atema" target="_blank" rel="noopener noreferrer" class="">@Atema</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#add-newline-between-markdown-footnote-definitions-16063-by-atema" class="hash-link" aria-label="Direct link to add-newline-between-markdown-footnote-definitions-16063-by-atema" title="Direct link to add-newline-between-markdown-footnote-definitions-16063-by-atema" translate="no">​</a></h4>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url-reference url punctuation" style="color:#393A34">[</span><span class="token url-reference url variable" style="color:#36acaa">^a</span><span class="token url-reference url punctuation" style="color:#393A34">]</span><span class="token url-reference url punctuation" style="color:#393A34">:</span><span class="token url-reference url" style="color:#36acaa"> Footnote</span><span class="token plain"> A</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url-reference url punctuation" style="color:#393A34">[</span><span class="token url-reference url variable" style="color:#36acaa">^b</span><span class="token url-reference url punctuation" style="color:#393A34">]</span><span class="token url-reference url punctuation" style="color:#393A34">:</span><span class="token url-reference url" style="color:#36acaa"> Footnote</span><span class="token plain"> B</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url-reference url punctuation" style="color:#393A34">[</span><span class="token url-reference url variable" style="color:#36acaa">^a</span><span class="token url-reference url punctuation" style="color:#393A34">]</span><span class="token url-reference url punctuation" style="color:#393A34">:</span><span class="token url-reference url" style="color:#36acaa"> Footnote</span><span class="token plain"> A</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url-reference url punctuation" style="color:#393A34">[</span><span class="token url-reference url variable" style="color:#36acaa">^b</span><span class="token url-reference url punctuation" style="color:#393A34">]</span><span class="token url-reference url punctuation" style="color:#393A34">:</span><span class="token url-reference url" style="color:#36acaa"> Footnote</span><span class="token plain"> B</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url-reference url punctuation" style="color:#393A34">[</span><span class="token url-reference url variable" style="color:#36acaa">^a</span><span class="token url-reference url punctuation" style="color:#393A34">]</span><span class="token url-reference url punctuation" style="color:#393A34">:</span><span class="token url-reference url" style="color:#36acaa"> Footnote</span><span class="token plain"> A</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url-reference url punctuation" style="color:#393A34">[</span><span class="token url-reference url variable" style="color:#36acaa">^b</span><span class="token url-reference url punctuation" style="color:#393A34">]</span><span class="token url-reference url punctuation" style="color:#393A34">:</span><span class="token url-reference url" style="color:#36acaa"> Footnote</span><span class="token plain"> B</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-wrapping-for-markdown--mdx-16158-by-seiyab">Improve wrapping for markdown / mdx (<a href="https://github.com/prettier/prettier/pull/16158" target="_blank" rel="noopener noreferrer" class="">#16158</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#improve-wrapping-for-markdown--mdx-16158-by-seiyab" class="hash-link" aria-label="Direct link to improve-wrapping-for-markdown--mdx-16158-by-seiyab" title="Direct link to improve-wrapping-for-markdown--mdx-16158-by-seiyab" translate="no">​</a></h4>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"proseWrap"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"always"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">\</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">\</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">word very-very-very-very-very-very-very-very-very-very-long-word very-very-very-very-very-very-very-very-very-very-long-word</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">\</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">word very-very-very-very-very-very-very-very-very-very-long-word</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">very-very-very-very-very-very-very-very-very-very-long-word</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api">API<a href="https://prettier.io/blog/2024/06/01/3.3.0#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-support-for-packageyaml-config-16157-by-danielbayley">Add support for <code>package.yaml</code> config (<a href="https://github.com/prettier/prettier/pull/16157" target="_blank" rel="noopener noreferrer" class="">#16157</a> by <a href="https://github.com/danielbayley" target="_blank" rel="noopener noreferrer" class="">@danielbayley</a>)<a href="https://prettier.io/blog/2024/06/01/3.3.0#add-support-for-packageyaml-config-16157-by-danielbayley" class="hash-link" aria-label="Direct link to add-support-for-packageyaml-config-16157-by-danielbayley" title="Direct link to add-support-for-packageyaml-config-16157-by-danielbayley" translate="no">​</a></h4>
<p>Enable support for reading <code>prettier</code> configuration from <a href="https://github.com/pnpm/pnpm/pull/1799" target="_blank" rel="noopener noreferrer" class=""><code>package.yaml</code></a>.</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># package.yaml</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">prettier</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">semi</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">false</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">singleQuote</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 3.2: Support JSONC and Angular’s ICU expression]]></title>
        <id>https://prettier.io/blog/2024/01/12/3.2.0</id>
        <link href="https://prettier.io/blog/2024/01/12/3.2.0"/>
        <updated>2024-01-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release includes new features such as adding a JSONC parser, adding Angular’s ICU expressions, and many bug fixes.]]></summary>
        <content type="html"><![CDATA[<p>This release includes new features such as adding a JSONC parser, adding Angular’s ICU expressions, and many bug fixes.</p>
<p>We are still seeking feedback for the <code>--experimental-ternaries</code> option released in Prettier 3.1. Please read <a href="https://prettier.io/blog/2023/11/13/curious-ternaries" target="_blank" rel="noopener noreferrer" class="">A curious case of the ternaries</a> and respond via the Google Forms link provided.</p>
<p>Additionally, we recommend reading <a href="https://prettier.io/blog/2023/11/30/cli-deep-dive" target="_blank" rel="noopener noreferrer" class="">Prettier's CLI: A Performance Deep Dive</a> by <a href="https://github.com/fabiospampinato" target="_blank" rel="noopener noreferrer" class="">Fabio Spampinato</a>. This faster CLI is slated to be released as version 4.0.</p>
<p>If you appreciate Prettier and would like to support our work, please consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on, such as <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>. Thank you for your continued support!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2024/01/12/3.2.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="json">JSON<a href="https://prettier.io/blog/2024/01/12/3.2.0#json" class="hash-link" aria-label="Direct link to JSON" title="Direct link to JSON" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-jsonc-parser-added-15831-by-fisker">New <code>jsonc</code> parser added (<a href="https://github.com/prettier/prettier/pull/15831" target="_blank" rel="noopener noreferrer" class="">#15831</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#new-jsonc-parser-added-15831-by-fisker" class="hash-link" aria-label="Direct link to new-jsonc-parser-added-15831-by-fisker" title="Direct link to new-jsonc-parser-added-15831-by-fisker" translate="no">​</a></h4>
<p>Previously, we infer the parser of <code>.jsonc</code> files to be <code>json</code>, but if we want keep the trailing comma, we'll have to use a hacky workaround config <code>{parser: "json5", quoteProps: "preserve", singleQuote: false}</code>.</p>
<p>The new added <code>jsonc</code> parser:</p>
<ul>
<li class="">Always quote the object keys.</li>
<li class="">Wrap strings with double quotes.</li>
<li class="">Of course, respect the <a href="https://prettier.io/docs/options#trailing-commas" target="_blank" rel="noopener noreferrer" class=""><code>trailingComma</code></a> option.</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular">Angular<a href="https://prettier.io/blog/2024/01/12/3.2.0#angular" class="hash-link" aria-label="Direct link to Angular" title="Direct link to Angular" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-formatting-for-angular-icu-expression-15777-by-sosukesuzuki">Support formatting for Angular ICU expression (<a href="https://github.com/prettier/prettier/pull/15777" target="_blank" rel="noopener noreferrer" class="">#15777</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#support-formatting-for-angular-icu-expression-15777-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-formatting-for-angular-icu-expression-15777-by-sosukesuzuki" title="Direct link to support-formatting-for-angular-icu-expression-15777-by-sosukesuzuki" translate="no">​</a></h4>
<p>Support two kinds of Angular ICU expressions: <a href="https://angular.dev/guide/i18n/translation-files#translate-plurals" target="_blank" rel="noopener noreferrer" class=""><code>plural</code></a> and <a href="https://angular.dev/guide/i18n/translation-files#translate-alternate-expressions" target="_blank" rel="noopener noreferrer" class=""><code>select</code></a>.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">i18n</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Updated:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {minutes, plural,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    =0 {just now}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    =1 {one minute ago}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    other {{{minutes}} minutes ago}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">i18n</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  The author is {gender, select, male {male} female {female} other {other}}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2024/01/12/3.2.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2024/01/12/3.2.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="avoid-introducing-linebreaks-in-template-interpolations-15209-by-bakkot">Avoid introducing linebreaks in template interpolations (<a href="https://github.com/prettier/prettier/pull/15209" target="_blank" rel="noopener noreferrer" class="">#15209</a> by <a href="https://github.com/bakkot" target="_blank" rel="noopener noreferrer" class="">@bakkot</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#avoid-introducing-linebreaks-in-template-interpolations-15209-by-bakkot" class="hash-link" aria-label="Direct link to avoid-introducing-linebreaks-in-template-interpolations-15209-by-bakkot" title="Direct link to avoid-introducing-linebreaks-in-template-interpolations-15209-by-bakkot" translate="no">​</a></h4>
<p>In a template string like</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">this is a long message which contains an interpolation: </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation function" style="color:#d73a49">format</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation">data</span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c"> &lt;- like this</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>avoid adding a linebreak when formatting the expression unless one is already present or it's unavoidable due to e.g. a nested function. Previously a linebreak could be introduced whenever some interpolation in the template was sufficiently "not simple":</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">this is a long message which contains an interpolation: </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation function" style="color:#d73a49">format</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">  data</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation"></span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c"> &lt;- like this</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>Now it will instead be left alone.</p>
<p>If a linebreak is already present within the <code>${...}</code>, format as normal.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-non-idempotent-formatting-of-method-chain-with-empty-line-15522-by-seiyab">Fix non-idempotent formatting of method chain with empty line (<a href="https://github.com/prettier/prettier/pull/15522" target="_blank" rel="noopener noreferrer" class="">#15522</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#fix-non-idempotent-formatting-of-method-chain-with-empty-line-15522-by-seiyab" class="hash-link" aria-label="Direct link to fix-non-idempotent-formatting-of-method-chain-with-empty-line-15522-by-seiyab" title="Direct link to fix-non-idempotent-formatting-of-method-chain-with-empty-line-15522-by-seiyab" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token maybe-class-name">Foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1 (first format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token maybe-class-name">Foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1 (second format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token maybe-class-name">Foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token maybe-class-name">Foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-of-ternary-in-function-call-15677-by-fisker">Fix formatting of ternary in function call (<a href="https://github.com/prettier/prettier/pull/15677" target="_blank" rel="noopener noreferrer" class="">#15677</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#fix-formatting-of-ternary-in-function-call-15677-by-fisker" class="hash-link" aria-label="Direct link to fix-formatting-of-ternary-in-function-call-15677-by-fisker" title="Direct link to fix-formatting-of-ternary-in-function-call-15677-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">stopDirectory </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">useCache</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> memoizedFindProjectRoot</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> findProjectRootWithoutCache</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">dirname</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">filePath</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">stopDirectory </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">useCache</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> memoizedFindProjectRoot</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> findProjectRootWithoutCache</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">dirname</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">filePath</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">stopDirectory </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  useCache </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> memoizedFindProjectRoot </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> findProjectRootWithoutCache</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">dirname</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">path</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">filePath</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-inconsistencies-for-optional-chaining-15806-by-fisker">Fix inconsistencies for optional-chaining (<a href="https://github.com/prettier/prettier/pull/15806" target="_blank" rel="noopener noreferrer" class="">#15806</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#fix-inconsistencies-for-optional-chaining-15806-by-fisker" class="hash-link" aria-label="Direct link to fix-inconsistencies-for-optional-chaining-15806-by-fisker" title="Direct link to fix-inconsistencies-for-optional-chaining-15806-by-fisker" translate="no">​</a></h4>
<p>Only happens when using <code>typescript</code>, <code>meriyah</code> or other ESTree parsers except <code>babel</code>.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">someFunctionName</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">isEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">isEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">theValue </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Object</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">entries</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">someLongObjectName</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">filter</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">listingId</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> someListToCompareToHere</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">includes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">listingId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">theValue </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Object</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">entries</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">someLongObjectName</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">filter</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">listingId</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> someListToCompareToHere</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">includes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">listingId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">someFunctionName</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">isEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    b</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">isEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">theValue </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Object</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">entries</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">someLongObjectName</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">filter</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">listingId</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  someListToCompareToHere</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">includes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">listingId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">theValue </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Object</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">entries</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">someLongObjectName</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">filter</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">listingId</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> someListToCompareToHere</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">includes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">listingId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">someFunctionName</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">isEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    b</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">isEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    b</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">t</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> _</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> t</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">theValue </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Object</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">entries</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">someLongObjectName</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">filter</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">listingId</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  someListToCompareToHere</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">includes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">listingId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">theValue </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Object</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">entries</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">someLongObjectName</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">filter</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter">listingId</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  someListToCompareToHere</span><span class="token operator" style="color:#393A34">?.</span><span class="token method function property-access" style="color:#d73a49">includes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">listingId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-comments-in-if-15826-by-fisker">Fix comments in <code>if</code> (<a href="https://github.com/prettier/prettier/pull/15826" target="_blank" rel="noopener noreferrer" class="">#15826</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#fix-comments-in-if-15826-by-fisker" class="hash-link" aria-label="Direct link to fix-comments-in-if-15826-by-fisker" title="Direct link to fix-comments-in-if-15826-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> i</span><span class="token operator" style="color:#393A34">--</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment 1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">continue</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment 2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">Error</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Comment</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"comment 2"</span><span class="token plain"> was not printed</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token property-access maybe-class-name">Please</span><span class="token plain"> report </span><span class="token keyword" style="color:#00009f">this</span><span class="token plain"> error</span><span class="token operator" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> i</span><span class="token operator" style="color:#393A34">--</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment 1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">continue</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment 2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2024/01/12/3.2.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-conditional-type-alias-layout-15811-by-seiyab">Improve conditional type alias layout (<a href="https://github.com/prettier/prettier/pull/15811" target="_blank" rel="noopener noreferrer" class="">#15811</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#improve-conditional-type-alias-layout-15811-by-seiyab" class="hash-link" aria-label="Direct link to improve-conditional-type-alias-layout-15811-by-seiyab" title="Direct link to improve-conditional-type-alias-layout-15811-by-seiyab" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">FallbackFlags</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">F</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> Flags </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">undefined</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Equals</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">NonNullableFlag</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">F</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"flags"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> Dict</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">any</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> NonNullableFlag</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">F</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"flags"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">FallbackFlags</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">F</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> Flags </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">undefined</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> Equals</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  NonNullableFlag</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">F</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"flags"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> Dict</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">any</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> NonNullableFlag</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">F</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"flags"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">FallbackFlags</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">F</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> Flags </span><span class="token class-name operator" style="color:#393A34">|</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">undefined</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Equals</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">NonNullableFlag</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">F</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"flags"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> Dict</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">any</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> NonNullableFlag</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">F</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"flags"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2024/01/12/3.2.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-of-prettier-ignored-unclosed-elements-15748-by-fisker">Fix formatting of prettier-ignored unclosed elements (<a href="https://github.com/prettier/prettier/pull/15748" target="_blank" rel="noopener noreferrer" class="">#15748</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#fix-formatting-of-prettier-ignored-unclosed-elements-15748-by-fisker" class="hash-link" aria-label="Direct link to fix-formatting-of-prettier-ignored-unclosed-elements-15748-by-fisker" title="Direct link to fix-formatting-of-prettier-ignored-unclosed-elements-15748-by-fisker" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- prettier-ignore --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h1</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Hello </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">world!</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- prettier-ignore --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h1</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- prettier-ignore --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h1</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Hello </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">span</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">world!</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular-1">Angular<a href="https://prettier.io/blog/2024/01/12/3.2.0#angular-1" class="hash-link" aria-label="Direct link to Angular" title="Direct link to Angular" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-prettier-ignored-angular-control-flow-block-15827-by-fisker">Fix <code>prettier-ignore</code>d angular control flow block (<a href="https://github.com/prettier/prettier/pull/15827" target="_blank" rel="noopener noreferrer" class="">#15827</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#fix-prettier-ignored-angular-control-flow-block-15827-by-fisker" class="hash-link" aria-label="Direct link to fix-prettier-ignored-angular-control-flow-block-15827-by-fisker" title="Direct link to fix-prettier-ignored-angular-control-flow-block-15827-by-fisker" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- prettier-ignore --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@if (condition) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">} @else {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Other</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- prettier-ignore --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@if (condition) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">} @else {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Other</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- prettier-ignore --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@if (condition) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@else {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Other</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="avoid-adding-colon-for-track-in-3rd-expression-of-for-blocks-15887-by-sosukesuzuki">Avoid adding colon for <code>track</code> in 3rd expression of <code>for</code> blocks (<a href="https://github.com/prettier/prettier/pull/15887" target="_blank" rel="noopener noreferrer" class="">#15887</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#avoid-adding-colon-for-track-in-3rd-expression-of-for-blocks-15887-by-sosukesuzuki" class="hash-link" aria-label="Direct link to avoid-adding-colon-for-track-in-3rd-expression-of-for-blocks-15887-by-sosukesuzuki" title="Direct link to avoid-adding-colon-for-track-in-3rd-expression-of-for-blocks-15887-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@for (item of items; let i = $index; track block) {}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@for (item of items; let i = $index; track: block) {}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@for (item of items; let i = $index; track block) {}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ember--handlebars">Ember / Handlebars<a href="https://prettier.io/blog/2024/01/12/3.2.0#ember--handlebars" class="hash-link" aria-label="Direct link to Ember / Handlebars" title="Direct link to Ember / Handlebars" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-path-literal-segments-15605-by-maxpowa">Preserve path literal segments (<a href="https://github.com/prettier/prettier/pull/15605" target="_blank" rel="noopener noreferrer" class="">#15605</a> by <a href="https://github.com/maxpowa" target="_blank" rel="noopener noreferrer" class="">@maxpowa</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#preserve-path-literal-segments-15605-by-maxpowa" class="hash-link" aria-label="Direct link to preserve-path-literal-segments-15605-by-maxpowa" title="Direct link to preserve-path-literal-segments-15605-by-maxpowa" translate="no">​</a></h4>
<p>Fixes scenarios where an input handlebars file containing literal segments would be reformatted to unwrap the literal segments, causing syntax errors in the resulting output.</p>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">!</span><span class="token variable" style="color:#36acaa">--</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Input</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">--</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">input</span><span class="token punctuation" style="color:#393A34">.</span><span class="token brackets punctuation" style="color:#393A34">[</span><span class="token brackets variable" style="color:#36acaa">funky&lt;api!response</span><span class="token brackets punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">input</span><span class="token punctuation" style="color:#393A34">.</span><span class="token brackets punctuation" style="color:#393A34">[</span><span class="token brackets variable" style="color:#36acaa">this one has spaces</span><span class="token brackets punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">input</span><span class="token punctuation" style="color:#393A34">.</span><span class="token brackets punctuation" style="color:#393A34">[</span><span class="token brackets variable" style="color:#36acaa">anotherone</span><span class="token brackets punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">!</span><span class="token variable" style="color:#36acaa">--</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Prettier</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3.1</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">--</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">input</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">funky</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">api</span><span class="token punctuation" style="color:#393A34">!</span><span class="token variable" style="color:#36acaa">response</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">input</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">this</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">one</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">has</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">spaces</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">input</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">anotherone</span><span class="token punctuation" style="color:#393A34">.</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">!</span><span class="token variable" style="color:#36acaa">--</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Prettier</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3.2</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">--</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">input</span><span class="token punctuation" style="color:#393A34">.</span><span class="token brackets punctuation" style="color:#393A34">[</span><span class="token brackets variable" style="color:#36acaa">funky&lt;api!response</span><span class="token brackets punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">input</span><span class="token punctuation" style="color:#393A34">.</span><span class="token brackets punctuation" style="color:#393A34">[</span><span class="token brackets variable" style="color:#36acaa">this one has spaces</span><span class="token brackets punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">input</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">anotherone</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token delimiter punctuation" style="color:#393A34">}}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="graphql">GraphQL<a href="https://prettier.io/blog/2024/01/12/3.2.0#graphql" class="hash-link" aria-label="Direct link to GraphQL" title="Direct link to GraphQL" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-graphql-union-types-formatting-15870-by-architgajjar">Improve GraphQL union types formatting (<a href="https://github.com/prettier/prettier/pull/15870" target="_blank" rel="noopener noreferrer" class="">#15870</a> by <a href="https://github.com/ArchitGajjar" target="_blank" rel="noopener noreferrer" class="">@ArchitGajjar</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#improve-graphql-union-types-formatting-15870-by-architgajjar" class="hash-link" aria-label="Direct link to improve-graphql-union-types-formatting-15870-by-architgajjar" title="Direct link to improve-graphql-union-types-formatting-15870-by-architgajjar" translate="no">​</a></h4>
<div class="language-gql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-gql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Input</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">union SearchResult = Conference| Festival | Concert | Venue | Conference| Festival | Concert | Venue</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">union SearchResult =</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Conference</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Festival</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Concert</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Venue</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Conference</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Festival</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Concert</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Venue</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">union SearchResult =</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Conference</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Festival</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Concert</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Venue</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Conference</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Festival</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Concert</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  | Venue</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api">API<a href="https://prettier.io/blog/2024/01/12/3.2.0#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-absolute-path-as-plugin-in-config-file-15666-by-fisker">Support absolute path as plugin in config file (<a href="https://github.com/prettier/prettier/pull/15666" target="_blank" rel="noopener noreferrer" class="">#15666</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#support-absolute-path-as-plugin-in-config-file-15666-by-fisker" class="hash-link" aria-label="Direct link to support-absolute-path-as-plugin-in-config-file-15666-by-fisker" title="Direct link to support-absolute-path-as-plugin-in-config-file-15666-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// prettier.config.cjs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">module</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">exports</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// posix style</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"/path/to/plugin.js"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// Windows style</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"D:\\\\path\\to\\plugin.js"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// Use `require.resolve`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    require</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolve</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"my-awesome-prettier-plugin"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-getfileinfo-and-getsupportinfo-type-definitions-15854-by-auvred">Fix <code>getFileInfo</code> and <code>getSupportInfo</code> type definitions (<a href="https://github.com/prettier/prettier/pull/15854" target="_blank" rel="noopener noreferrer" class="">#15854</a> by <a href="https://github.com/auvred" target="_blank" rel="noopener noreferrer" class="">@auvred</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#fix-getfileinfo-and-getsupportinfo-type-definitions-15854-by-auvred" class="hash-link" aria-label="Direct link to fix-getfileinfo-and-getsupportinfo-type-definitions-15854-by-auvred" title="Direct link to fix-getfileinfo-and-getsupportinfo-type-definitions-15854-by-auvred" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> plugin</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Plugin </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">getFileInfo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./file.ext"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">plugin</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">getSupportInfo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">plugin</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> showDeprecated</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="miscellaneous">Miscellaneous<a href="https://prettier.io/blog/2024/01/12/3.2.0#miscellaneous" class="hash-link" aria-label="Direct link to Miscellaneous" title="Direct link to Miscellaneous" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-false-claim-in-docs-that-cursoroffset-is-incompatible-with-rangestartrangeend-15750-by-explodingcabbage">Fix false claim in docs that cursorOffset is incompatible with rangeStart/rangeEnd (<a href="https://github.com/prettier/prettier/pull/15750" target="_blank" rel="noopener noreferrer" class="">#15750</a> by <a href="https://github.com/ExplodingCabbage" target="_blank" rel="noopener noreferrer" class="">@ExplodingCabbage</a>)<a href="https://prettier.io/blog/2024/01/12/3.2.0#fix-false-claim-in-docs-that-cursoroffset-is-incompatible-with-rangestartrangeend-15750-by-explodingcabbage" class="hash-link" aria-label="Direct link to fix-false-claim-in-docs-that-cursoroffset-is-incompatible-with-rangestartrangeend-15750-by-explodingcabbage" title="Direct link to fix-false-claim-in-docs-that-cursoroffset-is-incompatible-with-rangestartrangeend-15750-by-explodingcabbage" translate="no">​</a></h4>
<p>The cursorOffset option has in fact been compatible with rangeStart/rangeEnd for over 5 years, thanks to work by @ds300. However, Prettier's documentation (including the CLI <code>--help</code> text) continued to claim otherwise, falsely. The documentation is now fixed.</p>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier's CLI: A Performance Deep Dive]]></title>
        <id>https://prettier.io/blog/2023/11/30/cli-deep-dive</id>
        <link href="https://prettier.io/blog/2023/11/30/cli-deep-dive"/>
        <updated>2023-11-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Hey, I'm Fabio and I've been contracted by the Prettier team to speed up Prettier's command line interface (CLI). In this post we'll take a look at the optimizations I've discovered, the process that lead to finding them, some exciting numbers comparing the current CLI with the new one, and some guesses about what could be optimized next.]]></summary>
        <content type="html"><![CDATA[<p>Hey, I'm <a href="https://twitter.com/fabiospampinato" target="_blank" rel="noopener noreferrer" class="">Fabio</a> and I've been contracted by the Prettier team to speed up Prettier's command line interface (CLI). In this post we'll take a look at the optimizations I've discovered, the process that lead to finding them, some exciting numbers comparing the current CLI with the new one, and some guesses about what could be optimized next.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="installation">Installation<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation" translate="no">​</a></h2>
<p>The new work-in-progress CLI for Prettier has just been <a href="https://github.com/prettier/prettier-cli" target="_blank" rel="noopener noreferrer" class="">released</a>, and you can install it now:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">npm</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> prettier@next</span><br></span></code></pre></div></div>
<p>It should be largely backwards compatible:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier </span><span class="token builtin class-name">.</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--check</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># Like before, but faster</span><br></span></code></pre></div></div>
<p>If you find any issues you can temporarily use the old CLI using an environment variable:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token assign-left variable" style="color:#36acaa">PRETTIER_LEGACY_CLI</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> prettier </span><span class="token builtin class-name">.</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--check</span><br></span></code></pre></div></div>
<p>You can also try it via <code>npx</code>, though <code>npx</code> itself is pretty slow:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">npx prettier@next </span><span class="token builtin class-name">.</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--check</span><br></span></code></pre></div></div>
<p>The goal is to make it close to ~100% backwards compatible, and then just ship it in a future stable release of the <code>prettier</code> package, replacing the current CLI.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" src="https://prettier.io/assets/images/prettier-architecture-ee2368cbb56a77be370bb67e35625702.png" width="2374" height="677" class="img_ev3q"></p>
<p>Prettier's CLI works roughly like in the diagram above:</p>
<ol>
<li class="">There's some action we want to execute on files, for example checking if they are formatted properly.</li>
<li class="">We need to actually find all the files to execute this action on.</li>
<li class="">We need to resolve <code>.gitignore</code> and <code>.prettierignore</code> files, to figure out if some of those files are to be ignored.</li>
<li class="">We need to resolve <code>.editorconfig</code> files, for <a href="https://editorconfig.org/" target="_blank" rel="noopener noreferrer" class="">EditorConfig</a>-specific formatting configurations for those files.</li>
<li class="">We need to resolve <code>.prettierrc</code> files, and <a href="https://prettier.io/docs/configuration" target="_blank" rel="noopener noreferrer" class="">~10 more</a>, for Prettier-specific formatting configurations for those files.</li>
<li class="">We need to check if each of the files matches its formatting configuration.</li>
<li class="">Finally we need to output some kind of result to the terminal.</li>
</ol>
<p>After this high-level look at the CLI's architecture I think there are mainly 3 observations to make:</p>
<ol>
<li class="">The amount of work to do scales with the number of target files, but most files are completely unchanged between runs of the CLI, because for example a commit in a large-enough repository generally only touches a fraction of the files, so if we could only remember work done in the previous run most of the work on the current run could be skipped.</li>
<li class="">There are potentially a huge number of configuration files to resolve, since our repository could have thousands of folders and each folder could have some configuration files in it, moreover if for example we find 10 different <code>.editorconfig</code> files, each of them could define different settings for files matching specific <a href="https://en.wikipedia.org/wiki/Glob_(programming)" target="_blank" rel="noopener noreferrer" class="">globs</a>, so they all need to be combined together in a file-specific way, for each target file. But, in almost every case a repository is only going to contain just one or a handful of <code>.editorconfig</code> files, even if the repo has thousands of folders, so somehow this shouldn't be <em>that</em> expensive.</li>
<li class="">This isn't a particularly insightful observation, but if everything a program is doing is necessary, and everything done is done efficiently, then the program itself must execute efficiently as a result, so we are generally just going to try to skip unnecessary work as much as possible, and what we can't skip we'll try to make efficient.</li>
</ol>
<p>From these observations I started writing a new CLI for Prettier from scratch, as it's often easier to rewrite things with performance in mind from the start than to patch them to be performant.</p>
<p>I'll use <a href="https://github.com/babel/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>'s monorepo to take measurements throughout this post, as it provides a good sort of benchmark, and it should give you a sense of what the improvement will be in practice for a real, fairly large, monorepo.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="finding-files-fast">Finding files fast<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#finding-files-fast" class="hash-link" aria-label="Direct link to Finding files fast" title="Direct link to Finding files fast" translate="no">​</a></h2>
<p>First of all we need to find our target files. Prettier's current CLI uses <a href="https://github.com/mrmlnc/fast-glob" target="_blank" rel="noopener noreferrer" class=""><code>fast-glob</code></a> for that, and the code for using it may look like this:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">fastGlob</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"fast-glob"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> files </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fastGlob</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"packages/**/*.{js,cjs,mjs}"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">ignore</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"**/.git"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"**/.sl"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"**/.svn"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"**/.hg"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"**/node_modules"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">absolute</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">dot</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">followSymbolicLinks</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">onlyFiles</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">unique</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>If we run that on Babel's monorepo we'll see that it takes some ~220ms to find ~17k files matching our globs, out of ~30k total files found, which seems reasonably good, considering that Babel's monorepo contains over 13k folders also.</p>
<p>With a quick profiling we can spot that a significant amount of time is being spent checking if the found files match any of our "ignore" globs, which seem internally converted to regexes and matched one by one. So I tried merging the globs into a single one: <code>"**/{.git,.sl,.svn,.hg,node_modules}"</code>, but it seems to get internally split up again for some reason, so that didn't change anything.</p>
<p>By commenting our ignore globs out entirely we can find pretty much the same files, because almost none of them got actually ignored, in just around ~180ms, which is ~20% less time. So if we could match those globs differently, in a faster way, we could lower times a bit.</p>
<p>This is probably a good time to mention that <code>fast-glob</code> does a pretty cool optimization, if our glob looks like this: <code>packages/**/*.{js,cjs,mjs}</code>, then it can spot that the beginning of it is entirely static, what we are actually asking it to do is to search for <code>**/*.{js,cjs.mjs}</code> inside the <code>packages</code> folder only. This optimization can be significant if there are lots of files in other folders we don't actually care about, because they will just never be scanned at all.</p>
<p>That got me thinking: our ignore globs are basically the same, but the static part is at the end, rather than at the start. So I wrote another <a href="https://github.com/fabiospampinato/tiny-readdir-glob" target="_blank" rel="noopener noreferrer" class="">library</a> for finding files with a glob that is able to take advantage of globs with a static end too. The equivalent code for finding files with that would be this:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">readdir</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"tiny-readdir-glob"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> files </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">readdir</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"packages/**/*.{js,cjs,mjs}"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">ignore</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"**/{.git,.sl,.svn,.hg,node_modules}"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">followSymlinks</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>And it finds the same files in just around ~130ms. By commenting out the ignore glob, just to check how much overhead that adds, it seems to take about the same amount of time, so that got optimized enough that it's hard to measure its cost in this scenario.</p>
<p>It got faster than we perhaps expected, for a few reasons:</p>
<ol>
<li class="">Other than the ignore glob, the <code>**/*.{js,cjs,mjs}</code> portion of the main glob ended up getting optimized too.</li>
<li class="">Globs are matched against the relative path of a file from the root folder we started searching from, so there would be a bunch of <code>path.relative</code> calls in there, but if our glob looks like this: <code>**/.git</code>, then it doesn't matter if we calculate the relative path or not, we'll effectively be looking at the end of that string for a child path anyway, so I'm just skipping those <code>path.relative</code> calls completely.</li>
<li class="">Node's <a href="https://nodejs.org/api/fs.html#fsreaddirpath-options-callback" target="_blank" rel="noopener noreferrer" class=""><code>fs.readdir</code></a> API is used internally in both libraries to scan directories, and it gives us the names of the found files and folders, not their absolute paths, which is what we actually want, but we can generate that more manually, by joining the parent path and the name with the path separator, rather than by calling <code>path.join</code>, which speeds things up a bit more.</li>
</ol>
<p>Additionally this new library is ~90% smaller, about 65kb of minified code is no longer needed, which speeds up startup for the entire CLI. In much smaller repos than Babel's the new CLI might be able to find all the target files by the time the old one just finished parsing <code>fast-glob</code>.</p>
<p>Rewriting this part of the CLI may seem a little heavy-handed for the kind of speed up that we got, but the main reason for the rewrite is actually another. It would seem that there should be nothing that we could do here that would speed up the CLI by multiple seconds, since finding all the files takes less than half a second to begin with, but, the crucial point to highlight here is that for the entire CLI we not only need to find files to format, but we also need to find configuration files, and knowing every single file and folder that was found, even if they didn't match our globs, is very valuable information that will allow us to shave multiple seconds later. <code>tiny-readdir-glob</code> can give us that information more or less for free, so it seemed worth writing it even just for that alone.</p>
<p>To summarize the perhaps interesting points from this section:</p>
<ol>
<li class="">If you can, always tell Prettier the extensions to look for, for example with a glob like <code>packages/**/*.{js,cjs,mjs}</code>. If you used <code>packages/**/*</code> or just <code>packages</code> instead in this scenario 13k extra files would need to be processed, and it would be more expensive for Prettier to discard them later on.</li>
<li class="">There's always something left to optimize or special-case for performance, even in already optimized libraries, if one has the time to look into it.</li>
<li class="">It's worth thinking about what kind of information is being thrown away, or made somewhat expensive to reconstruct. Here the glob library has to know the found files and folders just to do its work, exposing that information to the caller unlocks additional performance basically for free, in some cases.</li>
</ol>
<p>Guesses on how to speed this up further:</p>
<ol>
<li class="">This seems to be bottlenecked by the performance of <code>fs.promises.readdir</code> in Node, and/or the overhead of creating a Promise for each found folder. It may be worth looking into using the callback-style version of that API, and into optimization opportunities in Node itself.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="resolving-configurations-fast">Resolving configurations fast<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#resolving-configurations-fast" class="hash-link" aria-label="Direct link to Resolving configurations fast" title="Direct link to Resolving configurations fast" translate="no">​</a></h2>
<p>This is possibly the most impactful optimization behind the new CLI, and it's basically about finding configuration files as fast as possible, for each folder only ever checking once if it contains configuration files, and parsing the found configuration files only once.</p>
<p>A major problem behind the current CLI is that it caches resolved configurations by file path, rather than by folder path, so for example Babel's monorepo has ~17k files to format, but only 1 <code>.editorconfig</code> file in the whole repo, we should be parsing that file once, but instead it got parsed ~17k times. Additionally if you imagine those ~17k files being under the same folder, that folder got asked if it contained an <code>.editorconfig</code> file ~17k times, so actually the deeper nested into folders files to format were, the slower the entire CLI would get.</p>
<p>This problem got largely solved in two steps:</p>
<ol>
<li class="">Resolved configuration files are cached by folder path, so it doesn't matter anymore how many files each folder contains, or how deep they are into folders.</li>
<li class="">The found folders are now being asked basically 0 times if they contain each of the ~15 supported configuration files, because we know from the previous section every single file in the repo, so we can just do a lookup in there, which ends up being a lot faster than asking the filesystem. This wouldn't matter much in most small repos, but Babel's for example has ~13k folders, and 13k * 15 checks with the filesystem <del>added</del> multiplied up quickly enough.</li>
</ol>
<p>Let's now take a deeper look into how each specific supported type of configuration is resolved.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="resolving-editorconfig-configurations">Resolving EditorConfig configurations<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#resolving-editorconfig-configurations" class="hash-link" aria-label="Direct link to Resolving EditorConfig configurations" title="Direct link to Resolving EditorConfig configurations" translate="no">​</a></h4>
<p>Assuming from the previous step that we've parsed every <code>.editorconfig</code> file in the repo and that we can fetch the relevant ones for any target file in constant time, what we now want to do is to merge them together into a single configuration object, for each target file, basically.</p>
<p>Right away this idea kinda goes out of the window, because the <a href="https://www.npmjs.com/package/editorconfig" target="_blank" rel="noopener noreferrer" class=""><code>editorconfig</code></a> package doesn't provide a function for doing this. The closest one seems the one called <code>parseFromFiles</code>, which besides being deprecated it seems to do what we want, but it wants configurations as strings, so it will presumably parse them by itself after each call, which is the thing we wanted to avoid in the first place, we only want to ever parse those once.</p>
<p>So that package got rewritten for Prettier's needs, <a href="https://github.com/fabiospampinato/tiny-editorconfig" target="_blank" rel="noopener noreferrer" class=""><code>tiny-editorconfig</code></a> provides exactly the <code>resolve</code> function we need, and it leaves the logic for finding configuration files to us, which is what we want anyway because we need to cache these files in a custom way.</p>
<p>While I was at it I've rewritten the <a href="https://github.com/fabiospampinato/ini-simple-parser" target="_blank" rel="noopener noreferrer" class="">INI parser</a> behind it too, and it seems to be ~9x faster. It shouldn't matter much, because most repos will only have 1 <code>.editorconfig</code> file in them, but I enjoy writing these little parsers, and hey if you happen to have thousands of <code>.editorconfig</code> files in your repo you'll notice the extra performance boost!</p>
<p>Additionally this new library is ~82% smaller, ~50kb of minified code got deleted, which speeds up startup for the whole CLI. Also it uses the same glob library that <code>tiny-readdir-glob</code> uses, while in the current CLI <code>fast-glob</code> and <code>editorconfig</code> use different ones, so actually a bit more code than that got effectively deleted.</p>
<p>Previously it would have taken multiple seconds to resolve these files for Babel's monorepo, now it takes roughly ~100ms.</p>
<p>Guesses on how to speed this up further:</p>
<ol>
<li class="">It should be possible in some (most?) cases to pre-resolve these configuration files for any possible file path we could encounter, for example depending on the globs in them it may be possible that we can end up with 3 possible resolved configurations at most, one for files that don't match any of the globs, one for files that match the <code>**/*.js</code> glob, and one for files that match the <code>**/*.md</code> glob. It's a bit complicated to implement though, and unclear what the speedup will be in practice, but it's something to think about for the future.</li>
</ol>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="resolving-prettier-configurations">Resolving Prettier configurations<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#resolving-prettier-configurations" class="hash-link" aria-label="Direct link to Resolving Prettier configurations" title="Direct link to Resolving Prettier configurations" translate="no">​</a></h4>
<p>For Prettier-specific configurations, like the <code>.prettierrc</code> file, we are also assuming that we've resolved all the found configuration files, and can retrieve them in constant time for any target file.</p>
<p>It's basically an identical situation to what we had for EditorConfig-specific configurations, so we'll basically do the same, this time hard-coding the logic for merging the configurations inside the CLI itself, as making a standalone package for it seems of basically no utility to the ecosystem.</p>
<p>The main aspects to consider here for the future are, in my opinion:</p>
<ol>
<li class="">A large number of <a href="https://prettier.io/docs/configuration" target="_blank" rel="noopener noreferrer" class="">different configuration files</a> are supported. In Babel's monorepo this translates to ~150k lookups in the object of known paths we created in the first step, which while not super expensive it's not free either. If this number could be reduced by a lot it would speed things up a bit.</li>
<li class="">Also some of the parsers required to parse those configuration files are relatively expensive, the <a href="https://npmjs.com/package/json5" target="_blank" rel="noopener noreferrer" class=""><code>json5</code></a> parser requires ~100x as much code as the smallest <a href="https://code.visualstudio.com/docs/languages/json" target="_blank" rel="noopener noreferrer" class="">JSONC</a> (JSON with Comments) parser that I know of for JavaScript, while being in some cases ~50x slower at parsing also. If fewer formats could be supported the CLI would be leaner as a result.</li>
<li class="">If we could check just once if a file named for example <code>.prettierrc.json5</code> got found anywhere in the repo we could reduce the number of checks for these configuration files by an order of magnitude, because if no file with that name was found anywhere in the repo then we don't need to ask each of Babel's ~13k folders if they have it. The list of all known file names is another piece of valuable information that the glob library we are using could give us for free.</li>
</ol>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="resolving-ignore-configurations">Resolving Ignore configurations<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#resolving-ignore-configurations" class="hash-link" aria-label="Direct link to Resolving Ignore configurations" title="Direct link to Resolving Ignore configurations" translate="no">​</a></h4>
<p>Lastly we need to resolve <code>.gitignore</code> and <code>.prettierignore</code> files, to understand which found files to ignore. We are also assuming that we resolved all the found ones already and can fetch them in constant time for any target file.</p>
<p>I'm not doing any major optimizations here, I'm largely just asking <a href="https://github.com/kaelzhang/node-ignore" target="_blank" rel="noopener noreferrer" class=""><code>node-ignore</code></a> to make us a function that we can call to check if a file should be ignored.</p>
<p>A small optimization though is skipping calling <code>path.relative</code>, and the <code>ignore</code> function itself in some cases. Ignore files match more or less the relative path of found files from the folder where the ignore file exist in, and since we know that all the paths we are dealing with are normalized, if the absolute path of a target file doesn't start with the absolute path of the folder where each ignore file existed in then that file exists outside of the folder that the ignore file manages, so we don't have to call the <code>ignore</code> function that <code>node-ignore</code> made for us.</p>
<p>A decent amount of time seems spent matching the globs in these files against the found files though, hundreds of milliseconds for thousands of files, because there can just be a large number of globs in these files and a large number of files to match, which multiplied together gives us roughly the number of glob matches that will be attempted in the worst case.</p>
<p>The nice thing about <code>.gitignore</code> and <code>.prettierignore</code> files though is that they often repay for themselves, because the time spent parsing them and matching files against them is often less than the time needed to process every file that would have gotten discarded by them.</p>
<p>Guesses on how to speed this up further:</p>
<ol>
<li class="">Maybe most of those globs could be sort of merged together into a single more complicated glob, and matched all together in one go by the engine, since we are not interested in knowing which exact glob matched, only if any of them did.</li>
<li class="">Maybe globs could be executed in a different order, perhaps executing cheaper and broader globs first allows us to spend less time matching globs, on average. This wouldn't make a difference if most found files are not ignored though.</li>
<li class="">Perhaps we could just remember which file paths matched or not with a cache, but it feels like this could be sped up a lot without caching too.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="caching">Caching<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#caching" class="hash-link" aria-label="Direct link to Caching" title="Direct link to Caching" translate="no">​</a></h2>
<p>At this point we've found all the files, and we've parsed all the configurations, what's left to do is doing the actual potentially expensive work of formatting each target file, and that's where caching comes in.</p>
<p>The current CLI has support for some form of caching, but it's opt-in, requiring an explicit <code>--cache</code> flag, and it doesn't remember if a file in the previous run was found to <em>not</em> be formatted properly, only if it was formatted properly, which can cause some unnecessary overhead in some cases, as those unformatted files would get formatted again to check if they are formatted, when we could have just remembered from the previous run that they aren't.</p>
<p>What we want to do here is skip the most amount of work possible, by remembering if a file was formatted or not, while generating reasonably small cache files, and while not introducing much overhead with the caching mechanism itself.</p>
<p>The new CLI has opt-out caching instead, so caching is always turned on, unless you explicitly disable it with a <code>--no-cache</code> flag, this way its benefits should reach a much higher number of people by default. Also the cache is now turned on by default because it takes everything into account, so it shouldn't be realistic for the cache to tell the CLI something that's actually incorrect. If any of the following change, then the cache, or parts of it, get invalidated automatically: Prettier's version, all resolved EditorConfig/Prettier/Ignore configurations files and their paths, formatting options provided via CLI flags, the actual content of each file, and the file path of each file.</p>
<p>The main trick here is that we don't want to have the cache for each file to be <em>directly</em> dependent on its resolved formatting configuration, because that would require merging those configuration files for each target file, serializing the resulting object, and hashing that, which can be more expensive than we'd like.</p>
<p>What the new CLI is doing instead is just parsing all found configurations files, and then just serializing and hashing them, which takes a constant amount of time to do no matter how many files we need to format later, and it only requires a single hash to be remembered in the cache file to account <em>indirectly</em> for configuration files. This is safe to do because if the paths to configuration files <em>and</em> their contents don't change, then any file with the same path from the previous run will necessarily be formatted with the same resolved formatting configuration object. The only potential issue is if any dependency used to parse those configuration files is actually buggy, but worst case scenario Prettier's own version can be bumped along with the buggy dependency's.</p>
<p>To give some numbers the current CLI checks Babel's monorepo without a cache in around ~29 seconds, the new CLI needs ~7.5s to do the same without a cache and without parallelization. If the cache file is enabled and it exists though the current CLI still needs ~22 seconds, while the new CLI needs ~1.3 seconds, and this number can probably be cut in half with more optimizations in the future.</p>
<p>If there's anything to remember from this long post is that if you want the CLI to go as fast as it can, you need to <strong>remember the cache file</strong>. The cache file is stored under <code>./node_modules/.cache/prettier</code> by default, and its location can be customized by passing the <code>--cache-location &lt;path&gt;</code> flag. I'll say it again: if performance matters for your scenario the single biggest thing to do to speed things up here is to remember the cache file between runs.</p>
<p>Guesses on how to speed this up further:</p>
<ol>
<li class="">An optimization opportunity would be speeding up hashing in Node. Calculating the same hashes in Bun seems ~3x faster, so surely there's some room for optimization there. I've <a href="https://github.com/nodejs/performance/issues/136" target="_blank" rel="noopener noreferrer" class="">reported</a> that to Node, no PR has been submitted yet to address it, it seems complicated.</li>
<li class="">Potentially the parsed configuration files could be cached too, rather than just remembering their hash, but there should usually only be a handful of them, so it probably wouldn't matter too much.</li>
<li class="">Potentially more code could be deleted or lazy-loaded, speeding up the fully cached path a bit more.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="formatting">Formatting<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#formatting" class="hash-link" aria-label="Direct link to Formatting" title="Direct link to Formatting" translate="no">​</a></h2>
<p>We've now almost reached the end of the pipeline, we know which files we need to format, and we've just gotta do it.</p>
<p>I haven't looked into optimizing the core formatting function itself much, since for few files it seems reasonably fast already, and most of the slowdown for the CLI seemed to come from resolving configurations inefficiently and not remembering work done in the past, but that could be one of the major things to look into next. There may just not be any major and/or easy optimizations opportunities in there though, with some quick profiling I didn't spot any at least.</p>
<p>I've tried a couple of other things though.</p>
<p>First of all multiple files can be formatted in parallel, that's the default now and a <code>--no-parallel</code> flag is supported to opt-out of it. The <code>--parallel-workers &lt;int&gt;</code> flag can also be used to set a custom number of workers to use, for some manual fine-tuning. On my 10 core computer with parallelization the time needed to check Babel's monorepo goes down from ~7.5s to ~5.5s, which doesn't seem particularly impressive, I'm not sure why I'm not getting better scaling than that, I'd like to look deeper into this eventually. There are much larger repos and CI machines with hundreds of cores though, it may make a much bigger difference for your use case, on top of all the other optimizations.</p>
<p>Lastly I tried quickly replacing Prettier's format function with <a href="https://www.npmjs.com/package/@wasm-fmt/biome_fmt" target="_blank" rel="noopener noreferrer" class=""><code>@wasm-fmt/biome_fmt</code></a>, which is <a href="https://biomejs.dev/" target="_blank" rel="noopener noreferrer" class="">Biome</a>'s format function compiled to WASM, and I see ~3.5s for checking Babel's monorepo without parallelization, and ~2.2s with parallelization. So roughly 2x better numbers than I'm seeing with Prettier's own formatter. Potentially the improvement could be even larger if Biome's format function was compiled to a native Node module, I'm not sure.</p>
<p>Guesses on how to speed this up further:</p>
<ol>
<li class="">I haven't done much work on the core formatting, which seems roughly at least 2x slower than optimal, but the work required to get there may be major, we'll see. There's definitely some room for improvement though.</li>
<li class="">The <code>--parallel</code> flag, while enabled by default, has one minor issue: if you don't have many files to format, but you have many cores to feed, you could end up feeding few files to each core, which can actually slow things down a bit. This can probably be addressed by dynamically sizing the pool depending on some heuristics. It's currently enabled by default because it slows things down a bit only in scenarios where things are pretty fast anyway, while providing a significant improvement in scenarios that would be much slower otherwise.</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="outputting-to-the-terminal">Outputting to the terminal<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#outputting-to-the-terminal" class="hash-link" aria-label="Direct link to Outputting to the terminal" title="Direct link to Outputting to the terminal" translate="no">​</a></h2>
<p>Lastly the final step is just to output the result of the command that the CLI was asked to execute to the terminal.</p>
<p>There wasn't much to do here, but there were a couple of optimizations possible:</p>
<ol>
<li class="">First of all in some cases, like when formatting many small files, the current CLI would very quickly output the current file's path it was formatting, just to delete it a millisecond later, after formatting was done. Doing that for thousands of files is actually surprisingly expensive because <code>console.log</code> calls are synchronous and block the main thread, moreover if we do that 100 times within 16ms it's a bit pointless because our screen maybe got refreshed only once or twice in that amount of time, whatever was logged we didn't even see it. The new CLI at the moment doesn't log files that are currently being formatted, shaving some hundreds of milliseconds in some cases.</li>
<li class="">Lastly the current CLI may call <code>console.log</code> thousands of times, depending on how many files are being formatted, while the new CLI batches logs and just performs a single <code>console.log</code> at the end, which in some cases can be surprisingly faster also.</li>
</ol>
<p>I think the main room for improvement in this area is doing something visually interesting, which keeps the user busy looking at it, since perceived performance can be even more important than actual performance, but doing it in a way that doesn't keep the computer busy nearly as much.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="results">Results<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#results" class="hash-link" aria-label="Direct link to Results" title="Direct link to Results" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" src="https://prettier.io/assets/images/prettier-bench-216fb2524152164e45b551dc9521717d.png" width="1293" height="853" class="img_ev3q"></p>
<p>Before we wrap up, here are some numbers I see when checking files in Babel's monorepo, with all files formatted, but 9 erroring files, with various flags, and with the current and new CLI:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier packages </span><span class="token parameter variable" style="color:#36acaa">--check</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># 29s</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier packages </span><span class="token parameter variable" style="color:#36acaa">--check</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--cache</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># 20s</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier@next packages </span><span class="token parameter variable" style="color:#36acaa">--check</span><span class="token plain"> --no-cache --no-parallel </span><span class="token comment" style="color:#999988;font-style:italic"># 7.3s</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier@next packages </span><span class="token parameter variable" style="color:#36acaa">--check</span><span class="token plain"> --no-cache </span><span class="token comment" style="color:#999988;font-style:italic"># 5.5s</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier@next packages </span><span class="token parameter variable" style="color:#36acaa">--check</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic"># 1.3s</span><br></span></code></pre></div></div>
<p>By default times for the same command go from ~29s to ~1.3s, for a ~22x speedup. This requires the cache file to be remembered between executions. We can probably get much closer to a 50x speedup in the future also.</p>
<p>If the cache file is not remembered, or if you explicitly turn caching off, or if this is the first run, then times go from ~29s to ~5.5s with parallelization, on my computer, for a ~5x speedup, which should still be pretty significant.</p>
<p>Worth noting again that this improvement is achieved without changing anything in Prettier's <code>format</code> function itself.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="results-compared-to-biome">Results compared to Biome<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#results-compared-to-biome" class="hash-link" aria-label="Direct link to Results compared to Biome" title="Direct link to Results compared to Biome" translate="no">​</a></h2>
<p>It's interesting to compare the numbers we got with the numbers that <a href="https://github.com/biomejs/biome" target="_blank" rel="noopener noreferrer" class="">Biome</a>, the leading Rust formatter and probably performance champion, would give us:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">biome </span><span class="token function" style="color:#d73a49">format</span><span class="token plain"> packages</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Diagnostics not shown: 25938.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Compared 28703 file(s) in 869ms</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Skipped 4770 file(s)</span><br></span></code></pre></div></div>
<p>Here Biome is checking the formatting for ~11k more files compared to our CLI, since they don't seem to be implementing <code>.gitignore</code> and/or <code>.prettierignore</code> resolution yet. There may be other, potentially significant, differences in behavior also, I'm not sure.</p>
<p>Manually patching our CLI to disable support for ignore files, to try to more closely mimic Biome's behavior, gives us the following number:</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier@next packages </span><span class="token parameter variable" style="color:#36acaa">--check</span><span class="token plain"> --no-cache </span><span class="token comment" style="color:#999988;font-style:italic"># 15s</span><br></span></code></pre></div></div>
<p>Comparison to take with a pinch of salt because the two tools aren't doing exactly the same thing, but it's interesting to see the speed at which Biome is able to check the formatting of many files. Speed that we probably need a cache file to match.</p>
<p>Different approaches to try to speed things up massively for users.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="wrapping-up">Wrapping up<a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#wrapping-up" class="hash-link" aria-label="Direct link to Wrapping up" title="Direct link to Wrapping up" translate="no">​</a></h2>
<p>The new CLI is still a work in progress, but we are excited for you to give it a try! You can <a href="https://prettier.io/blog/2023/11/30/cli-deep-dive#installation" class="">install</a> it today.</p>
<p>I'd be interesting to see the speedup that the new CLI enables for you, feel free to tweet those results at <a href="https://twitter.com/PrettierCode" target="_blank" rel="noopener noreferrer" class=""><code>@PrettierCode</code></a> or at <a href="https://twitter.com/fabiospampinato" target="_blank" rel="noopener noreferrer" class=""><code>@fabiospampinato</code></a> directly, especially if you have some questions or ideas on how to speed things up further.</p>]]></content>
        <author>
            <name>Fabio Spampinato</name>
            <uri>https://github.com/fabiospampinato</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[$20k Bounty was Claimed!]]></title>
        <id>https://prettier.io/blog/2023/11/27/20k-bounty-was-claimed</id>
        <link href="https://prettier.io/blog/2023/11/27/20k-bounty-was-claimed"/>
        <updated>2023-11-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Prettier, a JavaScript code formatter, has seen an incredible adoption thanks to its careful handling of the very, very, long tail of ways people can write code. At this point, the formatting logic has been solid and after our work on ternaries lands, it will be in a happy state.]]></summary>
        <content type="html"><![CDATA[<p>Prettier, a JavaScript code formatter, has seen an incredible adoption thanks to its careful handling of the very, very, long tail of ways people can write code. At this point, the formatting logic has been solid and after our work on <a href="https://prettier.io/blog/2023/11/13/curious-ternaries" target="_blank" rel="noopener noreferrer" class="">ternaries</a> lands, it will be in a happy state.</p>
<p>This means that we can now focus on the next important aspect: Performance. Prettier has never been fast per se, but fast enough for most use cases. This has always felt unsatisfying so we wanted to do something about it. What better way than a friendly competition.</p>
<p>On November 9th, we put up a <a href="https://twitter.com/Vjeux/status/1722733472522142022" target="_blank" rel="noopener noreferrer" class="">$10k bounty</a> for any project written in Rust that would pass 95% of Prettier test suite. Guillermo Rauch, CEO of Vercel, matched it to bring it to $20k and <a href="https://napi.rs/" target="_blank" rel="noopener noreferrer" class="">napi.rs</a> added another $2.5k. The folks at Algora even made an amazing landing page for it.</p>
<p><a href="https://console.algora.io/challenges/prettier" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://console.algora.io/prettier/og.png" alt="" class="img_ev3q"></a></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="winner-winner-chicken-dinner">Winner Winner Chicken Dinner<a href="https://prettier.io/blog/2023/11/27/20k-bounty-was-claimed#winner-winner-chicken-dinner" class="hash-link" aria-label="Direct link to Winner Winner Chicken Dinner" title="Direct link to Winner Winner Chicken Dinner" translate="no">​</a></h2>
<p><strong>I'm so excited to report that the <a href="https://biomejs.dev/" target="_blank" rel="noopener noreferrer" class="">Biome project</a> claimed the bounty!</strong> It has been so epic to see a dozen people come together to improve compatibility in only a short 3 weeks. You can read their <a href="https://biomejs.dev/blog/biome-wins-prettier-challenge" target="_blank" rel="noopener noreferrer" class="">full report</a> for the details.</p>
<p>One question you are probably wondering is why would the Prettier team fund another project!? In practice, Prettier has been the dominant code formatter for JavaScript and as a result of a lack of competition, there has been little incentive to push on performance and fix various edge cases.</p>
<p>There is now a Prettier-compatible and way faster implementation in Biome that people can switch to. So Prettier has to step up its game! Thankfully Fabio Spampinato got nerd sniped with the challenge and found many extreme inefficiencies in Prettier's CLI by doing proper profiling. He will fix them by the end of the year.</p>
<p>By matching all the tests, the Biome project also found a lot of <a href="https://github.com/biomejs/biome/issues/739" target="_blank" rel="noopener noreferrer" class="">bugs and questionable decisions</a> in Prettier that we will be able to improve upon.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="money-money-money">Money, Money, Money<a href="https://prettier.io/blog/2023/11/27/20k-bounty-was-claimed#money-money-money" class="hash-link" aria-label="Direct link to Money, Money, Money" title="Direct link to Money, Money, Money" translate="no">​</a></h2>
<p>I want to start by acknowledging that this bounty and the continued success of Prettier have been possible thanks to various people making significant donations. Companies: Indeed ($20,000), Frontend Masters ($10,850), Sentry ($10,529), Salesforce ($10,025), Airbnb ($8,426), Cybozu ($6,086). Individuals: Shintaro Kaneko ($1,635), Suhail Doshi ($1,000), icchiman ($500), Mariusz Nowak ($270), Benoît Burgener ($270), Jeremy Combs ($270), f_subal ($230).</p>
<p>You may not be aware but thanks to all those donations, we've been able to <a href="https://prettier.io/blog/2022/01/06/prettier-begins-paying-maintainers" target="_blank" rel="noopener noreferrer" class="">pay two people $1.5k/month</a> for the past two years to keep shipping. Fisker Cheung and Sosuke Suzuki have done an incredible job!</p>
<p>With the current budget, we only have 8 months of runway left, so this is a good time to solicit your donations.</p>
<p><strong>Consider donating if you or your company are using Prettier and it has been helpful to you: <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">https://opencollective.com/prettier</a></strong></p>
<p>I would also like to give a big shout-out to <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">Open Collective</a>. It has been incredible for the project. From a maintainer perspective, it has been amazing as you can sign up without giving any personal information and it acts as a bank. It lets people give and receive money all around the world and handles all the tax documents properly which is a huge deal.</p>
<p>Prettier raised a total of $110k and redistributed $75k.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="conclusion">Conclusion<a href="https://prettier.io/blog/2023/11/27/20k-bounty-was-claimed#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" translate="no">​</a></h2>
<p>While this was a one time bounty, the goal is to give an energy boost to the space of code formatting so that as an ecosystem we can make the best developer experience possible! It's been heartwarming to see so many people coming together and we hope they'll only achieve bigger things from now.</p>]]></content>
        <author>
            <name>Christopher Chedeau</name>
            <uri>https://github.com/vjeux</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 3.1: New experimental ternaries formatting and Angular control flow syntax!]]></title>
        <id>https://prettier.io/blog/2023/11/13/3.1.0</id>
        <link href="https://prettier.io/blog/2023/11/13/3.1.0"/>
        <updated>2023-11-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release adds indentation back to nested ternaries along with a new --experimental-ternaries flag to try a more novel "curious ternary" format that scales better to deeply nested conditionals. We are keen for your feedback on the experimental format before it rolls out as the default behavior later this year!]]></summary>
        <content type="html"><![CDATA[<p>This release adds indentation back to nested ternaries along with a new <code>--experimental-ternaries</code> flag to try a more novel "curious ternary" format that scales better to deeply nested conditionals. We are keen for <a href="https://forms.gle/vwEuboCobTVhEkt66" target="_blank" rel="noopener noreferrer" class="">your feedback</a> on the experimental format before it rolls out as the default behavior later this year!</p>
<p>We have also added support for the control flow syntax in Angular v17. For details on the syntax, please read <a href="https://blog.angular.io/introducing-angular-v17-4d7033312e4b" target="_blank" rel="noopener noreferrer" class="">the official Angular release post</a>.</p>
<p>If you appreciate Prettier and would like to support our work, please consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on, such as <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>. Thank you for your continued support!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2023/11/13/3.1.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2023/11/13/3.1.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-indentation-back-to-nested-ternaries-9559-by-rattrayalex">Add indentation back to nested ternaries (<a href="https://github.com/prettier/prettier/pull/9559" target="_blank" rel="noopener noreferrer" class="">#9559</a> by <a href="https://github.com/rattrayalex" target="_blank" rel="noopener noreferrer" class="">@rattrayalex</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#add-indentation-back-to-nested-ternaries-9559-by-rattrayalex" class="hash-link" aria-label="Direct link to add-indentation-back-to-nested-ternaries-9559-by-rattrayalex" title="Direct link to add-indentation-back-to-nested-ternaries-9559-by-rattrayalex" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> message </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"fizzbuzz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"fizz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"buzz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">String</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> message </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"fizzbuzz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"fizz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"buzz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">String</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> message </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"fizzbuzz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"fizz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"buzz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">String</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="new-experimental-ternary-formatting-a-curious-case-of-the-ternaries-13183-by-rattrayalex">New Experimental Ternary Formatting: A Curious Case of the Ternaries (<a href="https://github.com/prettier/prettier/pull/13183" target="_blank" rel="noopener noreferrer" class="">#13183</a> by <a href="https://github.com/rattrayalex" target="_blank" rel="noopener noreferrer" class="">@rattrayalex</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#new-experimental-ternary-formatting-a-curious-case-of-the-ternaries-13183-by-rattrayalex" class="hash-link" aria-label="Direct link to new-experimental-ternary-formatting-a-curious-case-of-the-ternaries-13183-by-rattrayalex" title="Direct link to new-experimental-ternary-formatting-a-curious-case-of-the-ternaries-13183-by-rattrayalex" translate="no">​</a></h4>
<p>This is implemented behind a <code>--experimental-ternaries</code> flag.</p>
<p>We move the <code>?</code> in multiline ternaries to the end of the first line instead of the start of the second, along with several related changes.</p>
<p>While it might look weird at first, beta-testing shows that after a few hours of use, developers find it makes nested ternaries much more readable and useful.</p>
<p>This PR resolves one of our <a href="https://github.com/prettier/prettier/issues/5814" target="_blank" rel="noopener noreferrer" class="">a highly-upvoted issue</a> without the problems its proposed solution would reintroduce.</p>
<p>Please see <a href="https://prettier.io/blog/2023/11/13/curious-ternaries" target="_blank" rel="noopener noreferrer" class="">A curious case of the ternaries</a> for more details.</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="example">Example<a href="https://prettier.io/blog/2023/11/13/3.1.0#example" class="hash-link" aria-label="Direct link to Example" title="Direct link to Example" translate="no">​</a></h5>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// "Questioning" ternaries for simple ternaries:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> content </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  children </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!</span><span class="token function" style="color:#d73a49">isEmptyChildren</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">children</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">render</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">children</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">renderDefaultChildren</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// "Case-style" ternaries for chained ternaries:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> message </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"fizzbuzz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"fizz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"buzz"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">String</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Smoothly transitions between "case-style" and "questioning" when things get complicated:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> reactRouterResult </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  children </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!</span><span class="token function" style="color:#d73a49">isEmptyChildren</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">children</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> children</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> props</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">match</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    component </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token maybe-class-name">React</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">createElement</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">component</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> props</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> render </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">render</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">props</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword null nil" style="color:#00009f">null</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword null nil" style="color:#00009f">null</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-new-syntaxes-supported-by-babel-7230-15485-15486-15487-15488-by-sosukesuzuki">Support new syntaxes supported by Babel 7.23.0 (<a href="https://github.com/prettier/prettier/pull/15485" target="_blank" rel="noopener noreferrer" class="">#15485</a>, <a href="https://github.com/prettier/prettier/pull/15486" target="_blank" rel="noopener noreferrer" class="">#15486</a>, <a href="https://github.com/prettier/prettier/pull/15487" target="_blank" rel="noopener noreferrer" class="">#15487</a>, <a href="https://github.com/prettier/prettier/pull/15488" target="_blank" rel="noopener noreferrer" class="">#15488</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#support-new-syntaxes-supported-by-babel-7230-15485-15486-15487-15488-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-new-syntaxes-supported-by-babel-7230-15485-15486-15487-15488-by-sosukesuzuki" title="Direct link to support-new-syntaxes-supported-by-babel-7230-15485-15486-15487-15488-by-sosukesuzuki" translate="no">​</a></h4>
<p>We support new JS syntax supported by <a href="https://babeljs.io/blog/2023/09/25/7.23.0" target="_blank" rel="noopener noreferrer" class="">Babel 7.23.0</a>!</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="source-phase-imports">Source Phase Imports<a href="https://prettier.io/blog/2023/11/13/3.1.0#source-phase-imports" class="hash-link" aria-label="Direct link to Source Phase Imports" title="Direct link to Source Phase Imports" translate="no">​</a></h5>
<p>Please see <a href="https://github.com/tc39/proposal-source-phase-imports" target="_blank" rel="noopener noreferrer" class="">https://github.com/tc39/proposal-source-phase-imports</a> for more details.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> source x </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"mod"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="deferred-import-evaluation">Deferred Import Evaluation<a href="https://prettier.io/blog/2023/11/13/3.1.0#deferred-import-evaluation" class="hash-link" aria-label="Direct link to Deferred Import Evaluation" title="Direct link to Deferred Import Evaluation" translate="no">​</a></h5>
<p>Please see <a href="https://github.com/tc39/proposal-defer-import-eval" target="_blank" rel="noopener noreferrer" class="">https://github.com/tc39/proposal-defer-import-eval</a> for more details.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> defer </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">as</span><span class="token plain"> ns </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"mod"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="optional-chaining-assignments">Optional Chaining Assignments<a href="https://prettier.io/blog/2023/11/13/3.1.0#optional-chaining-assignments" class="hash-link" aria-label="Direct link to Optional Chaining Assignments" title="Direct link to Optional Chaining Assignments" translate="no">​</a></h5>
<p>Please see <a href="https://github.com/tc39/proposal-optional-chaining-assignment" target="_blank" rel="noopener noreferrer" class="">https://github.com/tc39/proposal-optional-chaining-assignment</a> for more details.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">maybeObj</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">prop1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> value</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular">Angular<a href="https://prettier.io/blog/2023/11/13/3.1.0#angular" class="hash-link" aria-label="Direct link to Angular" title="Direct link to Angular" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-angular-control-flow-15606-by-dingweizhe-fisker">Support Angular control flow (<a href="https://github.com/prettier/prettier/pull/15606" target="_blank" rel="noopener noreferrer" class="">#15606</a> by <a href="https://github.com/DingWeizhe" target="_blank" rel="noopener noreferrer" class="">@DingWeizhe</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#support-angular-control-flow-15606-by-dingweizhe-fisker" class="hash-link" aria-label="Direct link to support-angular-control-flow-15606-by-dingweizhe-fisker" title="Direct link to support-angular-control-flow-15606-by-dingweizhe-fisker" translate="no">​</a></h4>
<p>Added support for built-in control flow in Angular 17. Please give us feedback if you find any bugs.</p>
<p>For more details about control flow, please check this article on the official blog.</p>
<p><a href="https://blog.angular.io/introducing-angular-v17-4d7033312e4b" target="_blank" rel="noopener noreferrer" class="">https://blog.angular.io/introducing-angular-v17-4d7033312e4b</a></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2023/11/13/3.1.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript-1">JavaScript<a href="https://prettier.io/blog/2023/11/13/3.1.0#javascript-1" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-comment-between-parentheses-and-function-body-15326-by-fisker">Fix comment between parentheses and function body (<a href="https://github.com/prettier/prettier/pull/15326" target="_blank" rel="noopener noreferrer" class="">#15326</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#fix-comment-between-parentheses-and-function-body-15326-by-fisker" class="hash-link" aria-label="Direct link to fix-comment-between-parentheses-and-function-body-15326-by-fisker" title="Direct link to fix-comment-between-parentheses-and-function-body-15326-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">function_declaration</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// this is a function</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">function_expression</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// this is a function</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">function_declaration</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// this is a function</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">function_expression</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// this is a function</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">function_declaration</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// this is a function</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">function_expression</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// this is a function</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">function_declaration</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// this is a function</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// this is a function</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">TypeError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Cannot</span><span class="token plain"> read properties </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> </span><span class="token keyword null nil" style="color:#00009f">null</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">reading </span><span class="token string" style="color:#e3116c">'range'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">function_declaration</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// this is a function</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// this is a function</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="disambiguate-unary-expressions-on-left-hand-side-of-instanceof-and-in-15468-by-lucacasonato">Disambiguate unary expressions on left hand side of instanceof and in (<a href="https://github.com/prettier/prettier/pull/15468" target="_blank" rel="noopener noreferrer" class="">#15468</a> by <a href="https://github.com/lucacasonato" target="_blank" rel="noopener noreferrer" class="">@lucacasonato</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#disambiguate-unary-expressions-on-left-hand-side-of-instanceof-and-in-15468-by-lucacasonato" class="hash-link" aria-label="Direct link to disambiguate-unary-expressions-on-left-hand-side-of-instanceof-and-in-15468-by-lucacasonato" title="Direct link to disambiguate-unary-expressions-on-left-hand-side-of-instanceof-and-in-15468-by-lucacasonato" translate="no">​</a></h4>
<p>Parentheses are now added around unary expression on the left hand side of
<code>instanceof</code> and <code>in</code> expressions, to disambiguate the unary on the left hand
side with a unary applying to the entire binary expression.</p>
<p>This helps catch a common mistake where a user intends to write <code>!("x" in y)</code>
but instead writes <code>!"x" in y</code>, which is really parsed as the nonsensical
<code>(!"x") in y</code>.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">!</span><span class="token string" style="color:#e3116c">"x"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"x"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">!</span><span class="token string" style="color:#e3116c">"x"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"x"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">!</span><span class="token string" style="color:#e3116c">"x"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"x"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-name-case-of-selectors-in-styled-components-interpolation-15472-by-lucasols">Fix name case of selectors in styled components interpolation (<a href="https://github.com/prettier/prettier/pull/15472" target="_blank" rel="noopener noreferrer" class="">#15472</a> by <a href="https://github.com/lucasols" target="_blank" rel="noopener noreferrer" class="">@lucasols</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#fix-name-case-of-selectors-in-styled-components-interpolation-15472-by-lucasols" class="hash-link" aria-label="Direct link to fix-name-case-of-selectors-in-styled-components-interpolation-15472-by-lucasols" title="Direct link to fix-name-case-of-selectors-in-styled-components-interpolation-15472-by-lucasols" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">StyledComponent</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> styled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">div</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">margin-right</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css number" style="color:#36acaa">-4</span><span class="token template-string css language-css unit">px</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css selector interpolation maybe-class-name" style="color:#00009f">Container</span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css selector class" style="color:#00009f">.isExpanded</span><span class="token template-string css language-css selector" style="color:#00009f"> &amp;</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css punctuation" style="color:#393A34">{</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">    </span><span class="token template-string css language-css property" style="color:#36acaa">transform</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css function" style="color:#d73a49">rotate</span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css number" style="color:#36acaa">-180</span><span class="token template-string css language-css unit">deg</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css punctuation" style="color:#393A34">}</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">StyledComponent2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> styled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">div</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">margin-right</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css number" style="color:#36acaa">-4</span><span class="token template-string css language-css unit">px</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css selector interpolation" style="color:#00009f">abc</span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css selector class" style="color:#00009f">.camelCase</span><span class="token template-string css language-css selector" style="color:#00009f"> </span><span class="token template-string css language-css selector combinator" style="color:#00009f">+</span><span class="token template-string css language-css selector" style="color:#00009f"> </span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css selector interpolation" style="color:#00009f">def</span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css selector class" style="color:#00009f">.camelCase</span><span class="token template-string css language-css selector" style="color:#00009f"> &amp;</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css punctuation" style="color:#393A34">{</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">    </span><span class="token template-string css language-css property" style="color:#36acaa">transform</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css function" style="color:#d73a49">rotate</span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css number" style="color:#36acaa">-180</span><span class="token template-string css language-css unit">deg</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css punctuation" style="color:#393A34">}</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">StyledComponent</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> styled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">div</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">margin-right</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css number" style="color:#36acaa">-4</span><span class="token template-string css language-css unit">px</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css selector interpolation maybe-class-name" style="color:#00009f">Container</span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css selector class" style="color:#00009f">.isexpanded</span><span class="token template-string css language-css selector" style="color:#00009f"> &amp;</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css punctuation" style="color:#393A34">{</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">    </span><span class="token template-string css language-css property" style="color:#36acaa">transform</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css function" style="color:#d73a49">rotate</span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css number" style="color:#36acaa">-180</span><span class="token template-string css language-css unit">deg</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css punctuation" style="color:#393A34">}</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">StyledComponent2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> styled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">div</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">margin-right</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css number" style="color:#36acaa">-4</span><span class="token template-string css language-css unit">px</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css selector interpolation" style="color:#00009f">abc</span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css selector class" style="color:#00009f">.camelcase</span><span class="token template-string css language-css selector" style="color:#00009f"> </span><span class="token template-string css language-css selector combinator" style="color:#00009f">+</span><span class="token template-string css language-css selector" style="color:#00009f"> </span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css selector interpolation" style="color:#00009f">def</span><span class="token template-string css language-css selector interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css selector class" style="color:#00009f">.camelCase</span><span class="token template-string css language-css selector" style="color:#00009f"> &amp;</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css punctuation" style="color:#393A34">{</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">    </span><span class="token template-string css language-css property" style="color:#36acaa">transform</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css function" style="color:#d73a49">rotate</span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css number" style="color:#36acaa">-180</span><span class="token template-string css language-css unit">deg</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css punctuation" style="color:#393A34">}</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1 -- same as input</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="consistently-format-strings-containing-escapes-15525-by-sosukesuzuki">Consistently format strings containing escapes (<a href="https://github.com/prettier/prettier/pull/15525" target="_blank" rel="noopener noreferrer" class="">#15525</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#consistently-format-strings-containing-escapes-15525-by-sosukesuzuki" class="hash-link" aria-label="Direct link to consistently-format-strings-containing-escapes-15525-by-sosukesuzuki" title="Direct link to consistently-format-strings-containing-escapes-15525-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">MSG_GENERIC_OPERATION_FAILURE_BODY_1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  goog</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getMsg</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"That's all we know"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">MSG_GENERIC_OPERATION_FAILURE_BODY_2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  goog</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getMsg</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"That\'s all we know"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">MSG_GENERIC_OPERATION_FAILURE_BODY_1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  goog</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getMsg</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"That's all we know"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">MSG_GENERIC_OPERATION_FAILURE_BODY_2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> goog</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getMsg</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"That's all we know"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">MSG_GENERIC_OPERATION_FAILURE_BODY_1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  goog</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getMsg</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"That's all we know"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">MSG_GENERIC_OPERATION_FAILURE_BODY_2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  goog</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getMsg</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"That's all we know"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-formatting-for-assignment-its-left-can-break-15547-by-sosukesuzuki">Improve formatting for assignment its left can break (<a href="https://github.com/prettier/prettier/pull/15547" target="_blank" rel="noopener noreferrer" class="">#15547</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#improve-formatting-for-assignment-its-left-can-break-15547-by-sosukesuzuki" class="hash-link" aria-label="Direct link to improve-formatting-for-assignment-its-left-can-break-15547-by-sosukesuzuki" title="Direct link to improve-formatting-for-assignment-its-left-can-break-15547-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">params</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"redirectTo"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation dom variable" style="color:#36acaa">window</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">location</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">pathname</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation dom variable" style="color:#36acaa">window</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">location</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">search</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation dom variable" style="color:#36acaa">window</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">location</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">hash</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">params</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"redirectTo"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation dom variable" style="color:#36acaa">window</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">location</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">pathname</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation dom variable" style="color:#36acaa">window</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">location</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">search</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation dom variable" style="color:#36acaa">window</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">location</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">hash</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">params</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"redirectTo"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation dom variable" style="color:#36acaa">window</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">location</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">pathname</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation dom variable" style="color:#36acaa">window</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">location</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">search</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation dom variable" style="color:#36acaa">window</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">location</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">hash</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2023/11/13/3.1.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-unstable-comment-after-the-last-parameter-property-15324-by-fisker">Fix unstable comment after the last parameter property (<a href="https://github.com/prettier/prettier/pull/15324" target="_blank" rel="noopener noreferrer" class="">#15324</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#fix-unstable-comment-after-the-last-parameter-property-15324-by-fisker" class="hash-link" aria-label="Direct link to fix-unstable-comment-after-the-last-parameter-property-15324-by-fisker" title="Direct link to fix-unstable-comment-after-the-last-parameter-property-15324-by-fisker" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Class</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> paramProp</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Type</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Class</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> paramProp</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Type</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0 (Second format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Class</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> paramProp</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Type</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Class</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> paramProp</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Type</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-embedded-formatting-in-template-literals-annotated-with-as-const-15408-by-sosukesuzuki">Support embedded formatting in template literals annotated with <code>as const</code> (<a href="https://github.com/prettier/prettier/pull/15408" target="_blank" rel="noopener noreferrer" class="">#15408</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#support-embedded-formatting-in-template-literals-annotated-with-as-const-15408-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-embedded-formatting-in-template-literals-annotated-with-as-const-15408-by-sosukesuzuki" title="Direct link to support-embedded-formatting-in-template-literals-annotated-with-as-const-15408-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">GQL_QUERY_WITH_CONST</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* GraphQL */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  query S { shop }</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">GQL_QUERY_WITH_CONST</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* GraphQL */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  query S { shop }</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">GQL_QUERY_WITH_CONST</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* GraphQL */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  query S {</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    shop</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-printing-comment-for-the-last-operand-of-union-types-15409-by-sosukesuzuki">Fix printing comment for the last operand of union types (<a href="https://github.com/prettier/prettier/pull/15409" target="_blank" rel="noopener noreferrer" class="">#15409</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#fix-printing-comment-for-the-last-operand-of-union-types-15409-by-sosukesuzuki" class="hash-link" aria-label="Direct link to fix-printing-comment-for-the-last-operand-of-union-types-15409-by-sosukesuzuki" title="Direct link to fix-printing-comment-for-the-last-operand-of-union-types-15409-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing1"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing2"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Final comment1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing1"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing2"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"> </span><span class="token maybe-class-name">Bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Final comment2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing1"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing2"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment2 // Final comment1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing1"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing2"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Final comment2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing1"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing2"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Final comment1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing1"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"thing2"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Final comment2</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="keep-required-parenthesis-around-some-specific-keyword-like-identifiers-in-expression-statement-of-satisfies--as-expression-15514-by-seiyab">Keep required parenthesis around some specific keyword like identifiers in expression statement of satisfies / as expression (<a href="https://github.com/prettier/prettier/pull/15514" target="_blank" rel="noopener noreferrer" class="">#15514</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#keep-required-parenthesis-around-some-specific-keyword-like-identifiers-in-expression-statement-of-satisfies--as-expression-15514-by-seiyab" class="hash-link" aria-label="Direct link to keep-required-parenthesis-around-some-specific-keyword-like-identifiers-in-expression-statement-of-satisfies--as-expression-15514-by-seiyab" title="Direct link to keep-required-parenthesis-around-some-specific-keyword-like-identifiers-in-expression-statement-of-satisfies--as-expression-15514-by-seiyab" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">type</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> satisfies </span><span class="token builtin">never</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">satisfies</span><span class="token plain"> </span><span class="token builtin">never</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">type</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> satisfies </span><span class="token builtin">never</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow">Flow<a href="https://prettier.io/blog/2023/11/13/3.1.0#flow" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-as-and-satisfies-expressions-for-flow-15130-by-gkz">Support <code>as</code> and <code>satisfies</code> expressions for Flow (<a href="https://github.com/prettier/prettier/pull/15130" target="_blank" rel="noopener noreferrer" class="">#15130</a> by <a href="https://github.com/gkz" target="_blank" rel="noopener noreferrer" class="">@gkz</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#support-as-and-satisfies-expressions-for-flow-15130-by-gkz" class="hash-link" aria-label="Direct link to support-as-and-satisfies-expressions-for-flow-15130-by-gkz" title="Direct link to support-as-and-satisfies-expressions-for-flow-15130-by-gkz" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> y </span><span class="token keyword module" style="color:#00009f">as</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// &lt;error: unsupported&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> y </span><span class="token keyword module" style="color:#00009f">as</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-type-arguments-on-jsx-opening-elements-for-flow-15429-by-samchou19815">Support type arguments on jsx opening elements for Flow (<a href="https://github.com/prettier/prettier/pull/15429" target="_blank" rel="noopener noreferrer" class="">#15429</a> by <a href="https://github.com/SamChou19815" target="_blank" rel="noopener noreferrer" class="">@SamChou19815</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#support-type-arguments-on-jsx-opening-elements-for-flow-15429-by-samchou19815" class="hash-link" aria-label="Direct link to support-type-arguments-on-jsx-opening-elements-for-flow-15429-by-samchou19815" title="Direct link to support-type-arguments-on-jsx-opening-elements-for-flow-15429-by-samchou19815" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token maybe-class-name">Foo</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">bar</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> /&gt;;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Foo</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain-text">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">&lt;Foo</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">bar</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> /&gt;;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-type-arguments-after-typeof-15466-by-sosukesuzuki">Support type arguments after <code>typeof</code> (<a href="https://github.com/prettier/prettier/pull/15466" target="_blank" rel="noopener noreferrer" class="">#15466</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#support-type-arguments-after-typeof-15466-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-type-arguments-after-typeof-15466-by-sosukesuzuki" title="Direct link to support-type-arguments-after-typeof-15466-by-sosukesuzuki" translate="no">​</a></h4>
<p>Supports type arguments after <code>typeof</code> syntax supported since <a href="https://github.com/facebook/flow/blob/HEAD/Changelog.md#02170" target="_blank" rel="noopener noreferrer" class="">Flow v0.127.0</a>:</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">typeof</span><span class="token plain"> </span><span class="token maybe-class-name">MyGenericClass</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> number</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scss">SCSS<a href="https://prettier.io/blog/2023/11/13/3.1.0#scss" class="hash-link" aria-label="Direct link to SCSS" title="Direct link to SCSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="do-not-split-call-of-scss-function-with-leading-dash-15370-by-auvred">Do not split call of scss function with leading dash (<a href="https://github.com/prettier/prettier/pull/15370" target="_blank" rel="noopener noreferrer" class="">#15370</a> by <a href="https://github.com/auvred" target="_blank" rel="noopener noreferrer" class="">@auvred</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#do-not-split-call-of-scss-function-with-leading-dash-15370-by-auvred" class="hash-link" aria-label="Direct link to do-not-split-call-of-scss-function-with-leading-dash-15370-by-auvred" title="Direct link to do-not-split-call-of-scss-function-with-leading-dash-15370-by-auvred" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">div </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">width</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">-double</span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">-double</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.0 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">div </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">width</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">-double</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">- </span><span class="token function" style="color:#d73a49">double</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.1 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">div </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">width</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">-double</span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">-double</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2023/11/13/3.1.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-of-menu-and-marquee-elements-15334-by-fisker">Fix formatting of <code>menu</code> and <code>marquee</code> elements (<a href="https://github.com/prettier/prettier/pull/15334" target="_blank" rel="noopener noreferrer" class="">#15334</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#fix-formatting-of-menu-and-marquee-elements-15334-by-fisker" class="hash-link" aria-label="Direct link to fix-formatting-of-menu-and-marquee-elements-15334-by-fisker" title="Direct link to fix-formatting-of-menu-and-marquee-elements-15334-by-fisker" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">menu</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript function" style="color:#d73a49">copy</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Copy</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript function" style="color:#d73a49">cut</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Cut</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript function" style="color:#d73a49">paste</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Paste</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">menu</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">direction</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">down</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">width</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">250</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">height</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">200</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">behavior</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">alternate</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag special-attr attr-name" style="color:#00a4db">style</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value css language-css property" style="color:#36acaa">border</span><span class="token tag special-attr attr-value value css language-css punctuation" style="color:#393A34">:</span><span class="token tag special-attr attr-value value css language-css" style="color:#e3116c">solid</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">behavior</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">alternate</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"> This text will bounce </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">menu</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript function" style="color:#d73a49">copy</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Copy</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript function" style="color:#d73a49">cut</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Cut</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript function" style="color:#d73a49">paste</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Paste</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">menu</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">direction</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">down</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">width</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">250</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">height</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">200</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">behavior</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">alternate</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag special-attr attr-name" style="color:#00a4db">style</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value css language-css property" style="color:#36acaa">border</span><span class="token tag special-attr attr-value value css language-css punctuation" style="color:#393A34">:</span><span class="token tag special-attr attr-value value css language-css" style="color:#e3116c"> solid</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">behavior</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">alternate</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"> This text will bounce </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">menu</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript function" style="color:#d73a49">copy</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Copy</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript function" style="color:#d73a49">cut</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Cut</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">onclick</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value javascript language-javascript function" style="color:#d73a49">paste</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">(</span><span class="token tag special-attr attr-value value javascript language-javascript punctuation" style="color:#393A34">)</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Paste</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">menu</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">direction</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">down</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">width</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">250</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">height</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">200</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">behavior</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">alternate</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag special-attr attr-name" style="color:#00a4db">style</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value css language-css property" style="color:#36acaa">border</span><span class="token tag special-attr attr-value value css language-css punctuation" style="color:#393A34">:</span><span class="token tag special-attr attr-value value css language-css" style="color:#e3116c"> solid</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">behavior</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">alternate</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">This text will bounce</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">marquee</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown">Markdown<a href="https://prettier.io/blog/2023/11/13/3.1.0#markdown" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="encoding--and--in-markdown-urls-15400-by-vivekjoshi556">Encoding <code>&lt;</code> and <code>&gt;</code> in markdown urls (<a href="https://github.com/prettier/prettier/pull/15400" target="_blank" rel="noopener noreferrer" class="">#15400</a> by <a href="https://github.com/vivekjoshi556" target="_blank" rel="noopener noreferrer" class="">@vivekjoshi556</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#encoding--and--in-markdown-urls-15400-by-vivekjoshi556" class="hash-link" aria-label="Direct link to encoding--and--in-markdown-urls-15400-by-vivekjoshi556" title="Direct link to encoding--and--in-markdown-urls-15400-by-vivekjoshi556" translate="no">​</a></h4>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">link</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">https://www.google.fr/(</span><span class="token url" style="color:#36acaa">)</span><span class="token plain">foo-&gt;bar)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">link</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">&lt;https://www.google.fr/(</span><span class="token url" style="color:#36acaa">)</span><span class="token plain">foo-&gt;bar&gt;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">link</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">&lt;https://www.google.fr/(</span><span class="token url" style="color:#36acaa">)</span><span class="token plain">foo-%3Ebar&gt;)</span><br></span></code></pre></div></div>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url operator" style="color:#393A34">!</span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">link</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">&lt;https://www.google.fr/(</span><span class="token url" style="color:#36acaa">)</span><span class="token plain">foo-&gt;bar&gt;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url operator" style="color:#393A34">!</span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">link</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">&lt;https://www.google.fr/(</span><span class="token url" style="color:#36acaa">)</span><span class="token plain">foo-&gt;bar&gt;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token url operator" style="color:#393A34">!</span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">link</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">&lt;https://www.google.fr/(</span><span class="token url" style="color:#36acaa">)</span><span class="token plain">foo-%3Ebar&gt;)</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dont-split-lines-between-japanese-kana--combining-katakana-hiragana-semi-voiced-sound-mark-15411-by-tats-u">Don't split lines between Japanese kana &amp; COMBINING KATAKANA-HIRAGANA (SEMI-)VOICED SOUND MARK (<a href="https://github.com/prettier/prettier/pull/15411" target="_blank" rel="noopener noreferrer" class="">#15411</a> by <a href="https://github.com/tats-u" target="_blank" rel="noopener noreferrer" class="">@tats-u</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#dont-split-lines-between-japanese-kana--combining-katakana-hiragana-semi-voiced-sound-mark-15411-by-tats-u" class="hash-link" aria-label="Direct link to dont-split-lines-between-japanese-kana--combining-katakana-hiragana-semi-voiced-sound-mark-15411-by-tats-u" title="Direct link to dont-split-lines-between-japanese-kana--combining-katakana-hiragana-semi-voiced-sound-mark-15411-by-tats-u" translate="no">​</a></h4>
<p>This PR fixes <a href="https://github.com/prettier/prettier/issues/15410" target="_blank" rel="noopener noreferrer" class="">#15410</a>.</p>
<p>Japanese (semi-)voiced kana characters can be split into two code points. For example, the following hiragana character /ka/ can be represented as:</p>
<p>が (U+304C) → か (U+304B) + ゙ (U+3099) → が (U+304C U+3099)</p>
<p>Most users do not use or meet expressions like this except for file paths in macOS. However, there are some characters that can only be represented in this way. Some Japanese text that have to tell /ŋa̠/ (there are not a few Japanese that do not use it these days though) from the common /ga/ use a expression <a href="https://en.wiktionary.org/wiki/%E3%81%8B%E3%82%9A" target="_blank" rel="noopener noreferrer" class="">"か゚" (U+304B U+309A)</a>.</p>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">nasalか゚き゚く゚け゚こ゚か゚き゚く゚け゚こ゚か゚き゚く゚け゚こ゚か゚き゚く゚け゚こ゚</span><br></span></code></pre></div></div>
<p>The above Markdown is formatted as in Prettier 3.0:</p>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">nasalか゚き゚く゚け゚こ゚か゚き゚く゚け゚こ゚か゚き゚く゚け゚こ゚か゚き゚く゚け</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">゚こ゚</span><br></span></code></pre></div></div>
<p>The semi-voiced sound mark goes to the next line but it is not correct. By this PR, the source Markdown is now formatted as:</p>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">nasalか゚き゚く゚け゚こ゚か゚き゚く゚け゚こ゚か゚き゚く゚け゚こ゚か゚き゚く゚</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">け゚こ゚</span><br></span></code></pre></div></div>
<p>The semi-voiced sound mark now keeps attached to the hiragana "け".</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api">API<a href="https://prettier.io/blog/2023/11/13/3.1.0#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="accept-url-in-prettierresolveconfigresolveconfigfilegetfileinfo-15332-15354-15360-15364-by-fisker">Accept <code>URL</code> in <code>prettier.{resolveConfig,resolveConfigFile,getFileInfo}()</code> (<a href="https://github.com/prettier/prettier/pull/15332" target="_blank" rel="noopener noreferrer" class="">#15332</a>, <a href="https://github.com/prettier/prettier/pull/15354" target="_blank" rel="noopener noreferrer" class="">#15354</a>, <a href="https://github.com/prettier/prettier/pull/15360" target="_blank" rel="noopener noreferrer" class="">#15360</a>, <a href="https://github.com/prettier/prettier/pull/15364" target="_blank" rel="noopener noreferrer" class="">#15364</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#accept-url-in-prettierresolveconfigresolveconfigfilegetfileinfo-15332-15354-15360-15364-by-fisker" class="hash-link" aria-label="Direct link to accept-url-in-prettierresolveconfigresolveconfigfilegetfileinfo-15332-15354-15360-15364-by-fisker" title="Direct link to accept-url-in-prettierresolveconfigresolveconfigfilegetfileinfo-15332-15354-15360-15364-by-fisker" translate="no">​</a></h4>
<p><a href="https://prettier.io/docs/api#prettierresolveconfigfileurlorpath--options" target="_blank" rel="noopener noreferrer" class=""><code>prettier.resolveConfig()</code></a>, <a href="https://prettier.io/docs/api#prettierresolveconfigfilefileurlorpath" target="_blank" rel="noopener noreferrer" class=""><code>prettier.resolveConfigFile()</code></a>, and <a href="https://prettier.io/docs/api#prettiergetfileinfofileurlorpath--options" target="_blank" rel="noopener noreferrer" class=""><code>prettier.getFileInfo()</code></a> now accepts an <a href="https://developer.mozilla.org/en-US/docs/Web/API/URL" target="_blank" rel="noopener noreferrer" class="">URL</a> with <code>file:</code> protocol or a url string starts with <code>file://</code>.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// `URL`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolveConfig</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">URL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./path/to/file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolveConfigFile</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">URL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./path/to/file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getFileInfo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">URL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./path/to/file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getFileInfo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"/path/to/file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">ignorePath</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">URL</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./.eslintignore"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">meta</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// URL string</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolveConfig</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"file:///path/to/file"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">resolveConfigFile</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"file:///path/to/file"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getFileInfo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"file:///path/to/file"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getFileInfo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"/path/to/file"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">ignorePath</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"file:///path/to/.eslintignore"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://prettier.io/blog/2023/11/13/3.1.0#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="process-files-only-supported-by-plugins-15433-by-sosukesuzuki">Process files only supported by plugins (<a href="https://github.com/prettier/prettier/pull/15433" target="_blank" rel="noopener noreferrer" class="">#15433</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#process-files-only-supported-by-plugins-15433-by-sosukesuzuki" class="hash-link" aria-label="Direct link to process-files-only-supported-by-plugins-15433-by-sosukesuzuki" title="Direct link to process-files-only-supported-by-plugins-15433-by-sosukesuzuki" translate="no">​</a></h4>
<p>In Prettier 3.0, when specifying a directory from the CLI, only files with default supported extensions were processed.</p>
<p>In the following scenario, not just <code>foo.js</code> but also <code>foo.astro</code> should be formatted:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.0 version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ ls .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo.js foo.astro</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ cat .prettierrc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{ "plugins": ["prettier-plugin-astro"] }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier --write .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo.js 20ms</span><br></span></code></pre></div></div>
<p>With this update, both <code>foo.js</code> and <code>foo.astro</code> will now be formatted:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.1 branch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier --write .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo.js 20ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo.astro 32ms</span><br></span></code></pre></div></div>
<p>You can replace <code>prettier "**/*" --ignore-unknown</code> with <code>prettier .</code> since they are equivalent now.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="show-unchanged-keyword-for-accessibility-in-cli---write-15467-by-adtc">Show <code>(unchanged)</code> keyword for accessibility in CLI <code>--write</code> (<a href="https://github.com/prettier/prettier/pull/15467" target="_blank" rel="noopener noreferrer" class="">#15467</a> by <a href="https://github.com/ADTC" target="_blank" rel="noopener noreferrer" class="">@ADTC</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#show-unchanged-keyword-for-accessibility-in-cli---write-15467-by-adtc" class="hash-link" aria-label="Direct link to show-unchanged-keyword-for-accessibility-in-cli---write-15467-by-adtc" title="Direct link to show-unchanged-keyword-for-accessibility-in-cli---write-15467-by-adtc" translate="no">​</a></h4>
<p>Previously, the only distinction between a changed file and an unchanged file was the grey color of the file name. In the example below, we can't distinguish between <code>a.js</code> and <code>b.js</code> as the color is missing. This issue is fixed by adding the <code>(unchanged)</code> keyword which makes the distinction accessible without color.</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier </span><span class="token parameter variable" style="color:#36acaa">--write</span><span class="token plain"> </span><span class="token builtin class-name">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a.js 0ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">b.js 0ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">c.js 0ms </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">cached</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a.js 0ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">b.js 0ms </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">unchanged</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">c.js 0ms </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">unchanged</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">cached</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-error-when-formatting-file-names-contains-special-characters-15597-by-fisker">Fix error when formatting file names contains special characters (<a href="https://github.com/prettier/prettier/pull/15597" target="_blank" rel="noopener noreferrer" class="">#15597</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/11/13/3.1.0#fix-error-when-formatting-file-names-contains-special-characters-15597-by-fisker" class="hash-link" aria-label="Direct link to fix-error-when-formatting-file-names-contains-special-characters-15597-by-fisker" title="Direct link to fix-error-when-formatting-file-names-contains-special-characters-15597-by-fisker" translate="no">​</a></h4>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier </span><span class="token string" style="color:#e3116c">"[with-square-brackets].js"</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--list</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> Explicitly specified </span><span class="token function" style="color:#d73a49">file</span><span class="token plain"> was ignored due to negative glob patterns: </span><span class="token string" style="color:#e3116c">"[with-square-brackets].js"</span><span class="token builtin class-name">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">with-square-brackets</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">.js</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[A curious case of the ternaries]]></title>
        <id>https://prettier.io/blog/2023/11/13/curious-ternaries</id>
        <link href="https://prettier.io/blog/2023/11/13/curious-ternaries"/>
        <updated>2023-11-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Ternary formatting has always been a challenge, and we're finally addressing it in v3.1.0 with the introduction of a novel formatting style.]]></summary>
        <content type="html"><![CDATA[<p>Ternary formatting has always been a challenge, and we're finally addressing it in v3.1.0 with the introduction of a novel formatting style.</p>
<p>Read on for our journey and the motivation behind this change, along with early developer feedback and an overview of the "curious ternaries" style.</p>
<p>Please give the <code>--experimental-ternaries</code> option a try and let us know what you think!</p>
<p><em>For a quick tl;dr, <a class="" href="https://prettier.io/blog/2023/11/13/3.1.0">see the release post</a>.</em></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction">Introduction<a href="https://prettier.io/blog/2023/11/13/curious-ternaries#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h2>
<p>Formatting nested ternaries nicely in a wide variety of scenarios is a surprisingly tricky challenge.</p>
<p>Developers have long found them so confusing to read that they end up just refactoring their code to an ugly series of <code>if</code>-<code>else</code> statements, often with a <code>let</code> declaration, an iife, or a separate function entirely.</p>
<p>According to beta testers, the new formatting style we've developed can take some getting used to, but ultimately allows ternaries to be practically used as a concise form of <code>if</code>-<code>else</code>-expressions in modern codebases.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="historical-background">Historical background<a href="https://prettier.io/blog/2023/11/13/curious-ternaries#historical-background" class="hash-link" aria-label="Direct link to Historical background" title="Direct link to Historical background" translate="no">​</a></h2>
<p>Prettier's original, naïve approach – just add indentation to each level of a nested ternary – worked fine in simple cases, but obviously doesn't scale to long chains of nested ternaries and <a href="https://github.com/prettier/prettier/issues/737" target="_blank" rel="noopener noreferrer" class="">had other problems</a>.</p>
<p>So in 2018, we <a href="https://github.com/prettier/prettier/pull/5039" target="_blank" rel="noopener noreferrer" class="">replaced that with flat ternaries</a>, which <a href="https://github.com/prettier/prettier/pull/4767#issuecomment-401764876" target="_blank" rel="noopener noreferrer" class="">seemed</a> like a good idea at the time, but was <a href="https://github.com/prettier/prettier/issues/5814" target="_blank" rel="noopener noreferrer" class="">not received well</a> –&nbsp;the issue asking it to be reverted had well over 500 upvotes.</p>
<p>While we did ultimately <a href="https://github.com/prettier/prettier/pull/9559" target="_blank" rel="noopener noreferrer" class="">revert back to indented ternaries</a>, we wanted to find a better way.</p>
<p>Over the last few years, we <a href="https://github.com/prettier/prettier/issues/9561" target="_blank" rel="noopener noreferrer" class="">explored</a> and experimented with many, many possible solutions which would be as readable as indented ternaries in common cases, but also scale to work well in a wider variety of situations.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="challenging-criteria">Challenging criteria<a href="https://prettier.io/blog/2023/11/13/curious-ternaries#challenging-criteria" class="hash-link" aria-label="Direct link to Challenging criteria" title="Direct link to Challenging criteria" translate="no">​</a></h2>
<p>Ideally, we'd find one scheme that would meet our criteria:</p>
<ol>
<li class="">In all cases, it should be easy to follow "what's the <code>if</code>", "what's the <code>then</code>", and "what's the <code>else</code>" –&nbsp;and what they map to.</li>
<li class="">The code should fluidly flow from a single ternary, to a chain of 2, to a long chain of simple cases, to something more complex with a few nested conditions. (Most alternatives we explored failed this test).</li>
<li class="">The syntax in JSX, TypeScript conditional expressions (which cannot be expressed with <code>if</code>), and normal JS should all look and feel the same.</li>
<li class="">It should scale to nested ternary chains of arbitrary length (imagine a TypeScript conditional type with dozens of alternative cases).</li>
</ol>
<p>Indented ternaries clearly <a href="https://github.com/prettier/prettier/pull/9559#issuecomment-720736156" target="_blank" rel="noopener noreferrer" class="">failed (4)</a>, arguably (1), and even (3) – we have almost always printed JSX ternaries in a flat-but-readable format that unfortunately <a href="https://github.com/prettier/prettier/pull/9552" target="_blank" rel="noopener noreferrer" class="">felt unnatural</a> outside of JSX.</p>
<p>Many people in the community were excited about a "case-style", drawing inspiration from the <code>match</code> syntax from languages like Rust or OCaml, but it did not meet (2) and <a href="https://github.com/prettier/prettier/issues/9561#goals:~:text=on%20that%20below.-,Goals,-I%27d%20like%20to" target="_blank" rel="noopener noreferrer" class="">other goals</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-surprising-solution">A surprising solution<a href="https://prettier.io/blog/2023/11/13/curious-ternaries#a-surprising-solution" class="hash-link" aria-label="Direct link to A surprising solution" title="Direct link to A surprising solution" translate="no">​</a></h2>
<p>The good news is that we found a formatting algorithm that met our criteria. The bad news is that it's novel, and thus unfamiliar to most developers.</p>
<p>In beta testing this feature, we found developers were quite skeptical when they first saw it:</p>
<p><img decoding="async" loading="lazy" src="https://user-images.githubusercontent.com/704302/205551054-122f2fc0-fee3-4254-912a-1b97b5cf0c04.png" alt="&quot;I'm not convinced the new version is simpler to read here.&quot;" class="img_ev3q"></p>
<p>But then, after using it for a bit, they didn't want to go back:</p>
<p><img decoding="async" loading="lazy" src="https://user-images.githubusercontent.com/704302/205550887-b780f6ba-b678-4620-a454-255bd5083096.png" alt="&quot;I'm liking the ternaries! I think it makes sense to have them formatted like this. I also got used to them quite quickly as well. \nI agree with this, it takes a very short time to get used to it.&quot;" class="img_ev3q"></p>
<p>Another developer had this to say:</p>
<blockquote>
<p>My first hour with the rule on, it felt a little odd. But by hour two, I’d used it a few times to solve problems that otherwise would have been ugly refactors to <code>if</code> statements. I’m not going back.</p>
</blockquote>
<blockquote>
<p>I used to hate nested ternaries, but I also hate restructuring a nice line of code into <code>if-else</code> statements. The new rule adds an understandable, linear <code>if-else</code>, <code>if-else</code> expression to the language and is much nicer than multiple ternaries as nested branches.</p>
</blockquote>
<p>So we felt we had a winning formula, but we knew it could be a jarring introduction to the community.</p>
<p>As a result, we decided to put this new formatting behind a temporary <code>--experimental-ternaries</code> option for a few months, and in the meantime go ahead and ship what the community has been clamoring for: <a href="https://github.com/prettier/prettier/pull/9559" target="_blank" rel="noopener noreferrer" class="">indented ternaries</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="styling-overview">Styling Overview<a href="https://prettier.io/blog/2023/11/13/curious-ternaries#styling-overview" class="hash-link" aria-label="Direct link to Styling Overview" title="Direct link to Styling Overview" translate="no">​</a></h2>
<p>So what does this new style look like, anyway?</p>
<p>Here's a quick, contrived example to show the thinking behind "curious" ternaries:</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> animalName </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  pet</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">canBark</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    pet</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">isScary</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">'wolf'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'dog'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> pet</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">canMeow</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'cat'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'probably a bunny'</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<ol>
<li class="">Every line that ends with a question mark is an <strong>"if"</strong>.<!-- -->
<ul>
<li class="">If you see <code>foo ?</code> it's like asking a question about foo – "if foo? then, …".</li>
</ul>
</li>
<li class="">Every line that starts with a <code>:</code> is an <strong>"else"</strong>.<!-- -->
<ul>
<li class="">If you see <code>: foo</code> that means, "else, foo".</li>
<li class="">If you see <code>: foo ?</code> that means "else, if foo?".</li>
</ul>
</li>
<li class="">Every line without <code>:</code> or <code>?</code> is a <strong>"then"</strong>.<!-- -->
<ul>
<li class="">If you just see <code>foo</code>, that means, "then foo".</li>
</ul>
</li>
</ol>
<p>And here's the code rewritten to demonstrate "case-style" ternaries:</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> animalName </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  pet</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">isScary</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'wolf'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> pet</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">canBark</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'dog'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> pet</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">canMeow</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'cat'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'probably a bunny'</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>You can see this is a nice concise way to get something approaching <code>match</code>-style syntax in JavaScript, with just the humble ternary operator (albeit missing several features).</p>
<p>Our new formatting is a fluid blend of "curious" ternaries (where the question mark is always at the end of the line), and "case-style" ternaries, where the question mark is in the middle of the line.</p>
<p>For example:</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> animalName </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  pet</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">canSqueak</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'mouse'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> pet</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">canBark</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    pet</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">isScary</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token string-property property" style="color:#36acaa">'wolf'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'dog'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> pet</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">canMeow</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'cat'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> pet</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">canSqueak</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'mouse'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'probably a bunny'</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="give-us-your-feedback">Give us your feedback!<a href="https://prettier.io/blog/2023/11/13/curious-ternaries#give-us-your-feedback" class="hash-link" aria-label="Direct link to Give us your feedback!" title="Direct link to Give us your feedback!" translate="no">​</a></h2>
<p>We hope you like the more readable new default, and we <strong>really</strong> hope you give the new <code>--experimental-ternaries</code> option a try for a few weeks and let us know what you think.</p>
<p>Please give us feedback via Google Forms: <a href="https://forms.gle/vwEuboCobTVhEkt66" target="_blank" rel="noopener noreferrer" class="">https://forms.gle/vwEuboCobTVhEkt66</a></p>]]></content>
        <author>
            <name>Alex Rattray</name>
            <uri>https://github.com/rattrayalex</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 3.0: Hello, ECMAScript Modules!]]></title>
        <id>https://prettier.io/blog/2023/07/05/3.0.0</id>
        <link href="https://prettier.io/blog/2023/07/05/3.0.0"/>
        <updated>2023-07-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We are excited to announce the release of the new version of Prettier!]]></summary>
        <content type="html"><![CDATA[<p>We are excited to announce the release of the new version of Prettier!</p>
<p>We have made the migration to using ECMAScript Modules for all our source code. This change has significantly improved the development experience for the Prettier team. Please rest assured that when using Prettier as a library, you can still use it as CommonJS as well.</p>
<p>This update comes with several breaking changes. One notable example is the alteration in markdown formatting - spaces are no longer inserted between Latin characters and Chinese or Japanese characters. We'd like to extend our gratitude to <a href="https://github.com/tats-u" target="_blank" rel="noopener noreferrer" class="">Tatsunori Uchino</a>, who has made significant contributions to Prettier over the past year, particularly with this feature. Additionally, the default value of <code>trailingComma</code> has been changed to <code>"all"</code>.</p>
<p>Another important change in this release is the significant overhaul of the plugin interface. Prettier now supports plugins written using ECMAScript Modules and async parsers. If you're a plugin developer, please exercise caution while updating. You can find <a href="https://github.com/prettier/prettier/wiki/How-to-migrate-my-plugin-to-support-Prettier-v3%3F" target="_blank" rel="noopener noreferrer" class="">the migration guide</a> here. As always, we welcome bug reports and feedback!</p>
<p>This release also includes numerous formatting improvements and bug fixes.</p>
<p>If you appreciate Prettier and would like to support our work, please consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on, such as <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>. Thank you for your continued support!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2023/07/05/3.0.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown">Markdown<a href="https://prettier.io/blog/2023/07/05/3.0.0#markdown" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-handling-of-whitespace-for-chinese-japanese-and-korean-11597-by-tats-u">Improve handling of whitespace for Chinese, Japanese, and Korean (<a href="https://github.com/prettier/prettier/pull/11597" target="_blank" rel="noopener noreferrer" class="">#11597</a> by <a href="https://github.com/tats-u" target="_blank" rel="noopener noreferrer" class="">@tats-u</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#improve-handling-of-whitespace-for-chinese-japanese-and-korean-11597-by-tats-u" class="hash-link" aria-label="Direct link to improve-handling-of-whitespace-for-chinese-japanese-and-korean-11597-by-tats-u" title="Direct link to improve-handling-of-whitespace-for-chinese-japanese-and-korean-11597-by-tats-u" translate="no">​</a></h4>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="stop-inserting-spaces-between-chinese-or-japanese-and-western-characters">Stop inserting spaces between Chinese or Japanese and Western characters<a href="https://prettier.io/blog/2023/07/05/3.0.0#stop-inserting-spaces-between-chinese-or-japanese-and-western-characters" class="hash-link" aria-label="Direct link to Stop inserting spaces between Chinese or Japanese and Western characters" title="Direct link to Stop inserting spaces between Chinese or Japanese and Western characters" translate="no">​</a></h5>
<p>Previously, Prettier would insert spaces between Chinese or Japanese and Western characters (letters and digits). While some people prefer this style, it isn’t standard, and is in fact contrary to official guidelines. Please see <a href="https://github.com/tats-u/prettier-plugin-md-nocjsp#why-this-plugin-is-needed" target="_blank" rel="noopener noreferrer" class="">here</a> for more details. We decided it’s not Prettier’s job to enforce a particular style in this case, so spaces aren’t inserted anymore, while existing ones are preserved. If you need a tool for enforcing spacing style, consider <a href="https://github.com/textlint-ja/textlint-rule-preset-ja-spacing/tree/master/packages/textlint-rule-ja-space-between-half-and-full-width" target="_blank" rel="noopener noreferrer" class="">textlint-ja</a> or <a href="https://github.com/lint-md/lint-md" target="_blank" rel="noopener noreferrer" class="">lint-md</a> (rules <code>space-round-alphabet</code> and <code>space-round-number</code>).</p>
<p>The tricky part of this change were ambiguous line breaks between Chinese or Japanese and Western characters. When Prettier unwraps text, it needs to decide whether such a line break should be simply removed or replaced with a space. For that Prettier examines the surrounding text and infers the preferred style.</p>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">漢字</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Alphabetsひらがな12345カタカナ67890</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">漢字 Alphabets ひらがな 12345 カタカナ 67890</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">漢字 Alphabets ひらがな 12345 カタカナ 67890</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">漢字 Alphabets ひらがな 12345 カタカナ 67890</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">漢字Alphabetsひらがな12345カタカナ67890</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">漢字 Alphabets ひらがな 12345 カタカナ 67890</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="comply-to-line-breaking-rules-in-chinese-and-japanese">Comply to line breaking rules in Chinese and Japanese<a href="https://prettier.io/blog/2023/07/05/3.0.0#comply-to-line-breaking-rules-in-chinese-and-japanese" class="hash-link" aria-label="Direct link to Comply to line breaking rules in Chinese and Japanese" title="Direct link to Comply to line breaking rules in Chinese and Japanese" translate="no">​</a></h5>
<p>There are rules that prohibit certain characters from appearing at the beginning or the end of a line in <a href="https://www.w3.org/TR/clreq/#prohibition_rules_for_line_start_end" target="_blank" rel="noopener noreferrer" class="">Chinese</a> and <a href="https://www.w3.org/TR/jlreq/#characters_not_starting_a_line" target="_blank" rel="noopener noreferrer" class="">Japanese</a>. E.g., full stop characters <code>。</code>, <code>．</code>, and <code>.</code> shouldn’t start a line whereas <code>（</code> shouldn’t end a line. Prettier now follows these rules when it wraps text, that is when <code>proseWrap</code> is set to <code>always</code>.</p>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">HTCPCPのエラー418は、ティーポットにコーヒーを淹（い）れさせようとしたときに返されるステータスコードだ。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 with --prose-wrap always --print-width 8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">HTCPCP の</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">エラー</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">418 は、</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ティーポ</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ットにコ</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ーヒーを</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">淹（い）</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">れさせよ</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">うとした</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ときに返</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">されるス</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">テータス</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">コードだ</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 with the same options --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">HTCPCPの</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">エラー</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">418は、</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ティー</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ポットに</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">コーヒー</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">を淹</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">（い）れ</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">させよう</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">としたと</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">きに返さ</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">れるス</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">テータス</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">コード</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">だ。</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="do-not-break-lines-inside-korean-words">Do not break lines inside Korean words<a href="https://prettier.io/blog/2023/07/05/3.0.0#do-not-break-lines-inside-korean-words" class="hash-link" aria-label="Direct link to Do not break lines inside Korean words" title="Direct link to Do not break lines inside Korean words" translate="no">​</a></h5>
<p>Korean uses spaces to divide words, and an inappropriate division may change the meaning of a sentence:</p>
<ul>
<li class=""><code>노래를 못해요.</code>: I’m not good at singing.</li>
<li class=""><code>노래를 못 해요.</code>: I can’t sing (for some reason).</li>
</ul>
<p>Previously, when <code>proseWrap</code> was set to <code>always</code>, successive Hangul characters could get split by a line break, which could later be converted to a space when the document is edited and reformatted. This doesn’t happen anymore. Korean text is now wrapped like English.</p>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">노래를 못해요.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 with --prose-wrap always --print-width 9 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">노래를 못</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">해요.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8, subsequent reformat with --prose-wrap always --print-width 80 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">노래를 못 해요.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 with --prose-wrap always --print-width 9 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">노래를</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">못해요.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0, subsequent reformat with --prose-wrap always --print-width 80 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">노래를 못해요.</span><br></span></code></pre></div></div>
<p>A line break between Hangul and non-Hangul letters and digits is converted to a space when Prettier unwraps the text. Consider this example:</p>
<blockquote>
<p>3분 기다려 주지.</p>
</blockquote>
<p>In this sentence, if you break the line between “3” and “분”, a space will be inserted there when the text gets unwrapped.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api">API<a href="https://prettier.io/blog/2023/07/05/3.0.0#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-plugins-with-async-parsers-12748-by-fisker-13211-by-thorn0-and-fisker">Support plugins with async parsers (<a href="https://github.com/prettier/prettier/pull/12748" target="_blank" rel="noopener noreferrer" class="">#12748</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/prettier/prettier/pull/13211" target="_blank" rel="noopener noreferrer" class="">#13211</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a> and <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-plugins-with-async-parsers-12748-by-fisker-13211-by-thorn0-and-fisker" class="hash-link" aria-label="Direct link to support-plugins-with-async-parsers-12748-by-fisker-13211-by-thorn0-and-fisker" title="Direct link to support-plugins-with-async-parsers-12748-by-fisker-13211-by-thorn0-and-fisker" translate="no">​</a></h4>
<p><a href="https://prettier.io/docs/plugins#parsers" target="_blank" rel="noopener noreferrer" class=""><code>parse</code> function</a> in a plugin can return a <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise" target="_blank" rel="noopener noreferrer" class="">Promise</a> now.</p>
<p>In order to support async parsers for embedded languages, we had to introduce a breaking change to the plugin API. Namely, the <code>embed</code> method of a printer has now to match a completely new signature, incompatible with previous versions. If you're a plugin author and your plugins don't define <code>embed</code>, you have nothing to worry about, otherwise see the <a href="https://prettier.io/docs/plugins#optional-embed" target="_blank" rel="noopener noreferrer" class="">docs</a> for details.</p>
<p>Also, the <code>preprocess</code> method of a printer can return a promise now.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-config-files-in-esm-13130-by-fisker">Support config files in ESM (<a href="https://github.com/prettier/prettier/pull/13130" target="_blank" rel="noopener noreferrer" class="">#13130</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-config-files-in-esm-13130-by-fisker" class="hash-link" aria-label="Direct link to support-config-files-in-esm-13130-by-fisker" title="Direct link to support-config-files-in-esm-13130-by-fisker" translate="no">​</a></h4>
<p>Config files in ESM are supported, supported config file names:</p>
<ul>
<li class=""><code>prettier.config.js</code> (in place with <code>{"type": "module"}</code> in <code>package.json</code>)</li>
<li class=""><code>.prettierrc.js</code> (same as above)</li>
<li class=""><code>prettier.config.mjs</code></li>
<li class=""><code>.prettierrc.mjs</code>.</li>
</ul>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">trailingComma</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"es5"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">tabWidth</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">semi</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">singleQuote</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p><strong><a href="https://prettier.io/docs/configuration#sharing-configurations" target="_blank" rel="noopener noreferrer" class="">Shareable config package</a> can also be a pure ESM package.</strong></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="breaking-changes">Breaking Changes<a href="https://prettier.io/blog/2023/07/05/3.0.0#breaking-changes" class="hash-link" aria-label="Direct link to Breaking Changes" title="Direct link to Breaking Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2023/07/05/3.0.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-the-default-value-for-trailingcomma-to-all-11479-by-fisker-13143-by-sosukesuzuki">Change the default value for <code>trailingComma</code> to <code>all</code> (<a href="https://github.com/prettier/prettier/pull/11479" target="_blank" rel="noopener noreferrer" class="">#11479</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/prettier/prettier/pull/13143" target="_blank" rel="noopener noreferrer" class="">#13143</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#change-the-default-value-for-trailingcomma-to-all-11479-by-fisker-13143-by-sosukesuzuki" class="hash-link" aria-label="Direct link to change-the-default-value-for-trailingcomma-to-all-11479-by-fisker-13143-by-sosukesuzuki" title="Direct link to change-the-default-value-for-trailingcomma-to-all-11479-by-fisker-13143-by-sosukesuzuki" translate="no">​</a></h4>
<p>Since version 2.0. we've changed the default value for <code>trailingComma</code> to <code>es5</code>.</p>
<p><a href="https://docs.microsoft.com/en-us/lifecycle/announcements/internet-explorer-11-end-of-support" target="_blank" rel="noopener noreferrer" class="">Internet Explorer, the last browser to not allow trailing commas in function calls, has been unsupported on June 15, 2022.</a> Accordingly, change the default value for <code>trailingComma</code> to <code>all</code>.</p>
<p>If the old behavior is still preferred, please configure Prettier with <code>{ "trailingComma": "es5" }</code>.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="remove-flow-syntax-support-from-babel-parser-14314-by-fisker-thorn0">Remove Flow syntax support from <code>babel</code> parser (<a href="https://github.com/prettier/prettier/pull/14314" target="_blank" rel="noopener noreferrer" class="">#14314</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#remove-flow-syntax-support-from-babel-parser-14314-by-fisker-thorn0" class="hash-link" aria-label="Direct link to remove-flow-syntax-support-from-babel-parser-14314-by-fisker-thorn0" title="Direct link to remove-flow-syntax-support-from-babel-parser-14314-by-fisker-thorn0" translate="no">​</a></h4>
<p>For historical reasons, Prettier used to recognize Flow syntax in JS files when the <code>parser</code> option was set to <code>babel</code> even if the file didn't include the <code>@flow</code> pragma. This support was limited and bad for performance, so it has been removed in Prettier 3.0. Prettier with the <code>babel</code> parser still automatically switches to the Flow syntax if it finds the <code>@flow</code> pragma or the file has the <code>.js.flow</code> extension.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow">Flow<a href="https://prettier.io/blog/2023/07/05/3.0.0#flow" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="remove-support-for-flow-comments-13687-13703-by-thorn0">Remove support for Flow comments (<a href="https://github.com/prettier/prettier/pull/13687" target="_blank" rel="noopener noreferrer" class="">#13687</a>, <a href="https://github.com/prettier/prettier/pull/13703" target="_blank" rel="noopener noreferrer" class="">#13703</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#remove-support-for-flow-comments-13687-13703-by-thorn0" class="hash-link" aria-label="Direct link to remove-support-for-flow-comments-13687-13703-by-thorn0" title="Direct link to remove-support-for-flow-comments-13687-13703-by-thorn0" translate="no">​</a></h4>
<p>Being a kind of preprocessor, <a href="https://flow.org/blog/2015/02/20/Flow-Comments/" target="_blank" rel="noopener noreferrer" class="">Flow comments</a> AKA <a href="https://flow.org/en/docs/types/comments/" target="_blank" rel="noopener noreferrer" class="">comment types</a> are processed on the token level and can't be represented in an AST in the general case. Flow builds the AST as if these special comment tokens didn't exist. Example:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/*:: if */</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>This is parsed as <code>if (x) +y;</code> by Flow and as <code>x + y;</code> by JS parsers that don't support Flow.</p>
<p>Previously, for some special cases, Prettier tried to detect that this syntax was used and to preserve it. As an attempt to solve an unsolvable problem, this limited support was fragile and riddled with bugs, so it has been removed. Now if the <code>parser</code> option is set to <code>flow</code> or <code>babel-flow</code>, Flow comments will be parsed and reprinted like normal code. If a parser that doesn't support Flow is used, they will be treated like usual comments.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> a </span><span class="token comment" style="color:#999988;font-style:italic">/*: foo */</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> a </span><span class="token comment" style="color:#999988;font-style:italic">/*: foo */</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0 with --parser flow</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0 with --parser babel</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> a </span><span class="token comment" style="color:#999988;font-style:italic">/*: foo */</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-trailing-comma-in-type-parameters-and-tuple-types-when---trailing-commaes5-14086-14085-by-fisker">Print trailing comma in type parameters and tuple types when <code>--trailing-comma=es5</code> (<a href="https://github.com/prettier/prettier/pull/14086" target="_blank" rel="noopener noreferrer" class="">#14086</a>, <a href="https://github.com/prettier/prettier/pull/14085" target="_blank" rel="noopener noreferrer" class="">#14085</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#print-trailing-comma-in-type-parameters-and-tuple-types-when---trailing-commaes5-14086-14085-by-fisker" class="hash-link" aria-label="Direct link to print-trailing-comma-in-type-parameters-and-tuple-types-when---trailing-commaes5-14086-14085-by-fisker" title="Direct link to print-trailing-comma-in-type-parameters-and-tuple-types-when---trailing-commaes5-14086-14085-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword module" style="color:#00009f">from</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">to</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// &lt;- 1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Promise</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">ok</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">baz</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">SomeOtherLongType</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">ok</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">SomeOtherLongType</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// &lt;- 2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword module" style="color:#00009f">from</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">to</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// &lt;- 1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Promise</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">ok</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">baz</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">SomeOtherLongType</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">ok</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">SomeOtherLongType</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// &lt;- 2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword module" style="color:#00009f">from</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">to</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// &lt;- 1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Promise</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">ok</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">baz</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">SomeOtherLongType</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">ok</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">SomeOtherLongType</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// &lt;- 2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="css">CSS<a href="https://prettier.io/blog/2023/07/05/3.0.0#css" class="hash-link" aria-label="Direct link to CSS" title="Direct link to CSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-the-pure-css-parser-7933-9092-9093-by-fisker">Add the pure <code>css</code> parser (<a href="https://github.com/prettier/prettier/pull/7933" target="_blank" rel="noopener noreferrer" class="">#7933</a>, <a href="https://github.com/prettier/prettier/pull/9092" target="_blank" rel="noopener noreferrer" class="">#9092</a>, <a href="https://github.com/prettier/prettier/pull/9093" target="_blank" rel="noopener noreferrer" class="">#9093</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#add-the-pure-css-parser-7933-9092-9093-by-fisker" class="hash-link" aria-label="Direct link to add-the-pure-css-parser-7933-9092-9093-by-fisker" title="Direct link to add-the-pure-css-parser-7933-9092-9093-by-fisker" translate="no">​</a></h4>
<p>Previously, when <code>--parser=css</code> was passed, Prettier tried to parse the content using <code>postcss-scss</code> and <code>postcss-less</code>. This caused confusion, and made syntax errors difficult to spot. Now <code>--parser=css</code> works only with the vanilla CSS syntax.</p>
<p><em>If you use <code>parser="css"</code> for your <code>.less</code>/<code>.scss</code> files, update it to the correct parser or remove the <code>parser</code> option to let Prettier auto-detect the parser by the file extension.</em></p>
<div class="language-less codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-less codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Less Syntax with `--parser=css` */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token mixin-usage function" style="color:#d73a49">.bordered</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.8 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Less Syntax with `--parser=css` */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token mixin-usage function" style="color:#d73a49">.bordered</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.0 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property" style="color:#36acaa">SyntaxError</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">postcss</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> CssSyntaxError Unknown word </span><span class="token punctuation" style="color:#393A34">(</span><span class="token property" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> | </span><span class="token comment" style="color:#999988;font-style:italic">/* Less Syntax with `--parser=css` */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">&gt; 2 | a</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token mixin-usage function" style="color:#d73a49">.bordered</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Scss Syntax with `--parser=css` */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">::before </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">content</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">#{$foo}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.8 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Scss Syntax with `--parser=css` */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">::before </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">content</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">#{$foo}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.0 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property" style="color:#36acaa">SyntaxError</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">postcss</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> CssSyntaxError Unknown word </span><span class="token punctuation" style="color:#393A34">(</span><span class="token property" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">22</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> | </span><span class="token comment" style="color:#999988;font-style:italic">/* Scss Syntax with `--parser=css` */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">&gt; 2 | ::before </span><span class="token punctuation" style="color:#393A34">{</span><span class="token property" style="color:#36acaa">content</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">#{$foo}</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="graphql">GraphQL<a href="https://prettier.io/blog/2023/07/05/3.0.0#graphql" class="hash-link" aria-label="Direct link to GraphQL" title="Direct link to GraphQL" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="drop-support-for-comma-separated-interfaces-syntax-12835-by-fisker">Drop support for "comma separated interfaces" syntax (<a href="https://github.com/prettier/prettier/pull/12835" target="_blank" rel="noopener noreferrer" class="">#12835</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#drop-support-for-comma-separated-interfaces-syntax-12835-by-fisker" class="hash-link" aria-label="Direct link to drop-support-for-comma-separated-interfaces-syntax-12835-by-fisker" title="Direct link to drop-support-for-comma-separated-interfaces-syntax-12835-by-fisker" translate="no">​</a></h4>
<div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Type1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token attr-name" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">a</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Type1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">a</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token attr-name" style="color:#00a4db">SyntaxError</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token class-name">Syntax</span><span class="token plain"> </span><span class="token attr-name" style="color:#00a4db">Error</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token class-name">Unexpected</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">Name</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"B"</span><span class="token plain">. </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">26</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Type1</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token attr-name" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">a</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-1">API<a href="https://prettier.io/blog/2023/07/05/3.0.0#api-1" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="drop-support-for-nodejs-10-and-12-11830-by-fisker-13118-by-sosukesuzuki">Drop support for Node.js 10 and 12 (<a href="https://github.com/prettier/prettier/pull/11830" target="_blank" rel="noopener noreferrer" class="">#11830</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/prettier/prettier/pull/13118" target="_blank" rel="noopener noreferrer" class="">#13118</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#drop-support-for-nodejs-10-and-12-11830-by-fisker-13118-by-sosukesuzuki" class="hash-link" aria-label="Direct link to drop-support-for-nodejs-10-and-12-11830-by-fisker-13118-by-sosukesuzuki" title="Direct link to drop-support-for-nodejs-10-and-12-11830-by-fisker-13118-by-sosukesuzuki" translate="no">​</a></h4>
<p>The minimal required Node.js version is v14</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change-public-apis-to-asynchronous-12574-12788-12790-13265-by-fisker">Change public APIs to asynchronous (<a href="https://github.com/prettier/prettier/pull/12574" target="_blank" rel="noopener noreferrer" class="">#12574</a>, <a href="https://github.com/prettier/prettier/pull/12788" target="_blank" rel="noopener noreferrer" class="">#12788</a>, <a href="https://github.com/prettier/prettier/pull/12790" target="_blank" rel="noopener noreferrer" class="">#12790</a>, <a href="https://github.com/prettier/prettier/pull/13265" target="_blank" rel="noopener noreferrer" class="">#13265</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#change-public-apis-to-asynchronous-12574-12788-12790-13265-by-fisker" class="hash-link" aria-label="Direct link to change-public-apis-to-asynchronous-12574-12788-12790-13265-by-fisker" title="Direct link to change-public-apis-to-asynchronous-12574-12788-12790-13265-by-fisker" translate="no">​</a></h4>
<ul>
<li class=""><code>prettier.format()</code> returns <code>Promise&lt;string&gt;</code></li>
<li class=""><code>prettier.formatWithCursor()</code> returns <code>Promise&lt;{formatted: string, cursorOffset: number}&gt;</code></li>
<li class=""><code>prettier.formatAST()</code> returns <code>Promise&lt;string&gt;</code></li>
<li class=""><code>prettier.check()</code> returns <code>Promise&lt;boolean&gt;</code></li>
<li class=""><code>prettier.getSupportInfo()</code> returns <code>Promise</code></li>
<li class=""><code>prettier.clearConfigCache()</code> returns <code>Promise&lt;void&gt;</code></li>
<li class=""><code>prettier.resolveConfig.sync</code> is removed</li>
<li class=""><code>prettier.resolveConfigFile.sync</code> is removed</li>
<li class=""><code>prettier.getFileInfo.sync</code> is removed</li>
</ul>
<p>If you still need sync APIs, you can try <a href="https://github.com/prettier/prettier-synchronized" target="_blank" rel="noopener noreferrer" class=""><code>@prettier/sync</code></a></p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="npm-package-file-structures-changed-12740-by-fisker-13530-by-fisker-14570-by-fisker">Npm package file structures changed (<a href="https://github.com/prettier/prettier/pull/12740" target="_blank" rel="noopener noreferrer" class="">#12740</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/prettier/prettier/pull/13530" target="_blank" rel="noopener noreferrer" class="">#13530</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/prettier/prettier/pull/14570" target="_blank" rel="noopener noreferrer" class="">#14570</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#npm-package-file-structures-changed-12740-by-fisker-13530-by-fisker-14570-by-fisker" class="hash-link" aria-label="Direct link to npm-package-file-structures-changed-12740-by-fisker-13530-by-fisker-14570-by-fisker" title="Direct link to npm-package-file-structures-changed-12740-by-fisker-13530-by-fisker-14570-by-fisker" translate="no">​</a></h4>
<p>File structures changes:</p>
<ul>
<li class=""><code>bin-prettier.js</code> -&gt; <code>bin/prettier.cjs</code></li>
<li class=""><code>esm/standalone.mjs</code> -&gt; <code>standalone.mjs</code></li>
<li class=""><code>esm/parser-angular.mjs</code> -&gt; <code>plugins/angular.mjs</code></li>
<li class=""><code>parser-angular.js</code> -&gt; <code>plugins/angular.js</code></li>
<li class=""><code>esm/parser-babel.mjs</code> -&gt; <code>plugins/babel.mjs</code></li>
<li class=""><code>parser-babel.js</code> -&gt; <code>plugins/babel.js</code></li>
<li class=""><code>esm/parser-espree.mjs</code> -&gt; <code>plugins/acorn-and-espree.mjs</code></li>
<li class=""><code>parser-espree.js</code> -&gt; <code>plugins/acorn.js</code><br>
<!-- -->global object renamed <code>prettierPlugins.espree</code> -&gt; <code>prettierPlugins.acorn</code></li>
<li class=""><code>esm/parser-flow.mjs</code> -&gt; <code>plugins/flow.mjs</code></li>
<li class=""><code>parser-flow.js</code> -&gt; <code>plugins/flow.js</code></li>
<li class=""><code>esm/parser-glimmer.mjs</code> -&gt; <code>plugins/glimmer.mjs</code></li>
<li class=""><code>parser-glimmer.js</code> -&gt; <code>plugins/glimmer.js</code></li>
<li class=""><code>esm/parser-graphql.mjs</code> -&gt; <code>plugins/graphql.mjs</code></li>
<li class=""><code>parser-graphql.js</code> -&gt; <code>plugins/graphql.js</code></li>
<li class=""><code>esm/parser-html.mjs</code> -&gt; <code>plugins/html.mjs</code></li>
<li class=""><code>parser-html.js</code> -&gt; <code>plugins/html.js</code></li>
<li class=""><code>esm/parser-markdown.mjs</code> -&gt; <code>plugins/markdown.mjs</code></li>
<li class=""><code>parser-markdown.js</code> -&gt; <code>plugins/markdown.js</code></li>
<li class=""><code>esm/parser-meriyah.mjs</code> -&gt; <code>plugins/meriyah.mjs</code></li>
<li class=""><code>parser-meriyah.js</code> -&gt; <code>plugins/meriyah.js</code></li>
<li class=""><code>esm/parser-postcss.mjs</code> -&gt; <code>plugins/postcss.mjs</code></li>
<li class=""><code>parser-postcss.js</code> -&gt; <code>plugins/postcss.js</code></li>
<li class=""><code>esm/parser-typescript.mjs</code> -&gt; <code>plugins/typescript.mjs</code></li>
<li class=""><code>parser-typescript.js</code> -&gt; <code>plugins/typescript.js</code></li>
<li class=""><code>esm/parser-yaml.mjs</code> -&gt; <code>plugins/yaml.mjs</code></li>
<li class=""><code>parser-yaml.js</code> -&gt; <code>plugins/yaml.js</code></li>
</ul>
<p>Check full list on <a href="https://unpkg.com/browse/prettier@3.0.0/" target="_blank" rel="noopener noreferrer" class="">https://unpkg.com/browse/prettier@3.0.0/</a>.</p>
<p>A new plugin has been added:</p>
<ul>
<li class=""><code>plugins/estree.mjs</code> (ESM version)</li>
<li class=""><code>plugins/estree.js</code> (UMD version)</li>
</ul>
<p>If you use standalone version, this plugin should be loaded when printing JavaScript, TypeScript, Flow, or JSON.</p>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">import { format } from "prettier/standalone";</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49"> import prettierPluginBabel from "prettier/parser-babel";</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa"> import * as prettierPluginBabel from "prettier/plugins/babel";</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa"> import * as prettierPluginEstree from "prettier/plugins/estree";</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">console.log(</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">  format(code, {</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">  await format(code, {</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">     parser: "babel",</span><br></span><span class="token-line" style="color:#393A34"><span class="token unchanged line"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">     plugins: [prettierPluginBabel],</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">     plugins: [prettierPluginBabel, prettierPluginEstree],</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">  })</span><br></span><span class="token-line" style="color:#393A34"><span class="token unchanged line"></span><span class="token plain">);</span><br></span></code></pre></div></div>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49"> node ./node_modules/prettier/bin-prettier.js . --write</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa"> node ./node_modules/prettier/bin/prettier.cjs . --write</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-plugins-in-esm-13201-by-fisker">Support plugins in ESM (<a href="https://github.com/prettier/prettier/pull/13201" target="_blank" rel="noopener noreferrer" class="">#13201</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-plugins-in-esm-13201-by-fisker" class="hash-link" aria-label="Direct link to support-plugins-in-esm-13201-by-fisker" title="Direct link to support-plugins-in-esm-13201-by-fisker" translate="no">​</a></h4>
<p>Since v3.0.0, we load plugins via <code>import()</code> instead of <code>require()</code>, plugins can be ESM modules now.</p>
<p>If you use <code>--plugin</code> by directory path, or file path without extensions, the plugin may not able to load.</p>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49"> prettier . --plugin=path/to/my-plugin-directory</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa"> prettier . --plugin=path/to/my-plugin-directory/index.js</span><br></span></code></pre></div></div>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49"> prettier . --plugin=path/to/my-plugin-file</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa"> prettier . --plugin=path/to/my-plugin-file.js</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="update-prettierdoc-13203-14456-by-fisker">Update <code>prettier.doc</code> (<a href="https://github.com/prettier/prettier/pull/13203" target="_blank" rel="noopener noreferrer" class="">#13203</a>, <a href="https://github.com/prettier/prettier/pull/14456" target="_blank" rel="noopener noreferrer" class="">#14456</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#update-prettierdoc-13203-14456-by-fisker" class="hash-link" aria-label="Direct link to update-prettierdoc-13203-14456-by-fisker" title="Direct link to update-prettierdoc-13203-14456-by-fisker" translate="no">​</a></h4>
<p><code>prettier.doc.builders.concat</code> <a href="https://prettier.io/blog/2021/05/09/2.3.0.html#use-arrays-instead-of-concat-9733httpsgithubcomprettierprettierpull9733-by-fiskerhttpsgithubcomfisker-thorn0httpsgithubcomthorn0" target="_blank" rel="noopener noreferrer" class="">was deprecated in v2.3.0</a>, now it's removed.</p>
<p>The following apis are never documented, they mean to only use internally, now they are removed.</p>
<ul>
<li class=""><code>prettier.doc.utils.getDocParts</code></li>
<li class=""><code>prettier.doc.utils.propagateBreaks</code></li>
<li class=""><code>prettier.doc.utils.cleanDoc</code></li>
<li class=""><code>prettier.doc.utils.getDocType</code></li>
<li class=""><code>prettier.doc.debug.printDocToDebug</code></li>
</ul>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="texttodoc-trims-trailing-hard-lines-13220-by-fisker"><code>textToDoc</code> trims trailing hard lines (<a href="https://github.com/prettier/prettier/pull/13220" target="_blank" rel="noopener noreferrer" class="">#13220</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#texttodoc-trims-trailing-hard-lines-13220-by-fisker" class="hash-link" aria-label="Direct link to texttodoc-trims-trailing-hard-lines-13220-by-fisker" title="Direct link to texttodoc-trims-trailing-hard-lines-13220-by-fisker" translate="no">​</a></h4>
<p>Previously, in all core languages, after embedded code printed to <code>Doc</code>, we call <code>prettier.doc.utils.stripTrailingHardline()</code> to remove the trailing hard lines.</p>
<p>We believe make <code>textToDoc</code> return docs without trailing hard lines makes the plugins easier to do <code>embed</code> print.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="removed-support-for-custom-parser-api-13250-by-fisker-and-thorn0">Removed support for custom parser api (<a href="https://github.com/prettier/prettier/pull/13250" target="_blank" rel="noopener noreferrer" class="">#13250</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a> and <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#removed-support-for-custom-parser-api-13250-by-fisker-and-thorn0" class="hash-link" aria-label="Direct link to removed-support-for-custom-parser-api-13250-by-fisker-and-thorn0" title="Direct link to removed-support-for-custom-parser-api-13250-by-fisker-and-thorn0" translate="no">​</a></h4>
<p>Before <a class="" href="https://prettier.io/docs/plugins">plugins</a> were a thing, Prettier had a similar but more limited feature called custom parsers. It’s been removed in v3.0.0 as its functionality was a subset of what the Plugin API did. If you used it, please check <a class="" href="https://prettier.io/docs/api#custom-parser-api-removed">how to migrate</a>.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-second-argument-parsers-passed-to-parsersparse-has-been-removed-13268-by-fisker">The second argument <code>parsers</code> passed to <code>parsers.parse</code> has been removed (<a href="https://github.com/prettier/prettier/pull/13268" target="_blank" rel="noopener noreferrer" class="">#13268</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#the-second-argument-parsers-passed-to-parsersparse-has-been-removed-13268-by-fisker" class="hash-link" aria-label="Direct link to the-second-argument-parsers-passed-to-parsersparse-has-been-removed-13268-by-fisker" title="Direct link to the-second-argument-parsers-passed-to-parsersparse-has-been-removed-13268-by-fisker" translate="no">​</a></h4>
<p>The plugin's <code>print</code> function signature changed from</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">parse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">text</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> parsers</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> object</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> options</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> object</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">AST</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>to</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">parse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">text</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> options</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> object</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">Promise</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">AST</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">AST</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>The second argument <code>parsers</code> has been removed, if you still need other parser during parse process, you can:</p>
<ol>
<li class="">
<p>Import the plugin yourself (recommended)</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports operator" style="color:#393A34">*</span><span class="token imports"> </span><span class="token imports keyword module" style="color:#00009f">as</span><span class="token imports"> prettierPluginBabel</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"prettier/plugins/babel"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> myCustomPlugin </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">parsers</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string-property property" style="color:#36acaa">"my-custom-parser"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">parse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">text</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> ast </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettierPluginBabel</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">parsers</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">babel</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">parse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">text</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ast</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">program</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">body</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">expression</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">callee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">name</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"_"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> ast</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token literal-property property" style="color:#36acaa">astFormat</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"estree"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Get the parser from the <code>options</code> argument</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">getParserFromOptions</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">options</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> parserName</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> parserOrParserInitFunction </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> options</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">plugins</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">find</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">plugin</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> plugin</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">parsers</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> </span><span class="token known-class-name class-name">Object</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">hasOwn</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">plugin</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">parsers</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> parserName</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">parsers</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">parserName</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">typeof</span><span class="token plain"> parserOrParserInitFunction </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"function"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">parserOrParserInitFunction</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> parserOrParserInitFunction</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> myCustomPlugin </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">parsers</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string-property property" style="color:#36acaa">"my-custom-parser"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">parse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">text</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> options</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> babelParser </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">getParserFromOptions</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">options</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"babel"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> ast </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> babelParser</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">parse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">text</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ast</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">program</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">body</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">expression</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">callee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">name</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"_"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> ast</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token literal-property property" style="color:#36acaa">astFormat</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"estree"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
</li>
</ol>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="undefined-and-null-are-not-passed-to-plugins-print-function-13397-by-fisker"><code>undefined</code> and <code>null</code> are not passed to plugin's <code>print</code> function (<a href="https://github.com/prettier/prettier/pull/13397" target="_blank" rel="noopener noreferrer" class="">#13397</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#undefined-and-null-are-not-passed-to-plugins-print-function-13397-by-fisker" class="hash-link" aria-label="Direct link to undefined-and-null-are-not-passed-to-plugins-print-function-13397-by-fisker" title="Direct link to undefined-and-null-are-not-passed-to-plugins-print-function-13397-by-fisker" translate="no">​</a></h4>
<p>If your plugin happened to use <code>print</code> to print them, please check them in the parent node instead.</p>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">function print(path, print) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">  const value = path.getValue();</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">  if (!value?.type) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">    return String(value);</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">  }</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">  return path.map(print, "values");</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">  return path.map(({node}) =&gt; (node?.type ? print() : String(node)), "values");</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token plain">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="allow-using-arbitrary-truthy-values-for-label-docs-13532-by-thorn0">Allow using arbitrary truthy values for <code>label</code> docs (<a href="https://github.com/prettier/prettier/pull/13532" target="_blank" rel="noopener noreferrer" class="">#13532</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#allow-using-arbitrary-truthy-values-for-label-docs-13532-by-thorn0" class="hash-link" aria-label="Direct link to allow-using-arbitrary-truthy-values-for-label-docs-13532-by-thorn0" title="Direct link to allow-using-arbitrary-truthy-values-for-label-docs-13532-by-thorn0" translate="no">​</a></h4>
<p>The <code>label</code> doc builder has been changed. See the <a href="https://github.com/prettier/prettier/blob/main/commands.md#label" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="getfileinfo-resolves-config-by-default-14108-by-fisker"><code>getFileInfo()</code> resolves config by default (<a href="https://github.com/prettier/prettier/pull/14108" target="_blank" rel="noopener noreferrer" class="">#14108</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#getfileinfo-resolves-config-by-default-14108-by-fisker" class="hash-link" aria-label="Direct link to getfileinfo-resolves-config-by-default-14108-by-fisker" title="Direct link to getfileinfo-resolves-config-by-default-14108-by-fisker" translate="no">​</a></h4>
<p><code>options.resolveConfig</code> default to <code>true</code> now, see the <a href="https://prettier.io/docs/api#prettiergetfileinfofilepath--options" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="plugin-search-feature-has-been-removed-14759-by-fisker">Plugin search feature has been removed (<a href="https://github.com/prettier/prettier/pull/14759" target="_blank" rel="noopener noreferrer" class="">#14759</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#plugin-search-feature-has-been-removed-14759-by-fisker" class="hash-link" aria-label="Direct link to plugin-search-feature-has-been-removed-14759-by-fisker" title="Direct link to plugin-search-feature-has-been-removed-14759-by-fisker" translate="no">​</a></h4>
<p>The plugin auto search feature didn't work well when using pnpm, and cause slowness.</p>
<p><code>--plugin-search-dir</code>, <code>--no-plugin-search</code> flags for CLI and <code>pluginSearchDirs</code> in API options has been removed in Prettier 3.0.</p>
<p><code>--plugin</code> flag and <code>plugins</code> option should be used instead, see <a href="https://prettier.io/docs/plugins#using-plugins" target="_blank" rel="noopener noreferrer" class="">documentation</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://prettier.io/blog/2023/07/05/3.0.0#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="ignore-gitignored-files-by-default-14731-by-fisker">Ignore <code>.gitignore</code>d files by default (<a href="https://github.com/prettier/prettier/pull/14731" target="_blank" rel="noopener noreferrer" class="">#14731</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#ignore-gitignored-files-by-default-14731-by-fisker" class="hash-link" aria-label="Direct link to ignore-gitignored-files-by-default-14731-by-fisker" title="Direct link to ignore-gitignored-files-by-default-14731-by-fisker" translate="no">​</a></h4>
<p>Prettier ignores files ignored by <code>.gitignore</code> by default.
If you want the old behavior(only ignore files ignored by <code>.prettierignore</code>), use</p>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier . --write --ignore-path=.prettierignore</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2023/07/05/3.0.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript-1">JavaScript<a href="https://prettier.io/blog/2023/07/05/3.0.0#javascript-1" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-the-decorated-function-pattern-10714-by-thorn0">Support the "decorated function" pattern (<a href="https://github.com/prettier/prettier/pull/10714" target="_blank" rel="noopener noreferrer" class="">#10714</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-the-decorated-function-pattern-10714-by-thorn0" class="hash-link" aria-label="Direct link to support-the-decorated-function-pattern-10714-by-thorn0" title="Direct link to support-the-decorated-function-pattern-10714-by-thorn0" translate="no">​</a></h4>
<p>In this case the developer is usually willing to sacrifice the readability of the arrow function's signature to get less indentation in its body. Prettier now recognizes this pattern and keeps the arrow function hugged even if the signature breaks.</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> Counter </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">decorator</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"my-counter"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">props</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> initialCount</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> label</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// ...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> Counter </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">decorator</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"my-counter"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">props</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  initialCount</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  label</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// ...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-cursor-positioning-for-files-containing-emoji-13340-by-fisker">Fix cursor positioning for files containing emoji (<a href="https://github.com/prettier/prettier/pull/13340" target="_blank" rel="noopener noreferrer" class="">#13340</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-cursor-positioning-for-files-containing-emoji-13340-by-fisker" class="hash-link" aria-label="Direct link to fix-cursor-positioning-for-files-containing-emoji-13340-by-fisker" title="Direct link to fix-cursor-positioning-for-files-containing-emoji-13340-by-fisker" translate="no">​</a></h4>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ cat test.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">const { formatWithCursor } = await import("prettier");</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">const code = "'😀😀😀😀'";</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">await formatWithCursor(code, {parser: "babel", cursorOffset: 9})</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 2.8</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ node test.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{ formatted: '"😀😀😀😀";\n', cursorOffset: 5, comments: [] }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 3.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ node test.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{ formatted: '"😀😀😀😀";\n', cursorOffset: 9, comments: [] }</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-edge-cases-of-the-first-call-argument-expansion-13341-by-thorn0">Fix edge cases of the first call argument expansion (<a href="https://github.com/prettier/prettier/pull/13341" target="_blank" rel="noopener noreferrer" class="">#13341</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-edge-cases-of-the-first-call-argument-expansion-13341-by-thorn0" class="hash-link" aria-label="Direct link to fix-edge-cases-of-the-first-call-argument-expansion-13341-by-thorn0" title="Direct link to fix-edge-cases-of-the-first-call-argument-expansion-13341-by-thorn0" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">whatever</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> </span><span class="token parameter punctuation" style="color:#393A34">{</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter">  </span><span class="token parameter literal-property property" style="color:#36acaa">aaaaaaaaa</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">;</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter">  </span><span class="token parameter literal-property property" style="color:#36acaa">bbbbbbbbb</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">;</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter">  </span><span class="token parameter literal-property property" style="color:#36acaa">ccccccccc</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">;</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter"></span><span class="token parameter punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword null nil" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"xyz"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">function</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"> $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"> $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"> $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"> $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"> $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"> $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"> $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"> $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'test'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">whatever</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> </span><span class="token parameter punctuation" style="color:#393A34">{</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter">  </span><span class="token parameter literal-property property" style="color:#36acaa">aaaaaaaaa</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">;</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter">  </span><span class="token parameter literal-property property" style="color:#36acaa">bbbbbbbbb</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">;</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter">  </span><span class="token parameter literal-property property" style="color:#36acaa">ccccccccc</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">;</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter"></span><span class="token parameter punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword null nil" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token string" style="color:#e3116c">"xyz"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"test"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">whatever</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> </span><span class="token parameter punctuation" style="color:#393A34">{</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter">  </span><span class="token parameter literal-property property" style="color:#36acaa">aaaaaaaaa</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter">  </span><span class="token parameter literal-property property" style="color:#36acaa">bbbbbbbbb</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter">  </span><span class="token parameter literal-property property" style="color:#36acaa">ccccccccc</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"></span><br></span><span class="token-line" style="color:#393A34"><span class="token parameter"></span><span class="token parameter punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword null nil" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"xyz"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    $</span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-indentation-of-arrow-function-chains-in-call-arguments-and-binary-expressions-13391-by-thorn0">Fix indentation of arrow function chains in call arguments and binary expressions (<a href="https://github.com/prettier/prettier/pull/13391" target="_blank" rel="noopener noreferrer" class="">#13391</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-indentation-of-arrow-function-chains-in-call-arguments-and-binary-expressions-13391-by-thorn0" class="hash-link" aria-label="Direct link to fix-indentation-of-arrow-function-chains-in-call-arguments-and-binary-expressions-13391-by-thorn0" title="Direct link to fix-indentation-of-arrow-function-chains-in-call-arguments-and-binary-expressions-13391-by-thorn0" translate="no">​</a></h4>
<p>The motivation behind the chosen formatting is to make it clear how many arguments the call has.
However, there was a bug with the indentation of the first signature in the chain if that signature didn't fit on one line.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">askTrovenaBeenaDependsRowans</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  glimseGlyphsHazardNoopsTieTie</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      averredBathersBoxroomBuggyNurl</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      anodyneCondosMalateOverateRetinol </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"default"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">annularCooeedSplicesWalksWayWay</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">kochabCooieGameOnOboleUnweave</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      abugidicRomanocastorProvider</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  weaponizedStellatedOctahedron</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">askTrovenaBeenaDependsRowans</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  glimseGlyphsHazardNoopsTieTie</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    averredBathersBoxroomBuggyNurl</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    anodyneCondosMalateOverateRetinol </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"default"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">annularCooeedSplicesWalksWayWay</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">kochabCooieGameOnOboleUnweave</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      abugidicRomanocastorProvider</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  weaponizedStellatedOctahedron</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dont-break-signature-of-hugged-function-expression-if-parameters-are-identifiers-without-types-13410-by-thorn0">Don't break signature of hugged function expression if parameters are identifiers without types (<a href="https://github.com/prettier/prettier/pull/13410" target="_blank" rel="noopener noreferrer" class="">#13410</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#dont-break-signature-of-hugged-function-expression-if-parameters-are-identifiers-without-types-13410-by-thorn0" class="hash-link" aria-label="Direct link to dont-break-signature-of-hugged-function-expression-if-parameters-are-identifiers-without-types-13410-by-thorn0" title="Direct link to dont-break-signature-of-hugged-function-expression-if-parameters-are-identifiers-without-types-13410-by-thorn0" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">Link</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token generic-function function" style="color:#d73a49">forwardRef</span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name">HTMLAnchorElement</span><span class="token generic-function generic class-name punctuation" style="color:#393A34">,</span><span class="token generic-function generic class-name"> LinkProps</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">Link</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  props</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ref</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">ThemeUILink</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">ref</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">ref</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">variant</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">default</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag spread punctuation" style="color:#393A34">{</span><span class="token tag spread operator" style="color:#393A34">...</span><span class="token tag spread" style="color:#00009f">props</span><span class="token tag spread punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">Link</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token generic-function function" style="color:#d73a49">forwardRef</span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name">HTMLAnchorElement</span><span class="token generic-function generic class-name punctuation" style="color:#393A34">,</span><span class="token generic-function generic class-name"> LinkProps</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">Link</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">props</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> ref</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">ThemeUILink</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">ref</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">ref</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">variant</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">default</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag spread punctuation" style="color:#393A34">{</span><span class="token tag spread operator" style="color:#393A34">...</span><span class="token tag spread" style="color:#00009f">props</span><span class="token tag spread punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-interleaved-comments-13438-by-thorn0">Fix interleaved comments (<a href="https://github.com/prettier/prettier/pull/13438" target="_blank" rel="noopener noreferrer" class="">#13438</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-interleaved-comments-13438-by-thorn0" class="hash-link" aria-label="Direct link to fix-interleaved-comments-13438-by-thorn0" title="Direct link to fix-interleaved-comments-13438-by-thorn0" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">x</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// first</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// second</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">x</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// first // second</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">x</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// first</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// second</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-nestled-jsdoc-comments-13445-by-thorn0">Support nestled JSDoc comments (<a href="https://github.com/prettier/prettier/pull/13445" target="_blank" rel="noopener noreferrer" class="">#13445</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-nestled-jsdoc-comments-13445-by-thorn0" class="hash-link" aria-label="Direct link to support-nestled-jsdoc-comments-13445-by-thorn0" title="Direct link to support-nestled-jsdoc-comments-13445-by-thorn0" translate="no">​</a></h4>
<p>This kind of comments is used to document overloaded functions (see <a href="https://github.com/jsdoc/jsdoc/issues/1017" target="_blank" rel="noopener noreferrer" class="">https://github.com/jsdoc/jsdoc/issues/1017</a>).</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/**</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @template T</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @param {Type} type</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @param {T} value</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @return {Value}</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> */</span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/**</span><br></span><span class="token-line" style="color:#393A34"><span class="token doc-comment comment" style="color:#999988;font-style:italic"> * </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@param</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">Type</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment parameter" style="color:#999988;font-style:italic">type</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"></span><br></span><span class="token-line" style="color:#393A34"><span class="token doc-comment comment" style="color:#999988;font-style:italic"> * </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@return</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">Value</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"></span><br></span><span class="token-line" style="color:#393A34"><span class="token doc-comment comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">value</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">type</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">arguments</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">ConcreteValue</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">type</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">Value</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">type</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/**</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @template T</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @param {Type} type</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @param {T} value</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @return {Value}</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/**</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @param {Type} type</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @return {Value}</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">value</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">type</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">arguments</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">ConcreteValue</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">type</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">Value</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">type</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/**</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @template T</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @param {Type} type</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @param {T} value</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @return {Value}</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> */</span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/**</span><br></span><span class="token-line" style="color:#393A34"><span class="token doc-comment comment" style="color:#999988;font-style:italic"> * </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@param</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">Type</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment parameter" style="color:#999988;font-style:italic">type</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"></span><br></span><span class="token-line" style="color:#393A34"><span class="token doc-comment comment" style="color:#999988;font-style:italic"> * </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@return</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">Value</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"></span><br></span><span class="token-line" style="color:#393A34"><span class="token doc-comment comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">value</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">type</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">arguments</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">ConcreteValue</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">type</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">Value</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">type</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-unstable-template-literals-with-embedded-languages-13532-by-thorn0">Fix unstable template literals with embedded languages (<a href="https://github.com/prettier/prettier/pull/13532" target="_blank" rel="noopener noreferrer" class="">#13532</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-unstable-template-literals-with-embedded-languages-13532-by-thorn0" class="hash-link" aria-label="Direct link to fix-unstable-template-literals-with-embedded-languages-13532-by-thorn0" title="Direct link to fix-unstable-template-literals-with-embedded-languages-13532-by-thorn0" translate="no">​</a></h4>
<p>If a template literal with embedded syntax is the only argument of a call or the body of an arrow function and has leading and trailing whitespace, it won't be printed on a new line.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token comment" style="color:#999988;font-style:italic">/* HTML */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"> &lt;!-- bar1 --&gt; bar &lt;!-- bar2 --&gt; </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8 (first output)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">/* HTML */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    &lt;!-- bar1 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    bar</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    &lt;!-- bar2 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8 (second output)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token comment" style="color:#999988;font-style:italic">/* HTML */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  &lt;!-- bar1 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  bar</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  &lt;!-- bar2 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0 (first output)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token comment" style="color:#999988;font-style:italic">/* HTML */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  &lt;!-- bar1 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  bar</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  &lt;!-- bar2 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-indention-of-expressions-in-template-literals-13621-by-fisker">Fix indention of expressions in template literals (<a href="https://github.com/prettier/prettier/pull/13621" target="_blank" rel="noopener noreferrer" class="">#13621</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-indention-of-expressions-in-template-literals-13621-by-fisker" class="hash-link" aria-label="Direct link to fix-indention-of-expressions-in-template-literals-13621-by-fisker" title="Direct link to fix-indention-of-expressions-in-template-literals-13621-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">              1. Go to </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">green</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">underline</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation constant" style="color:#36acaa">FOO_LINK</span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">              2. Click "</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">green</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">                </span><span class="token template-string interpolation string" style="color:#e3116c">"Run workflow"</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">              </span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">" button, type "</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">yellow</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">underline</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">                version</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">              </span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">", hit the "</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">bgGreen</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation string" style="color:#e3116c">"Run workflow"</span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">" button.</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">              1. Go to </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">green</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">underline</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation constant" style="color:#36acaa">FOO_LINK</span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">              2. Click "</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">green</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">                </span><span class="token template-string interpolation string" style="color:#e3116c">"Run workflow"</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">              </span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">" button, type "</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">yellow</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">underline</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">  version</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation"></span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">", hit the "</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">bgGreen</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation string" style="color:#e3116c">"Run workflow"</span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">" button.</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">              1. Go to </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">green</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">underline</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation constant" style="color:#36acaa">FOO_LINK</span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">              2. Click "</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">green</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">                </span><span class="token template-string interpolation string" style="color:#e3116c">"Run workflow"</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">              </span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">" button, type "</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation property-access">yellow</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">underline</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">                version</span><span class="token template-string interpolation punctuation" style="color:#393A34">,</span><span class="token template-string interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string interpolation">              </span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">", hit the "</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">chalk</span><span class="token template-string interpolation punctuation" style="color:#393A34">.</span><span class="token template-string interpolation method function property-access" style="color:#d73a49">bgGreen</span><span class="token template-string interpolation punctuation" style="color:#393A34">(</span><span class="token template-string interpolation string" style="color:#e3116c">"Run workflow"</span><span class="token template-string interpolation punctuation" style="color:#393A34">)</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">" button.</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-support-for-explicit-resource-management-proposal-13752-by-fisker-14862-by-sosukesuzuki">Add support for "Explicit Resource Management" proposal (<a href="https://github.com/prettier/prettier/pull/13752" target="_blank" rel="noopener noreferrer" class="">#13752</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/prettier/prettier/pull/14862" target="_blank" rel="noopener noreferrer" class="">#14862</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#add-support-for-explicit-resource-management-proposal-13752-by-fisker-14862-by-sosukesuzuki" class="hash-link" aria-label="Direct link to add-support-for-explicit-resource-management-proposal-13752-by-fisker-14862-by-sosukesuzuki" title="Direct link to add-support-for-explicit-resource-management-proposal-13752-by-fisker-14862-by-sosukesuzuki" translate="no">​</a></h4>
<p>The Stage 2 proposal <a href="https://github.com/tc39/proposal-explicit-resource-management/" target="_blank" rel="noopener noreferrer" class="">"Explicit Resource Management"</a> is now supported via Babel <a href="https://babeljs.io/blog/2022/10/27/7.20.0" target="_blank" rel="noopener noreferrer" class="">7.20.0</a> and <a href="https://babeljs.io/blog/2023/05/26/7.22.0" target="_blank" rel="noopener noreferrer" class="">7.22.0</a>.</p>
<p>Also keep in mind our <a href="https://prettier.io/docs/rationale#disclaimer-about-non-standard-syntax" target="_blank" rel="noopener noreferrer" class="">policy on non-standardized syntax</a> before using this proposed syntax feature with Prettier.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Examples</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  using obj </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">g</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// block-scoped declaration</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> r </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> obj</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">next</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// calls finally blocks in `g`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> using obj </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">g</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// block-scoped declaration</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> r </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> obj</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">next</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// calls finally blocks in `g`</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-support-for-import-reflection-proposal-13771-by-fisker">Add support for "Import Reflection" proposal (<a href="https://github.com/prettier/prettier/pull/13771" target="_blank" rel="noopener noreferrer" class="">#13771</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#add-support-for-import-reflection-proposal-13771-by-fisker" class="hash-link" aria-label="Direct link to add-support-for-import-reflection-proposal-13771-by-fisker" title="Direct link to add-support-for-import-reflection-proposal-13771-by-fisker" translate="no">​</a></h4>
<p>The Stage 2 proposal <a href="https://github.com/tc39/proposal-import-reflection" target="_blank" rel="noopener noreferrer" class="">"Import Reflection"</a> is now supported via Babel 7.20.0. Also keep in mind our <a href="https://prettier.io/docs/rationale#disclaimer-about-non-standard-syntax" target="_blank" rel="noopener noreferrer" class="">policy on non-standardized syntax</a> before using this proposed syntax feature with Prettier.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Examples</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> module x </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;specifier&gt;"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-inconsistent-between-arraytuple-and-objectrecord-14065-by-fisker">Fix inconsistent between array/tuple and object/record (<a href="https://github.com/prettier/prettier/pull/14065" target="_blank" rel="noopener noreferrer" class="">#14065</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-inconsistent-between-arraytuple-and-objectrecord-14065-by-fisker" class="hash-link" aria-label="Direct link to fix-inconsistent-between-arraytuple-and-objectrecord-14065-by-fisker" title="Direct link to fix-inconsistent-between-arraytuple-and-objectrecord-14065-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">#</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">#</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">#</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">#</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">#</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">b</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">c</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">#</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> n</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> o </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-cursor-tracking-inside-jsx-text-14163-by-fisker">Fix cursor tracking inside JSX Text (<a href="https://github.com/prettier/prettier/pull/14163" target="_blank" rel="noopener noreferrer" class="">#14163</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-cursor-tracking-inside-jsx-text-14163-by-fisker" class="hash-link" aria-label="Direct link to fix-cursor-tracking-inside-jsx-text-14163-by-fisker" title="Direct link to fix-cursor-tracking-inside-jsx-text-14163-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">formatWithCursor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"&lt;&gt;a"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"  &lt;div&gt;hi&lt;/div&gt;"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;/&gt;"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">join</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"\n"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">cursorOffset</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"babel"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">cursorOffset</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// -&gt; 2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">formatWithCursor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"&lt;&gt;a"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"  &lt;div&gt;hi&lt;/div&gt;"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;/&gt;"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">join</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"\n"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">cursorOffset</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"babel"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">cursorOffset</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// -&gt; 6</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="avoid-unnecessarily-indenting-nested-await-expressions-14192-by-thorn0">Avoid unnecessarily indenting nested <code>await</code> expressions (<a href="https://github.com/prettier/prettier/pull/14192" target="_blank" rel="noopener noreferrer" class="">#14192</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#avoid-unnecessarily-indenting-nested-await-expressions-14192-by-thorn0" class="hash-link" aria-label="Direct link to avoid-unnecessarily-indenting-nested-await-expressions-14192-by-thorn0" title="Direct link to avoid-unnecessarily-indenting-nested-await-expressions-14192-by-thorn0" translate="no">​</a></h4>
<p>A refinement of <a href="https://prettier.io/blog/2021/05/09/2.3.0.html#improve-formatting-for-nested-await-expressions-in-heads-of-member-and-call-expressions-10342httpsgithubcomprettierprettierpull10342-by-thorn0httpsgithubcomthorn0" target="_blank" rel="noopener noreferrer" class="">this change in v2.3</a>. Sometimes there is no need to force indentation of nested <code>await</code> expressions.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token known-class-name class-name">Promise</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">all</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">readdir</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"src"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">path</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">./</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">path</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token known-class-name class-name">Promise</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">all</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">readdir</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"src"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">path</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">./</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">path</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-regexp-modifiers-proposal-14391-by-fisker">Support regexp modifiers proposal (<a href="https://github.com/prettier/prettier/pull/14391" target="_blank" rel="noopener noreferrer" class="">#14391</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-regexp-modifiers-proposal-14391-by-fisker" class="hash-link" aria-label="Direct link to support-regexp-modifiers-proposal-14391-by-fisker" title="Direct link to support-regexp-modifiers-proposal-14391-by-fisker" translate="no">​</a></h4>
<p>See <a href="https://github.com/tc39/proposal-regexp-modifiers" target="_blank" rel="noopener noreferrer" class="">Regular Expression Pattern Modifiers for ECMAScript</a>.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-missing-parentheses-and-semicolons-around-prettier-ignored-nodes-14406-by-fisker">Fix missing parentheses and semicolons around <code>prettier-ignore</code>d nodes (<a href="https://github.com/prettier/prettier/pull/14406" target="_blank" rel="noopener noreferrer" class="">#14406</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-missing-parentheses-and-semicolons-around-prettier-ignored-nodes-14406-by-fisker" class="hash-link" aria-label="Direct link to fix-missing-parentheses-and-semicolons-around-prettier-ignored-nodes-14406-by-fisker" title="Direct link to fix-missing-parentheses-and-semicolons-around-prettier-ignored-nodes-14406-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">request</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fetch</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">request</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fetch</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">request</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fetch</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">url</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">bar</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> baz</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">forEach</span><span class="token punctuation" style="color:#393A34">(</span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">log</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8 (--no-semi)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">bar</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> baz</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">forEach</span><span class="token punctuation" style="color:#393A34">(</span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">log</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">bar</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> baz</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">forEach</span><span class="token punctuation" style="color:#393A34">(</span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">log</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="remove-unnecessary-parentheses-around-class-expression-14409-by-fisker">Remove unnecessary parentheses around class expression (<a href="https://github.com/prettier/prettier/pull/14409" target="_blank" rel="noopener noreferrer" class="">#14409</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#remove-unnecessary-parentheses-around-class-expression-14409-by-fisker" class="hash-link" aria-label="Direct link to remove-unnecessary-parentheses-around-class-expression-14409-by-fisker" title="Direct link to remove-unnecessary-parentheses-around-class-expression-14409-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @dec </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    @dec</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @dec</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-parentheses-to-head-of-expressionstatement-instead-of-the-whole-statement-14599-by-fisker">Add parentheses to head of <code>ExpressionStatement</code> instead of the whole statement (<a href="https://github.com/prettier/prettier/pull/14599" target="_blank" rel="noopener noreferrer" class="">#14599</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#add-parentheses-to-head-of-expressionstatement-instead-of-the-whole-statement-14599-by-fisker" class="hash-link" aria-label="Direct link to add-parentheses-to-head-of-expressionstatement-instead-of-the-whole-statement-14599-by-fisker" title="Direct link to add-parentheses-to-head-of-expressionstatement-instead-of-the-whole-statement-14599-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">isArray</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">object</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"[object Array]"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">isArray</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">object</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"[object Array]"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">isArray</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">object</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">toString</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">call</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"[object Array]"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-consistency-between-curried-and-non-curried-arrow-function-14633-by-seiyab-fisker">Improve consistency between curried and non-curried arrow function (<a href="https://github.com/prettier/prettier/pull/14633" target="_blank" rel="noopener noreferrer" class="">#14633</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#improve-consistency-between-curried-and-non-curried-arrow-function-14633-by-seiyab-fisker" class="hash-link" aria-label="Direct link to improve-consistency-between-curried-and-non-curried-arrow-function-14633-by-seiyab-fisker" title="Direct link to improve-consistency-between-curried-and-non-curried-arrow-function-14633-by-seiyab-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token constant" style="color:#36acaa">Y</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> b </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> c</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token constant" style="color:#36acaa">Y</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> b </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> c</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token constant" style="color:#36acaa">Y</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> b </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> c</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token constant" style="color:#36acaa">Y</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> b </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> c</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token constant" style="color:#36acaa">Y</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> b </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> c</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token constant" style="color:#36acaa">Y</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> b </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> c</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-empty-line-check-between-array-elements-14736-by-solarized-fox">Fix empty line check between array elements (<a href="https://github.com/prettier/prettier/pull/14736" target="_blank" rel="noopener noreferrer" class="">#14736</a> by <a href="https://github.com/solarized-fox" target="_blank" rel="noopener noreferrer" class="">@solarized-fox</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-empty-line-check-between-array-elements-14736-by-solarized-fox" class="hash-link" aria-label="Direct link to fix-empty-line-check-between-array-elements-14736-by-solarized-fox" title="Direct link to fix-empty-line-check-between-array-elements-14736-by-solarized-fox" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  c </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  c</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  c</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-trailing-comments-in-function-parameters-for-all-param-types-14835-by-pieterv">Support trailing comments in function parameters for all param types (<a href="https://github.com/prettier/prettier/pull/14835" target="_blank" rel="noopener noreferrer" class="">#14835</a> by <a href="https://github.com/pieterv" target="_blank" rel="noopener noreferrer" class="">@pieterv</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-trailing-comments-in-function-parameters-for-all-param-types-14835-by-pieterv" class="hash-link" aria-label="Direct link to support-trailing-comments-in-function-parameters-for-all-param-types-14835-by-pieterv" title="Direct link to support-trailing-comments-in-function-parameters-for-all-param-types-14835-by-pieterv" translate="no">​</a></h4>
<p>Support function parameter trailing comments for <code>RestElement</code>, <code>ArrayPattern</code> and <code>ObjectPattern</code> parameter node types.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">Foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token spread operator" style="color:#393A34">...</span><span class="token plain">bar</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// Trailing comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">Foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter spread operator" style="color:#393A34">...</span><span class="token parameter">bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Trailing comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:#d73a49">Foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token spread operator" style="color:#393A34">...</span><span class="token plain">bar</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// Trailing comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-import-attributes-14861-14863-by-sosukesuzuki">Support Import Attributes (<a href="https://github.com/prettier/prettier/pull/14861" target="_blank" rel="noopener noreferrer" class="">#14861</a>, <a href="https://github.com/prettier/prettier/pull/14863" target="_blank" rel="noopener noreferrer" class="">#14863</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-import-attributes-14861-14863-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-import-attributes-14861-14863-by-sosukesuzuki" title="Direct link to support-import-attributes-14861-14863-by-sosukesuzuki" translate="no">​</a></h4>
<p>Support <a href="https://github.com/tc39/proposal-import-attributes" target="_blank" rel="noopener noreferrer" class="">Import Attributes</a> proposal.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">json</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./foo.json"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./foo.json"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">with</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2023/07/05/3.0.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-leading-comments-in-mapped-types-with-readonly-13427-by-thorn0-sosukesuzuki">Fix leading comments in mapped types with <code>readonly</code> (<a href="https://github.com/prettier/prettier/pull/13427" target="_blank" rel="noopener noreferrer" class="">#13427</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>, <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-leading-comments-in-mapped-types-with-readonly-13427-by-thorn0-sosukesuzuki" class="hash-link" aria-label="Direct link to fix-leading-comments-in-mapped-types-with-readonly-13427-by-thorn0-sosukesuzuki" title="Direct link to fix-leading-comments-in-mapped-types-with-readonly-13427-by-thorn0-sosukesuzuki" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Type</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token maybe-class-name">Foo</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Type</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token maybe-class-name">Foo</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Type</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token maybe-class-name">Foo</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="consistent-dangling-comments-formatting-for-tuple-types-and-arrays-13608-by-sosukesuzuki">Consistent dangling comments formatting for tuple types and arrays (<a href="https://github.com/prettier/prettier/pull/13608" target="_blank" rel="noopener noreferrer" class="">#13608</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#consistent-dangling-comments-formatting-for-tuple-types-and-arrays-13608-by-sosukesuzuki" class="hash-link" aria-label="Direct link to consistent-dangling-comments-formatting-for-tuple-types-and-arrays-13608-by-sosukesuzuki" title="Direct link to consistent-dangling-comments-formatting-for-tuple-types-and-arrays-13608-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token comment" style="color:#999988;font-style:italic">// comment];</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-union-type-should-be-printed-in-the-multi-line-variant-when-there-are-comments-13860-by-perfectpan">Fix union type should be printed in the multi-line variant when there are comments (<a href="https://github.com/prettier/prettier/pull/13860" target="_blank" rel="noopener noreferrer" class="">#13860</a> by <a href="https://github.com/PerfectPan" target="_blank" rel="noopener noreferrer" class="">@PerfectPan</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-union-type-should-be-printed-in-the-multi-line-variant-when-there-are-comments-13860-by-perfectpan" class="hash-link" aria-label="Direct link to fix-union-type-should-be-printed-in-the-multi-line-variant-when-there-are-comments-13860-by-perfectpan" title="Direct link to fix-union-type-should-be-printed-in-the-multi-line-variant-when-there-are-comments-13860-by-perfectpan" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">FooBar</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token known-class-name class-name">Number</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// this documents the first option</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// this documents the second option</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">FooBar</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token known-class-name class-name">Number</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// this documents the first option // this documents the second option</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">FooBar</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token known-class-name class-name">Number</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// this documents the first option</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// this documents the second option</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-comment-print-and-cursor-tracking-around-type-annotation-14171-by-fisker">Improve comment print and cursor tracking around type annotation (<a href="https://github.com/prettier/prettier/pull/14171" target="_blank" rel="noopener noreferrer" class="">#14171</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#improve-comment-print-and-cursor-tracking-around-type-annotation-14171-by-fisker" class="hash-link" aria-label="Direct link to improve-comment-print-and-cursor-tracking-around-type-annotation-14171-by-fisker" title="Direct link to improve-comment-print-and-cursor-tracking-around-type-annotation-14171-by-fisker" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> foo </span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> foo</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Same</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">as</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">input</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">formatWithCursor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"let foo: number"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">cursorOffset</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">7</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"babel"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">cursorOffset</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// -&gt; 9</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">formatWithCursor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"let foo: number"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">cursorOffset</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">7</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"babel"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">cursorOffset</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// -&gt; 7</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="break-on-typescript-parameter-properties-14402-by-seiyab">Break on TypeScript parameter properties (<a href="https://github.com/prettier/prettier/pull/14402" target="_blank" rel="noopener noreferrer" class="">#14402</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#break-on-typescript-parameter-properties-14402-by-seiyab" class="hash-link" aria-label="Direct link to break-on-typescript-parameter-properties-14402-by-seiyab" title="Direct link to break-on-typescript-parameter-properties-14402-by-seiyab" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">MyClass</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">protected</span><span class="token plain"> x</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> y</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">MyClass</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">protected</span><span class="token plain"> x</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> y</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">MyClass</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">protected</span><span class="token plain"> x</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> y</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-of-union-type-with-single-type-14654-by-fisker-and-auvred">Fix formatting of union type with single type (<a href="https://github.com/prettier/prettier/pull/14654" target="_blank" rel="noopener noreferrer" class="">#14654</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a> and <a href="https://github.com/auvred" target="_blank" rel="noopener noreferrer" class="">@auvred</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-formatting-of-union-type-with-single-type-14654-by-fisker-and-auvred" class="hash-link" aria-label="Direct link to fix-formatting-of-union-type-with-single-type-14654-by-fisker-and-auvred" title="Direct link to fix-formatting-of-union-type-with-single-type-14654-by-fisker-and-auvred" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        value</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        value</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          value</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          value</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      value</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      value</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-new-line-detection-in-mapped-type-14659-by-fisker">Improve new line detection in mapped type (<a href="https://github.com/prettier/prettier/pull/14659" target="_blank" rel="noopener noreferrer" class="">#14659</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#improve-new-line-detection-in-mapped-type-14659-by-fisker" class="hash-link" aria-label="Direct link to improve-new-line-detection-in-mapped-type-14659-by-fisker" title="Direct link to improve-new-line-detection-in-mapped-type-14659-by-fisker" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="line-breaking-after-extends-in-type-parameters-14672-14858-by-sosukesuzuki">Line breaking after <code>extends</code> in type parameters (<a href="https://github.com/prettier/prettier/pull/14672" target="_blank" rel="noopener noreferrer" class="">#14672</a>, <a href="https://github.com/prettier/prettier/pull/14858" target="_blank" rel="noopener noreferrer" class="">#14858</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#line-breaking-after-extends-in-type-parameters-14672-14858-by-sosukesuzuki" class="hash-link" aria-label="Direct link to line-breaking-after-extends-in-type-parameters-14672-14858-by-sosukesuzuki" title="Direct link to line-breaking-after-extends-in-type-parameters-14672-14858-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">OuterType2</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  LongerLongerLongerLongerInnerType </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> LongerLongerLongerLongerLongerLongerLongerLongerOtherType</span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">OuterType2</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  LongerLongerLongerLongerInnerType </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> LongerLongerLongerLongerLongerLongerLongerLongerOtherType</span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">OuterType2</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  LongerLongerLongerLongerInnerType </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">    LongerLongerLongerLongerLongerLongerLongerLongerOtherType</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-missing-required-comma-in-type-parameters-14688-by-fisker-sosukesuzuki">Fix missing required comma in type parameters (<a href="https://github.com/prettier/prettier/pull/14688" target="_blank" rel="noopener noreferrer" class="">#14688</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-missing-required-comma-in-type-parameters-14688-by-fisker-sosukesuzuki" class="hash-link" aria-label="Direct link to fix-missing-required-comma-in-type-parameters-14688-by-fisker-sosukesuzuki" title="Direct link to fix-missing-required-comma-in-type-parameters-14688-by-fisker-sosukesuzuki" translate="no">​</a></h4>
<p>Previously, we only print trailing comma when file extension is <code>.tsx</code>, turns out <code>.mts</code>, <code>.cts</code> files requires it to parse too.</p>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> unsafeCoerce </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">,</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">u</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">unknown</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> u </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> unsafeCoerce </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">(u: unknown): T =&gt; u as T;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">export const unsafeCoerce = &lt;T,&gt;(u: unknown): T =&gt; u as T;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="keep-parentheses-around-tsinstantiationexpression-followed-by-a-property-access-14701-by-morsko1">Keep parentheses around <code>TSInstantiationExpression</code> followed by a property access (<a href="https://github.com/prettier/prettier/pull/14701" target="_blank" rel="noopener noreferrer" class="">#14701</a> by <a href="https://github.com/morsko1" target="_blank" rel="noopener noreferrer" class="">@morsko1</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#keep-parentheses-around-tsinstantiationexpression-followed-by-a-property-access-14701-by-morsko1" class="hash-link" aria-label="Direct link to keep-parentheses-around-tsinstantiationexpression-followed-by-a-property-access-14701-by-morsko1" title="Direct link to keep-parentheses-around-tsinstantiationexpression-followed-by-a-property-access-14701-by-morsko1" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token operator" style="color:#393A34">?.</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">Array</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">string</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">?.</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-issue-with-double-semicolon-caused-by--prettier-ignore-on-a-call-signature-line-14830-by-ot07">Fix issue with double semicolon caused by <code>// prettier-ignore</code> on a call signature line (<a href="https://github.com/prettier/prettier/pull/14830" target="_blank" rel="noopener noreferrer" class="">#14830</a> by <a href="https://github.com/ot07" target="_blank" rel="noopener noreferrer" class="">@ot07</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-issue-with-double-semicolon-caused-by--prettier-ignore-on-a-call-signature-line-14830-by-ot07" class="hash-link" aria-label="Direct link to fix-issue-with-double-semicolon-caused-by--prettier-ignore-on-a-call-signature-line-14830-by-ot07" title="Direct link to fix-issue-with-double-semicolon-caused-by--prettier-ignore-on-a-call-signature-line-14830-by-ot07" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  second</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  second</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  second</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow-1">Flow<a href="https://prettier.io/blog/2023/07/05/3.0.0#flow-1" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="an-object-type-in-a-declare-function-signature-now-breaks-before-the-return-type-13396-by-thorn0">An object type in a <code>declare function</code> signature now breaks before the return type (<a href="https://github.com/prettier/prettier/pull/13396" target="_blank" rel="noopener noreferrer" class="">#13396</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#an-object-type-in-a-declare-function-signature-now-breaks-before-the-return-type-13396-by-thorn0" class="hash-link" aria-label="Direct link to an-object-type-in-a-declare-function-signature-now-breaks-before-the-return-type-13396-by-thorn0" title="Direct link to an-object-type-in-a-declare-function-signature-now-breaks-before-the-return-type-13396-by-thorn0" translate="no">​</a></h4>
<p>This behavior has been unified with how TypeScript is formatted.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">declare </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bla</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter literal-property property" style="color:#36acaa">props</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> </span><span class="token parameter punctuation" style="color:#393A34">{</span><span class="token parameter"> </span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> boolean</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> </span><span class="token parameter literal-property property" style="color:#36acaa">b</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> </span><span class="token parameter literal-property property" style="color:#36acaa">c</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> number </span><span class="token parameter punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">Promise</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token known-class-name class-name">Array</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">foo</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 2.8</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">declare function bla(props: { a: boolean, b: string, c: number }): Promise&lt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  Array</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">foo</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">&gt;;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 3.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">declare function bla(props: {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  a: boolean;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  b: string;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  c: number;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">}): Promise&lt;Array</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">foo</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">&gt;;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-conditional-type-and-infer-type-14573-by-samchou19815">Support conditional type and infer type (<a href="https://github.com/prettier/prettier/pull/14573" target="_blank" rel="noopener noreferrer" class="">#14573</a> by <a href="https://github.com/SamChou19815" target="_blank" rel="noopener noreferrer" class="">@SamChou19815</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-conditional-type-and-infer-type-14573-by-samchou19815" class="hash-link" aria-label="Direct link to support-conditional-type-and-infer-type-14573-by-samchou19815" title="Direct link to support-conditional-type-and-infer-type-14573-by-samchou19815" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">TestReturnType</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter spread operator" style="color:#393A34">...</span><span class="token parameter">args</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> any</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> any</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter spread operator" style="color:#393A34">...</span><span class="token parameter">args</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> any</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> infer </span><span class="token constant" style="color:#36acaa">R</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">R</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> any</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Does not parse</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">TestReturnType</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter spread operator" style="color:#393A34">...</span><span class="token parameter">args</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> any</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> any</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter spread operator" style="color:#393A34">...</span><span class="token parameter">args</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> any</span><span class="token parameter punctuation" style="color:#393A34">[</span><span class="token parameter punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> infer </span><span class="token constant" style="color:#36acaa">R</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">R</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> any</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-mapped-types-and-keyof-14619-by-jbrown215">Support Mapped Types and keyof (<a href="https://github.com/prettier/prettier/pull/14619" target="_blank" rel="noopener noreferrer" class="">#14619</a> by <a href="https://github.com/jbrown215" target="_blank" rel="noopener noreferrer" class="">@jbrown215</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-mapped-types-and-keyof-14619-by-jbrown215" class="hash-link" aria-label="Direct link to support-mapped-types-and-keyof-14619-by-jbrown215" title="Direct link to support-mapped-types-and-keyof-14619-by-jbrown215" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Mapped</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> keyof </span><span class="token constant" style="color:#36acaa">O</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">number</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Does not parse</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Mapped</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> keyof </span><span class="token constant" style="color:#36acaa">O</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> number </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-type-guards-14767-by-panagosg7">Support type guards (<a href="https://github.com/prettier/prettier/pull/14767" target="_blank" rel="noopener noreferrer" class="">#14767</a> by <a href="https://github.com/panagosg7" target="_blank" rel="noopener noreferrer" class="">@panagosg7</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-type-guards-14767-by-panagosg7" class="hash-link" aria-label="Direct link to support-type-guards-14767-by-panagosg7" title="Direct link to support-type-guards-14767-by-panagosg7" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">isString</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter literal-property property" style="color:#36acaa">x</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> mixed</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> x is string </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">typeof</span><span class="token plain"> x </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"string"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Does not parse</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">isString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter literal-property property" style="color:#36acaa">x</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> mixed</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> x is string </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">typeof</span><span class="token plain"> x </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'string'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="css-1">CSS<a href="https://prettier.io/blog/2023/07/05/3.0.0#css-1" class="hash-link" aria-label="Direct link to CSS" title="Direct link to CSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-custom-properties-format-9209-by-fisker">Improve custom properties format (<a href="https://github.com/prettier/prettier/pull/9209" target="_blank" rel="noopener noreferrer" class="">#9209</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#improve-custom-properties-format-9209-by-fisker" class="hash-link" aria-label="Direct link to improve-custom-properties-format-9209-by-fisker" title="Direct link to improve-custom-properties-format-9209-by-fisker" translate="no">​</a></h4>
<p>Thanks to <a href="https://github.com/postcss/postcss/releases/tag/8.0.0" target="_blank" rel="noopener noreferrer" class=""><code>PostCSS 8.0</code></a>, we can handle these edge cases on custom properties.</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:root</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--empty</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token selector" style="color:#00009f">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  --JSON: [1</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> "2"</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"three"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"a"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> [</span><span class="token number" style="color:#36acaa">4</span><span class="token plain">]]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">--javascript: function</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f">rule</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> console.</span><span class="token function" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rule</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@supports</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule variable" style="color:#36acaa">--element</span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule string" style="color:#e3116c">".minwidth"</span><span class="token atrule punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"minWidth"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">300</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">--self</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">background</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">greenyellow</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.8 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">SyntaxError: </span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f">postcss</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector" style="color:#00009f"> CssSyntaxError Missed semicolon </span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f">3</span><span class="token selector pseudo-class" style="color:#00009f">:20</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  1 | </span><span class="token selector pseudo-class" style="color:#00009f">:root</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> |   </span><span class="token variable" style="color:#36acaa">--empty</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token selector" style="color:#00009f">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> 3 |   --JSON: [1</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> "2"</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"three"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"a"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> [</span><span class="token number" style="color:#36acaa">4</span><span class="token plain">]]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token selector" style="color:#00009f">|                    ^</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  4 |   --javascript: function</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f">rule</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> console.</span><span class="token function" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rule</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"> | </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">6</span><span class="token plain"> |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.0 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:root</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--empty</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token selector" style="color:#00009f">;</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  --JSON: [1</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> "2"</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"three"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"a"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> [</span><span class="token number" style="color:#36acaa">4</span><span class="token plain">]]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">--javascript: function</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f">rule</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">console.</span><span class="token function" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rule</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@supports</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule variable" style="color:#36acaa">--element</span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule string" style="color:#e3116c">".minwidth"</span><span class="token atrule punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"minWidth"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">300</span><span class="token punctuation" style="color:#393A34">}</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">--self</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">background</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">greenyellow</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="keep-trailing-comma-for-var-function-13402-by-sosukesuzuki">Keep trailing-comma for <code>var</code> function (<a href="https://github.com/prettier/prettier/pull/13402" target="_blank" rel="noopener noreferrer" class="">#13402</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#keep-trailing-comma-for-var-function-13402-by-sosukesuzuki" class="hash-link" aria-label="Direct link to keep-trailing-comma-for-var-function-13402-by-sosukesuzuki" title="Direct link to keep-trailing-comma-for-var-function-13402-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--bar</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--baz</span><span class="token punctuation" style="color:#393A34">,</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.8 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--bar</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--baz</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.0 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">--bar</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">--baz</span><span class="token punctuation" style="color:#393A34">,</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-line-break-in-css-declaration-with-comma-14208-by-mvorisek">Fix line break in CSS declaration with comma (<a href="https://github.com/prettier/prettier/pull/14208" target="_blank" rel="noopener noreferrer" class="">#14208</a> by <a href="https://github.com/mvorisek" target="_blank" rel="noopener noreferrer" class="">@mvorisek</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-line-break-in-css-declaration-with-comma-14208-by-mvorisek" class="hash-link" aria-label="Direct link to fix-line-break-in-css-declaration-with-comma-14208-by-mvorisek" title="Direct link to fix-line-break-in-css-declaration-with-comma-14208-by-mvorisek" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">// Input</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector class" style="color:#00009f">.myclass</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">box-shadow</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    inset </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token unit">px</span><span class="token plain"> </span><span class="token hexcode color">#555</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token plain"> </span><span class="token color">black</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">// Prettier 2</span><span class="token selector class" style="color:#00009f">.8</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector class" style="color:#00009f">.myclass</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">box-shadow</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> inset </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token unit">px</span><span class="token plain"> </span><span class="token hexcode color">#555</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token plain"> </span><span class="token color">black</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">// Prettier 3</span><span class="token selector class" style="color:#00009f">.0</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector class" style="color:#00009f">.myclass</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">box-shadow</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    inset </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token unit">px</span><span class="token plain"> </span><span class="token hexcode color">#555</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">20</span><span class="token unit">px</span><span class="token plain"> </span><span class="token color">black</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-url-contains-comma-14476-by-seiyab">Fix url contains comma (<a href="https://github.com/prettier/prettier/pull/14476" target="_blank" rel="noopener noreferrer" class="">#14476</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-url-contains-comma-14476-by-seiyab" class="hash-link" aria-label="Direct link to fix-url-contains-comma-14476-by-seiyab" title="Direct link to fix-url-contains-comma-14476-by-seiyab" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@font-face</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">src</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token url function" style="color:#d73a49">url</span><span class="token url punctuation" style="color:#393A34">(</span><span class="token url" style="color:#36acaa">RobotoFlex-VariableFont_GRAD,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght.ttf</span><span class="token url punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.8 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@font-face</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">src</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token url function" style="color:#d73a49">url</span><span class="token url punctuation" style="color:#393A34">(</span><span class="token url" style="color:#36acaa">RobotoFlex-VariableFont_GRADXTRAYOPQYTASYTDEYTFIYTLCYTUCopszslntwdthwght.ttf</span><span class="token url punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.0 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@font-face</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">src</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token url function" style="color:#d73a49">url</span><span class="token url punctuation" style="color:#393A34">(</span><span class="token url" style="color:#36acaa">RobotoFlex-VariableFont_GRAD,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght.ttf</span><span class="token url punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scss">SCSS<a href="https://prettier.io/blog/2023/07/05/3.0.0#scss" class="hash-link" aria-label="Direct link to SCSS" title="Direct link to SCSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-string-value-that-includes-escape--13487-by-sosukesuzuki">Fix formatting string value that includes escape <code>\</code> (<a href="https://github.com/prettier/prettier/pull/13487" target="_blank" rel="noopener noreferrer" class="">#13487</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-formatting-string-value-that-includes-escape--13487-by-sosukesuzuki" class="hash-link" aria-label="Direct link to fix-formatting-string-value-that-includes-escape--13487-by-sosukesuzuki" title="Direct link to fix-formatting-string-value-that-includes-escape--13487-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property variable" style="color:#36acaa">$description</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Lorem ipsum dolor sit \"amet\", consectetur adipiscing elit, "</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.8 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property variable" style="color:#36acaa">$description</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Lorem ipsum dolor sit "amet", consectetur adipiscing elit, '</span><span class="token plain">+ </span><span class="token string" style="color:#e3116c">"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 3.0 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property variable" style="color:#36acaa">$description</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Lorem ipsum dolor sit "amet", consectetur adipiscing elit, '</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="less">Less<a href="https://prettier.io/blog/2023/07/05/3.0.0#less" class="hash-link" aria-label="Direct link to Less" title="Direct link to Less" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-interpolation-parse-error-11343-by-fisker">Fix interpolation parse error (<a href="https://github.com/prettier/prettier/pull/11343" target="_blank" rel="noopener noreferrer" class="">#11343</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-interpolation-parse-error-11343-by-fisker" class="hash-link" aria-label="Direct link to fix-interpolation-parse-error-11343-by-fisker" title="Direct link to fix-interpolation-parse-error-11343-by-fisker" translate="no">​</a></h4>
<div class="language-less codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-less codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">@{selector}-title</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">@{prop}-size</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> @</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">color</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">SyntaxError: CssSyntaxError: Unknown word (1:20)</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">&gt; 1 | @{selector}-title</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">@{prop}-size</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> @</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">color</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">@{selector}-title</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">@{prop}-size</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> @</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">color</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="keep-inline-javascript-code-as-it-is-14109-by-fisker">Keep inline JavaScript code as it is (<a href="https://github.com/prettier/prettier/pull/14109" target="_blank" rel="noopener noreferrer" class="">#14109</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#keep-inline-javascript-code-as-it-is-14109-by-fisker" class="hash-link" aria-label="Direct link to keep-inline-javascript-code-as-it-is-14109-by-fisker" title="Direct link to keep-inline-javascript-code-as-it-is-14109-by-fisker" translate="no">​</a></h4>
<div class="language-less codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-less codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.calcPxMixin()</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">@functions</span><span class="token variable punctuation" style="color:#393A34">:</span><span class="token plain"> ~`</span><span class="token selector" style="color:#00009f">(function()</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token selector" style="color:#00009f">const designWidth = 3840</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">    const actualWidth = 5760</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">    this.calcPx = function(_)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      return _ </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> actualWidth </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> designWidth </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'px'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.calcPxMixin()</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">@functions</span><span class="token variable punctuation" style="color:#393A34">:</span><span class="token plain"> ~`</span><span class="token selector" style="color:#00009f">(</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">      function()</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token selector" style="color:#00009f">const designWidth = 3840 const actualWidth = 5760 this.calcPx =</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">        function(_)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">return _ </span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> actualWidth </span><span class="token operator" style="color:#393A34">/</span><span class="token plain"> designWidth </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"px"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> `</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;Same as input&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2023/07/05/3.0.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-html5-doctype-in-lowercase-7391-by-fisker">Print HTML5 <code>doctype</code> in lowercase (<a href="https://github.com/prettier/prettier/pull/7391" target="_blank" rel="noopener noreferrer" class="">#7391</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#print-html5-doctype-in-lowercase-7391-by-fisker" class="hash-link" aria-label="Direct link to print-html5-doctype-in-lowercase-7391-by-fisker" title="Direct link to print-html5-doctype-in-lowercase-7391-by-fisker" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&lt;!</span><span class="token doctype doctype-tag" style="color:#999988;font-style:italic">DocType</span><span class="token doctype" style="color:#999988;font-style:italic"> </span><span class="token doctype name" style="color:#999988;font-style:italic">html</span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">html</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">head</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">head</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">body</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">body</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">html</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&lt;!</span><span class="token doctype doctype-tag" style="color:#999988;font-style:italic">DOCTYPE</span><span class="token doctype" style="color:#999988;font-style:italic"> </span><span class="token doctype name" style="color:#999988;font-style:italic">html</span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">html</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">head</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">head</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">body</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">body</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">html</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&lt;!</span><span class="token doctype doctype-tag" style="color:#999988;font-style:italic">doctype</span><span class="token doctype" style="color:#999988;font-style:italic"> </span><span class="token doctype name" style="color:#999988;font-style:italic">html</span><span class="token doctype punctuation" style="color:#393A34;font-style:italic">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">html</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">head</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">head</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">body</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">body</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">html</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="update-angular-html-parser-13578-by-thorn0">Update angular-html-parser (<a href="https://github.com/prettier/prettier/pull/13578" target="_blank" rel="noopener noreferrer" class="">#13578</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#update-angular-html-parser-13578-by-thorn0" class="hash-link" aria-label="Direct link to update-angular-html-parser-13578-by-thorn0" title="Direct link to update-angular-html-parser-13578-by-thorn0" translate="no">​</a></h4>
<p>Prettier's fork of Angular's HTML parser was synced with the upstream.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="format-script-inside-svg-14400-by-fisker">Format <code>&lt;script&gt;</code> inside SVG (<a href="https://github.com/prettier/prettier/pull/14400" target="_blank" rel="noopener noreferrer" class="">#14400</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#format-script-inside-svg-14400-by-fisker" class="hash-link" aria-label="Direct link to format-script-inside-svg-14400-by-fisker" title="Direct link to format-script-inside-svg-14400-by-fisker" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">svg</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">viewBox</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">0 0 200 200</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">xmlns</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">http://www.w3.org/2000/svg</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript"></span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">addEventListener</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript"></span><span class="token script language-javascript string" style="color:#e3116c">'DOMContentLoaded'</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript arrow operator" style="color:#393A34">=&gt;</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript keyword" style="color:#00009f">const</span><span class="token script language-javascript"> element </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getElementById</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript string" style="color:#e3116c">'foo'</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">   </span><span class="token script language-javascript keyword control-flow" style="color:#00009f">if</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">element</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">element</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">fillStyle</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'currentColor'</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript"></span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript"></span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">svg</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">svg</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">viewBox</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">0 0 200 200</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">xmlns</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">http://www.w3.org/2000/svg</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">    </span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">addEventListener</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">'DOMContentLoaded'</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript arrow operator" style="color:#393A34">=&gt;</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword" style="color:#00009f">const</span><span class="token script language-javascript"> element </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">    </span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getElementById</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript string" style="color:#e3116c">'foo'</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword control-flow" style="color:#00009f">if</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">element</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"> element</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">fillStyle</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">    </span><span class="token script language-javascript string" style="color:#e3116c">'currentColor'</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">svg</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">svg</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">viewBox</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">0 0 200 200</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">xmlns</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">http://www.w3.org/2000/svg</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">    </span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">addEventListener</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript string" style="color:#e3116c">"DOMContentLoaded"</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript arrow operator" style="color:#393A34">=&gt;</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword" style="color:#00009f">const</span><span class="token script language-javascript"> element </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript dom variable" style="color:#36acaa">document</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript method function property-access" style="color:#d73a49">getElementById</span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript string" style="color:#e3116c">"foo"</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword control-flow" style="color:#00009f">if</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">(</span><span class="token script language-javascript">element</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">        element</span><span class="token script language-javascript punctuation" style="color:#393A34">.</span><span class="token script language-javascript property-access">fillStyle</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:#393A34">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">"currentColor"</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">      </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">    </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript punctuation" style="color:#393A34">)</span><span class="token script language-javascript punctuation" style="color:#393A34">;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">svg</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="recognize-search-element-14615-by-fisker">Recognize <code>&lt;search&gt;</code> element (<a href="https://github.com/prettier/prettier/pull/14615" target="_blank" rel="noopener noreferrer" class="">#14615</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#recognize-search-element-14615-by-fisker" class="hash-link" aria-label="Direct link to recognize-search-element-14615-by-fisker" title="Direct link to recognize-search-element-14615-by-fisker" translate="no">​</a></h4>
<p>HTML spec added <a href="https://html.spec.whatwg.org/multipage/grouping-content.html#the-search-element" target="_blank" rel="noopener noreferrer" class=""><code>&lt;search&gt;</code> element</a>.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">SEARCH</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">Website</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">SEARCH</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">SEARCH</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">Website</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"> ... </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">SEARCH</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">search</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">Website</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">...</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">search</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="vue">Vue<a href="https://prettier.io/blog/2023/07/05/3.0.0#vue" class="hash-link" aria-label="Direct link to Vue" title="Direct link to Vue" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="ignore-htmlwhitespacesensitivity-when-formatting-vue-sfc-root-blocks-14401-by-fisker">Ignore <code>htmlWhitespaceSensitivity</code> when formatting Vue SFC root blocks (<a href="https://github.com/prettier/prettier/pull/14401" target="_blank" rel="noopener noreferrer" class="">#14401</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#ignore-htmlwhitespacesensitivity-when-formatting-vue-sfc-root-blocks-14401-by-fisker" class="hash-link" aria-label="Direct link to ignore-htmlwhitespacesensitivity-when-formatting-vue-sfc-root-blocks-14401-by-fisker" title="Direct link to ignore-htmlwhitespacesensitivity-when-formatting-vue-sfc-root-blocks-14401-by-fisker" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- display: inline --&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">style</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value css language-css property" style="color:#36acaa">display</span><span class="token tag special-attr attr-value value css language-css punctuation" style="color:#393A34">:</span><span class="token tag special-attr attr-value value css language-css" style="color:#e3116c"> inline</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 (--html-whitespace-sensitivity=strict) --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- display: inline --&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">style</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value css language-css property" style="color:#36acaa">display</span><span class="token tag special-attr attr-value value css language-css punctuation" style="color:#393A34">:</span><span class="token tag special-attr attr-value value css language-css" style="color:#e3116c"> inline</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- display: inline --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">lang</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">unknown</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag special-attr attr-name" style="color:#00a4db">style</span><span class="token tag special-attr attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag special-attr attr-value value css language-css property" style="color:#36acaa">display</span><span class="token tag special-attr attr-value value css language-css punctuation" style="color:#393A34">:</span><span class="token tag special-attr attr-value value css language-css" style="color:#e3116c"> inline</span><span class="token tag special-attr attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">docs</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="format-typescript-expression-in-attribute-bindings-14506-by-seiyab">Format TypeScript expression in attribute bindings (<a href="https://github.com/prettier/prettier/pull/14506" target="_blank" rel="noopener noreferrer" class="">#14506</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#format-typescript-expression-in-attribute-bindings-14506-by-seiyab" class="hash-link" aria-label="Direct link to format-typescript-expression-in-attribute-bindings-14506-by-seiyab" title="Direct link to format-typescript-expression-in-attribute-bindings-14506-by-seiyab" translate="no">​</a></h4>
<div class="language-vue codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-vue codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Input --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script lang="ts"&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;comp :foo="   (a:string)=&gt;1"/&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.8 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script lang="ts"&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;comp :foo="   (a:string)=&gt;1" /&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 3.0 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script lang="ts"&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;comp :foo="(a: string) =&gt; 1" /&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-vue-filter-detection-14542-by-fisker">Fix Vue filter detection (<a href="https://github.com/prettier/prettier/pull/14542" target="_blank" rel="noopener noreferrer" class="">#14542</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-vue-filter-detection-14542-by-fisker" class="hash-link" aria-label="Direct link to fix-vue-filter-detection-14542-by-fisker" title="Direct link to fix-vue-filter-detection-14542-by-fisker" translate="no">​</a></h4>
<div class="language-vue codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-vue codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Input --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      fn(</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        bitwise | or | operator | a_long_long_long_long_long_long_long_long_long_long_variable</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      )</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      | filter1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      | filter2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      | filter3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      | filter4</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.8 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      fn(</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        bitwise</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          | or</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          | operator</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          | a_long_long_long_long_long_long_long_long_long_long_variable</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      )</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        | filter1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        | filter2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        | filter3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        | filter4</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 3.0 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    {{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      fn(</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        bitwise |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          or |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          operator |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          a_long_long_long_long_long_long_long_long_long_long_variable,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      )</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        | filter1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        | filter2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        | filter3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        | filter4</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="avoid-unnecessary-leading-semicolon-14557-by-fisker">Avoid unnecessary leading semicolon (<a href="https://github.com/prettier/prettier/pull/14557" target="_blank" rel="noopener noreferrer" class="">#14557</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#avoid-unnecessary-leading-semicolon-14557-by-fisker" class="hash-link" aria-label="Direct link to avoid-unnecessary-leading-semicolon-14557-by-fisker" title="Direct link to avoid-unnecessary-leading-semicolon-14557-by-fisker" translate="no">​</a></h4>
<div class="language-vue codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-vue codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Input --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div @click="[foo, bar].forEach(fn =&gt; void fn())"&gt;&lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.8 (With `--no-semi` option) --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div @click=";[foo, bar].forEach((fn) =&gt; void fn())"&gt;&lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 3.0 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div @click="[foo, bar].forEach((fn) =&gt; void fn())"&gt;&lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="format-ts-expressions-when-any-script-tag-has-langts-14587-by-seiyab">Format TS expressions when any script tag has <code>lang="ts"</code> (<a href="https://github.com/prettier/prettier/pull/14587" target="_blank" rel="noopener noreferrer" class="">#14587</a> by <a href="https://github.com/seiyab" target="_blank" rel="noopener noreferrer" class="">@seiyab</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#format-ts-expressions-when-any-script-tag-has-langts-14587-by-seiyab" class="hash-link" aria-label="Direct link to format-ts-expressions-when-any-script-tag-has-langts-14587-by-seiyab" title="Direct link to format-ts-expressions-when-any-script-tag-has-langts-14587-by-seiyab" translate="no">​</a></h4>
<div class="language-vue codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-vue codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Input --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script setup lang="ts"&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {{ (x      as      number).toFixed(2) }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.8 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script setup lang="ts"&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {{ (x      as      number).toFixed(2) }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 3.0 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script setup lang="ts"&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {{ (x as number).toFixed(2) }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular">Angular<a href="https://prettier.io/blog/2023/07/05/3.0.0#angular" class="hash-link" aria-label="Direct link to Angular" title="Direct link to Angular" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="update-angularcompiler-to-v14-13609-by-fisker">Update <code>@angular/compiler</code> to v14 (<a href="https://github.com/prettier/prettier/pull/13609" target="_blank" rel="noopener noreferrer" class="">#13609</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#update-angularcompiler-to-v14-13609-by-fisker" class="hash-link" aria-label="Direct link to update-angularcompiler-to-v14-13609-by-fisker" title="Direct link to update-angularcompiler-to-v14-13609-by-fisker" translate="no">​</a></h4>
<ul>
<li class="">Support shorthand object</li>
<li class=""><a href="https://github.com/angular/angular/pull/44915" target="_blank" rel="noopener noreferrer" class="">Drop support for quote expressions</a></li>
</ul>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">[input]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">{a, b   :   2 }</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Error: Cannot find front char /:/ from index 0 in "{a, b   :   2 }"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">[input]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">{ a, b: 2 }</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">a</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">[href]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">http://google.com</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Click me</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">a</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">a</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">[href]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">http:  //google.com</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Click me</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">a</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">a</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">[href]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">http://google.com</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Click me</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">a</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-parentheses-with-nullish-coalescing-operator-14216-by-thron0">Fix parentheses with nullish coalescing operator (<a href="https://github.com/prettier/prettier/pull/14216" target="_blank" rel="noopener noreferrer" class="">#14216</a> by <a href="https://github.com/thron0" target="_blank" rel="noopener noreferrer" class="">@thron0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-parentheses-with-nullish-coalescing-operator-14216-by-thron0" class="hash-link" aria-label="Direct link to fix-parentheses-with-nullish-coalescing-operator-14216-by-thron0" title="Direct link to fix-parentheses-with-nullish-coalescing-operator-14216-by-thron0" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">img</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">[src]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">(x &amp;&amp; y) ?? z</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">img</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">[src]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">x &amp;&amp; y ?? z</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">img</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">[src]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">(x &amp;&amp; y) ?? z</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-computed-optional-chaining-14658-by-fisker">Support computed optional chaining (<a href="https://github.com/prettier/prettier/pull/14658" target="_blank" rel="noopener noreferrer" class="">#14658</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#support-computed-optional-chaining-14658-by-fisker" class="hash-link" aria-label="Direct link to support-computed-optional-chaining-14658-by-fisker" title="Direct link to support-computed-optional-chaining-14658-by-fisker" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">img</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">[src]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">   a?.[0]</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">img</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">[src]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">   a?.[0]</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">img</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">[src]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">a?.[0]</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="remove-space-after-pipe-name-14961-by-waterplea">Remove space after pipe name (<a href="https://github.com/prettier/prettier/pull/14961" target="_blank" rel="noopener noreferrer" class="">#14961</a> by <a href="https://github.com/waterplea" target="_blank" rel="noopener noreferrer" class="">@waterplea</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#remove-space-after-pipe-name-14961-by-waterplea" class="hash-link" aria-label="Direct link to remove-space-after-pipe-name-14961-by-waterplea" title="Direct link to remove-space-after-pipe-name-14961-by-waterplea" translate="no">​</a></h4>
<p>We introduced <a href="https://prettier.io/blog/2022/11/23/2.8.0.html#insert-spaces-in-pipe-13100httpsgithubcomprettierprettierpull13100-by-sosukesuzukihttpsgithubcomsosukesuzuki" target="_blank" rel="noopener noreferrer" class="">a new format for pipe in Prettier 2.8</a>, but this was not accepted by the community.</p>
<p>Therefore, we are introducing a new format that reflects community input.</p>
<p>For more information on the discussion, please see <a href="https://github.com/prettier/prettier/issues/13887" target="_blank" rel="noopener noreferrer" class="">https://github.com/prettier/prettier/issues/13887</a>.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">my-component</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">[value]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">value | transform: arg1 : arg2 | format: arg3 : arg4</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">my-component</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">my-component</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">[value]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">value | transform : arg1 : arg2 | format : arg3 : arg4</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">my-component</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">my-component</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">[value]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">value | transform: arg1 : arg2 | format: arg3 : arg4</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">my-component</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown-1">Markdown<a href="https://prettier.io/blog/2023/07/05/3.0.0#markdown-1" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-multiple-spaces-in-inline-code-13590-by-kachkaev-and-thorn0">Preserve multiple spaces in inline code (<a href="https://github.com/prettier/prettier/pull/13590" target="_blank" rel="noopener noreferrer" class="">#13590</a> by <a href="https://github.com/kachkaev" target="_blank" rel="noopener noreferrer" class="">@kachkaev</a> and <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#preserve-multiple-spaces-in-inline-code-13590-by-kachkaev-and-thorn0" class="hash-link" aria-label="Direct link to preserve-multiple-spaces-in-inline-code-13590-by-kachkaev-and-thorn0" title="Direct link to preserve-multiple-spaces-in-inline-code-13590-by-kachkaev-and-thorn0" translate="no">​</a></h4>
<p>Previously, multiple whitespace characters in inline code were collapsed into a single space. This is no longer happening to match <a href="https://spec.commonmark.org/0.30/#backtick-string" target="_blank" rel="noopener noreferrer" class="">CommonMark spec</a>.</p>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code-snippet code keyword" style="color:#00009f">`   foo   bar   baz   `</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code-snippet code keyword" style="color:#00009f">` foo bar baz `</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 3.0 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code-snippet code keyword" style="color:#00009f">`   foo   bar   baz   `</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-2">API<a href="https://prettier.io/blog/2023/07/05/3.0.0#api-2" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-dts-files-14212-by-sosukesuzuki-fisker">Add <code>.d.ts</code> files (<a href="https://github.com/prettier/prettier/pull/14212" target="_blank" rel="noopener noreferrer" class="">#14212</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#add-dts-files-14212-by-sosukesuzuki-fisker" class="hash-link" aria-label="Direct link to add-dts-files-14212-by-sosukesuzuki-fisker" title="Direct link to add-dts-files-14212-by-sosukesuzuki-fisker" translate="no">​</a></h4>
<p>Add type definition files required to use Prettier's JavaScript API from TypeScript. This eliminates the need for users to install <code>@types/prettier</code>.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="update-prettierutil-14317-14320-by-fisker">Update <code>prettier.util</code> (<a href="https://github.com/prettier/prettier/pull/14317" target="_blank" rel="noopener noreferrer" class="">#14317</a>, <a href="https://github.com/prettier/prettier/pull/14320" target="_blank" rel="noopener noreferrer" class="">#14320</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#update-prettierutil-14317-14320-by-fisker" class="hash-link" aria-label="Direct link to update-prettierutil-14317-14320-by-fisker" title="Direct link to update-prettierutil-14317-14320-by-fisker" translate="no">​</a></h4>
<ul>
<li class="">
<p>Added <code>prettier.util.getNextNonSpaceNonCommentCharacter</code></p>
</li>
<li class="">
<p>Changed <code>prettier.util.getNextNonSpaceNonCommentCharacter</code></p>
<p>Signature changed from</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token generic-function function" style="color:#d73a49">getNextNonSpaceNonCommentCharacterIndex</span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name constant" style="color:#36acaa">N</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  text</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  node</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">N</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function-variable function" style="color:#d73a49">locEnd</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">node</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">N</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>to</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">getNextNonSpaceNonCommentCharacterIndex</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  text</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  startIndex</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Changed <code>prettier.util.isPreviousLineEmpty</code></p>
<p>Signature changed from</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token generic-function function" style="color:#d73a49">isPreviousLineEmpty</span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name constant" style="color:#36acaa">N</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  text</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  node</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">N</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function-variable function" style="color:#d73a49">locStart</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">node</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">N</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">boolean</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>to</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">isPreviousLineEmpty</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">text</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> startIndex</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">boolean</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Changed <code>prettier.util.isNextLineEmpty</code></p>
<p>Signature changed from</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token generic-function function" style="color:#d73a49">isNextLineEmpty</span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name constant" style="color:#36acaa">N</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  text</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  node</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">N</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function-variable function" style="color:#d73a49">locEnd</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">node</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">N</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">boolean</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>to</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">isNextLineEmpty</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">text</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> startIndex</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">boolean</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
</li>
<li class="">
<p>Deprecated <code>prettier.util.isNextLineEmptyAfterIndex</code></p>
<p>Use <code>prettier.util.isNextLineEmpty</code> instead.</p>
</li>
</ul>
<p>See the <a href="https://prettier.io/docs/plugins#utility-functions" target="_blank" rel="noopener noreferrer" class="">documentation</a> for details.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-plugin-loading-cache-14576-by-fisker">Fix plugin loading cache (<a href="https://github.com/prettier/prettier/pull/14576" target="_blank" rel="noopener noreferrer" class="">#14576</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#fix-plugin-loading-cache-14576-by-fisker" class="hash-link" aria-label="Direct link to fix-plugin-loading-cache-14576-by-fisker" title="Direct link to fix-plugin-loading-cache-14576-by-fisker" translate="no">​</a></h4>
<p>Plugin instances are incorrectly memoized, check this <a href="https://github.com/prettier/prettier/issues/13235" target="_blank" rel="noopener noreferrer" class="">issue</a> for details.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="stop-formatting-unknown-code-with-babel-parser-14718-by-fisker">Stop formatting unknown code with <code>babel</code> parser (<a href="https://github.com/prettier/prettier/pull/14718" target="_blank" rel="noopener noreferrer" class="">#14718</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#stop-formatting-unknown-code-with-babel-parser-14718-by-fisker" class="hash-link" aria-label="Direct link to stop-formatting-unknown-code-with-babel-parser-14718-by-fisker" title="Direct link to stop-formatting-unknown-code-with-babel-parser-14718-by-fisker" translate="no">​</a></h4>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">await prettier.format("foo")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 2.8</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">No parser and no filepath given, using 'babel' the parser now but this will throw an error in the future. Please specify a parser or a filepath so one can be inferred.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">'foo;\n'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 3.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">UndefinedParserError: No parser and no file path given, couldn't infer a parser.</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-1">CLI<a href="https://prettier.io/blog/2023/07/05/3.0.0#cli-1" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="updated-failure-message-to-be-more-informative-11369-by-webark">Updated failure message to be more informative (<a href="https://github.com/prettier/prettier/pull/11369" target="_blank" rel="noopener noreferrer" class="">#11369</a> by <a href="https://github.com/webark" target="_blank" rel="noopener noreferrer" class="">@webark</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#updated-failure-message-to-be-more-informative-11369-by-webark" class="hash-link" aria-label="Direct link to updated-failure-message-to-be-more-informative-11369-by-webark" title="Direct link to updated-failure-message-to-be-more-informative-11369-by-webark" translate="no">​</a></h4>
<p>Updated the "Forgot to run Prettier?" to "Run Prettier with --write to fix."</p>
<p>This keeps the same spirit of the message, but is less likely to be
misinterpreted as it's a more formal message rather than being
somewhat familial.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="change---loglevel-to---log-level-13204-by-sosukesuzuki">Change <code>--loglevel</code> to <code>--log-level</code> (<a href="https://github.com/prettier/prettier/pull/13204" target="_blank" rel="noopener noreferrer" class="">#13204</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#change---loglevel-to---log-level-13204-by-sosukesuzuki" class="hash-link" aria-label="Direct link to change---loglevel-to---log-level-13204-by-sosukesuzuki" title="Direct link to change---loglevel-to---log-level-13204-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier test.js </span><span class="token parameter variable" style="color:#36acaa">--loglevel</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">debug</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier test.js --log-level</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">debug</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="accept-multiple---ignore-path-14332-by-fisker">Accept multiple <code>--ignore-path</code> (<a href="https://github.com/prettier/prettier/pull/14332" target="_blank" rel="noopener noreferrer" class="">#14332</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#accept-multiple---ignore-path-14332-by-fisker" class="hash-link" aria-label="Direct link to accept-multiple---ignore-path-14332-by-fisker" title="Direct link to accept-multiple---ignore-path-14332-by-fisker" translate="no">​</a></h4>
<p>You can now pass multiple <code>--ignore-path</code>.</p>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier . --ignore-path=.prettier-ignore --ignore-path=.eslintignore</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="display-posix-style-paths-on-windows-14333-by-fisker">Display posix style paths on Windows (<a href="https://github.com/prettier/prettier/pull/14333" target="_blank" rel="noopener noreferrer" class="">#14333</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#display-posix-style-paths-on-windows-14333-by-fisker" class="hash-link" aria-label="Direct link to display-posix-style-paths-on-windows-14333-by-fisker" title="Direct link to display-posix-style-paths-on-windows-14333-by-fisker" translate="no">​</a></h4>
<p>Align with other tools like ESLint and Stylelint.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token maybe-class-name">Checking</span><span class="token plain"> formatting</span><span class="token spread operator" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">warn</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> src\utilities\create</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">get</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">visitor</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">keys</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">js</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">warn</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> src\utilities\unexpected</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">node</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">js</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">warn</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token maybe-class-name">Code</span><span class="token plain"> style issues found </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> files</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token property-access maybe-class-name">Forgot</span><span class="token plain"> to run </span><span class="token maybe-class-name">Prettier</span><span class="token operator" style="color:#393A34">?</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token maybe-class-name">Checking</span><span class="token plain"> formatting</span><span class="token spread operator" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">warn</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> src</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">utilities</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">create</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">get</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">visitor</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">keys</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">js</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">warn</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> src</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">utilities</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">unexpected</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">node</span><span class="token operator" style="color:#393A34">-</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">js</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">warn</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token maybe-class-name">Code</span><span class="token plain"> style issues found </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> files</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token property-access maybe-class-name">Forgot</span><span class="token plain"> to run </span><span class="token maybe-class-name">Prettier</span><span class="token operator" style="color:#393A34">?</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dont-expand-globs-via-symbolic-links-14627-by-andersk">Don’t expand globs via symbolic links (<a href="https://github.com/prettier/prettier/pull/14627" target="_blank" rel="noopener noreferrer" class="">#14627</a> by <a href="https://github.com/andersk" target="_blank" rel="noopener noreferrer" class="">@andersk</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#dont-expand-globs-via-symbolic-links-14627-by-andersk" class="hash-link" aria-label="Direct link to dont-expand-globs-via-symbolic-links-14627-by-andersk" title="Direct link to dont-expand-globs-via-symbolic-links-14627-by-andersk" translate="no">​</a></h4>
<p>Prettier no longer follows symbolic links while expanding command line
arguments. This avoids problems in many scenarios such as symlinks
outside the source tree, symlinks to ignored files, and cycles of
symlinks.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-line-breaking-after-file-path-with-errors-14788-by-sosukesuzuki">Print line breaking after file path with errors (<a href="https://github.com/prettier/prettier/pull/14788" target="_blank" rel="noopener noreferrer" class="">#14788</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#print-line-breaking-after-file-path-with-errors-14788-by-sosukesuzuki" class="hash-link" aria-label="Direct link to print-line-breaking-after-file-path-with-errors-14788-by-sosukesuzuki" title="Direct link to print-line-breaking-after-file-path-with-errors-14788-by-sosukesuzuki" translate="no">​</a></h4>
<p>Previously, only the <code>--write</code> option printed a newline before the error, but other options and no options print a newline as well.</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier ./test.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test.js</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> test.js: SyntaxError: Unexpected token: </span><span class="token string" style="color:#e3116c">')'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token plain">:6</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">+-</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> hoge</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">     </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">      ^</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> test.js: SyntaxError: Unexpected token: </span><span class="token string" style="color:#e3116c">')'</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token plain">:6</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">+-</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> hoge</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">     </span><span class="token operator" style="color:#393A34">|</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="clear-filename-before-print-ignored-file-code-to-screen-14794-by-fisker">Clear filename before print ignored file code to screen (<a href="https://github.com/prettier/prettier/pull/14794" target="_blank" rel="noopener noreferrer" class="">#14794</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2023/07/05/3.0.0#clear-filename-before-print-ignored-file-code-to-screen-14794-by-fisker" class="hash-link" aria-label="Direct link to clear-filename-before-print-ignored-file-code-to-screen-14794-by-fisker" title="Direct link to clear-filename-before-print-ignored-file-code-to-screen-14794-by-fisker" translate="no">​</a></h4>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">echo</span><span class="token plain"> test.js </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> .prettierignore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">echo</span><span class="token plain"> code </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> test.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier ./test.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test.jscode</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 3.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">code</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 2.8: improve --cache CLI option and TypeScript 4.9 satisfies operator!]]></title>
        <id>https://prettier.io/blog/2022/11/23/2.8.0</id>
        <link href="https://prettier.io/blog/2022/11/23/2.8.0"/>
        <updated>2022-11-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release includes improvements to the --cache option added in 2.7. A new --cache-location option has been added, and a bug that saved the cache even when --write wasn't specified has been fixed.]]></summary>
        <content type="html"><![CDATA[<p>This release includes improvements to the <code>--cache</code> option added in 2.7. A new <code>--cache-location</code> option has been added, and a bug that saved the cache even when <code>--write</code> wasn't specified has been fixed.</p>
<p>We're also adding support for TypeScript 4.9 <code>satisfies</code> operator!</p>
<p>If you enjoy Prettier and would like to support our work, consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on, including <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>.</p>
<p>The Prettier team plans to release 3.0 within the next few months. If you are a plugin developer, get ready for the migration. Visit <a href="https://github.com/prettier/prettier/wiki/How-to-migrate-my-plugin-to-support-Prettier-v3%3F" target="_blank" rel="noopener noreferrer" class="">the migration guide</a> and issue <a href="https://github.com/prettier/prettier/issues/13616" target="_blank" rel="noopener noreferrer" class="">#13606</a> for more information.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2022/11/23/2.8.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2022/11/23/2.8.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-typescript-49-satisfies-operator-13764-13783-13872-by-sosukesuzuki">Support TypeScript 4.9 <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/#satisfies" target="_blank" rel="noopener noreferrer" class=""><code>satisfies</code> operator</a> (<a href="https://github.com/prettier/prettier/pull/13764" target="_blank" rel="noopener noreferrer" class="">#13764</a>, <a href="https://github.com/prettier/prettier/pull/13783" target="_blank" rel="noopener noreferrer" class="">#13783</a>, <a href="https://github.com/prettier/prettier/pull/13872" target="_blank" rel="noopener noreferrer" class="">#13872</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#support-typescript-49-satisfies-operator-13764-13783-13872-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-typescript-49-satisfies-operator-13764-13783-13872-by-sosukesuzuki" title="Direct link to support-typescript-49-satisfies-operator-13764-13783-13872-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> palette </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  red</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">255</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  green</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"#00ff00"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  blue</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">255</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> satisfies </span><span class="token maybe-class-name">Record</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token maybe-class-name">Colors</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">RGB</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/#auto-accessors-in-classes" target="_blank" rel="noopener noreferrer" class="">Auto-Accessors in Classes</a> will be supported in an upcoming 2.8 patch release. We have de-scoped them for now to ship <code>satisfies</code> operator sooner.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://prettier.io/blog/2022/11/23/2.8.0#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="do-not-save-the-cache-if-the---write-option-wasnt-specified-13016-by-milly">Do not save the cache if the <code>--write</code> option wasn't specified (<a href="https://github.com/prettier/prettier/pull/13016" target="_blank" rel="noopener noreferrer" class="">#13016</a> by <a href="https://github.com/Milly" target="_blank" rel="noopener noreferrer" class="">@Milly</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#do-not-save-the-cache-if-the---write-option-wasnt-specified-13016-by-milly" class="hash-link" aria-label="Direct link to do-not-save-the-cache-if-the---write-option-wasnt-specified-13016-by-milly" title="Direct link to do-not-save-the-cache-if-the---write-option-wasnt-specified-13016-by-milly" translate="no">​</a></h4>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier </span><span class="token parameter variable" style="color:#36acaa">--cache</span><span class="token plain"> foo.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># This shows formatted contents of `foo.js`.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Then cache is created and `foo.js` is flagged as already formatted.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier </span><span class="token parameter variable" style="color:#36acaa">--cache</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--write</span><span class="token plain"> foo.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo.js 2ms </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">cached</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># "... (cached)" means the file is already formatted, so nothing is done this time.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier </span><span class="token parameter variable" style="color:#36acaa">--cache</span><span class="token plain"> foo.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Show formatted contents of `foo.js`.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier </span><span class="token parameter variable" style="color:#36acaa">--cache</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--write</span><span class="token plain"> foo.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo.js 2ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># `foo.js` is formatted now.</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add---cache-location-option-13019-by-sosukesuzuki">Add <code>--cache-location</code> option (<a href="https://github.com/prettier/prettier/pull/13019" target="_blank" rel="noopener noreferrer" class="">#13019</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#add---cache-location-option-13019-by-sosukesuzuki" class="hash-link" aria-label="Direct link to add---cache-location-option-13019-by-sosukesuzuki" title="Direct link to add---cache-location-option-13019-by-sosukesuzuki" translate="no">​</a></h4>
<p>By default, Prettier CLI saves the cache file for the <code>--cache</code> option at <code>./node_modules/.cache/prettier/.prettier-cache</code>. This can be overridden now:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier </span><span class="token parameter variable" style="color:#36acaa">--write</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--cache</span><span class="token plain"> --cache-location</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">my_cache_file src</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2022/11/23/2.8.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2022/11/23/2.8.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-docblock-parsing-13054-by-fisker">Fix docblock parsing (<a href="https://github.com/prettier/prettier/pull/13054" target="_blank" rel="noopener noreferrer" class="">#13054</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#fix-docblock-parsing-13054-by-fisker" class="hash-link" aria-label="Direct link to fix-docblock-parsing-13054-by-fisker" title="Direct link to fix-docblock-parsing-13054-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// With `--insert-pragma` flag</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/**</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * /* comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> *</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @format</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/**</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> *</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> * @format</span><br></span><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-range-format-for-function-bodies-13173-by-thorn0">Fix range format for function bodies (<a href="https://github.com/prettier/prettier/pull/13173" target="_blank" rel="noopener noreferrer" class="">#13173</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#fix-range-format-for-function-bodies-13173-by-thorn0" class="hash-link" aria-label="Direct link to fix-range-format-for-function-bodies-13173-by-thorn0" title="Direct link to fix-range-format-for-function-bodies-13173-by-thorn0" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> fn </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">//</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">//^^^^^^^^^^ - range</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> fn </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">//</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> fn </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">//</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-inconsistent-formatting-for-multiline-strings-13274-by-glebdolzhikov">Fix inconsistent formatting for multiline strings (<a href="https://github.com/prettier/prettier/pull/13274" target="_blank" rel="noopener noreferrer" class="">#13274</a> by <a href="https://github.com/GlebDolzhikov" target="_blank" rel="noopener noreferrer" class="">@GlebDolzhikov</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#fix-inconsistent-formatting-for-multiline-strings-13274-by-glebdolzhikov" class="hash-link" aria-label="Direct link to fix-inconsistent-formatting-for-multiline-strings-13274-by-glebdolzhikov" title="Direct link to fix-inconsistent-formatting-for-multiline-strings-13274-by-glebdolzhikov" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> loremIpsumFooBazBar1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">         Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> loremIpsumFooBazBar2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">         Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">         Multiline string'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> loremIpsumFooBazBar1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">         Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> loremIpsumFooBazBar2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">         Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">         Multiline string"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> loremIpsumFooBazBar1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">         Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> loremIpsumFooBazBar2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">         Multiline string\</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">         Multiline string"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript-1">TypeScript<a href="https://prettier.io/blog/2022/11/23/2.8.0#typescript-1" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-parens-in-inferred-function-return-types-with-extends-13289-by-glebdolzhikov">Fix parens in inferred function return types with <code>extends</code> (<a href="https://github.com/prettier/prettier/pull/13289" target="_blank" rel="noopener noreferrer" class="">#13289</a> by <a href="https://github.com/GlebDolzhikov" target="_blank" rel="noopener noreferrer" class="">@GlebDolzhikov</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#fix-parens-in-inferred-function-return-types-with-extends-13289-by-glebdolzhikov" class="hash-link" aria-label="Direct link to fix-parens-in-inferred-function-return-types-with-extends-13289-by-glebdolzhikov" title="Direct link to fix-parens-in-inferred-function-return-types-with-extends-13289-by-glebdolzhikov" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">...</span><span class="token plain">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">infer</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">R</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name builtin">string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">R</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">never</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">...</span><span class="token plain">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">infer</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">R</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name builtin">string</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">R</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">never</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">...</span><span class="token plain">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">infer</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">R</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name builtin">string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">R</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">never</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="css">CSS<a href="https://prettier.io/blog/2022/11/23/2.8.0#css" class="hash-link" aria-label="Direct link to CSS" title="Direct link to CSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-of-long-is-where-and-not-selectors-13577-by-j-f1">Fix formatting of long <code>:is</code>, <code>:where</code>, and <code>:not</code> selectors (<a href="https://github.com/prettier/prettier/pull/13577" target="_blank" rel="noopener noreferrer" class="">#13577</a> by <a href="https://github.com/j-f1" target="_blank" rel="noopener noreferrer" class="">@j-f1</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#fix-formatting-of-long-is-where-and-not-selectors-13577-by-j-f1" class="hash-link" aria-label="Direct link to fix-formatting-of-long-is-where-and-not-selectors-13577-by-j-f1" title="Direct link to fix-formatting-of-long-is-where-and-not-selectors-13577-by-j-f1" translate="no">​</a></h4>
<p>Pseudo-selectors like <code>:is</code>, <code>:where</code>, and <code>:not</code> that can take multiple selectors as arguments are now formatted like function calls are in other languages. Previously, no special significance was attached to the commas between their “arguments,” leading to confusing wrapping behavior. There are likely still improvements to be made here — please open an issue with some example code if you find something that doesn’t look as expected.</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:where</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  label </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> input</span><span class="token selector pseudo-class" style="color:#00009f">:valid</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  label </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> textarea</span><span class="token selector pseudo-class" style="color:#00009f">:not</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector pseudo-class" style="color:#00009f">:empty</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  label </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> button</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">disabled</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f"></span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector" style="color:#00009f"> </span><span class="token selector combinator" style="color:#00009f">~</span><span class="token selector" style="color:#00009f"> </span><span class="token selector class" style="color:#00009f">.errors</span><span class="token selector" style="color:#00009f"> </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> </span><span class="token selector class" style="color:#00009f">.error</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">display</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> none</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.7 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:where</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f">label </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> input</span><span class="token selector pseudo-class" style="color:#00009f">:valid</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> label </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> textarea</span><span class="token selector pseudo-class" style="color:#00009f">:not</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector pseudo-class" style="color:#00009f">:empty</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"> label</span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">    </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> button</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">disabled</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  </span><span class="token selector combinator" style="color:#00009f">~</span><span class="token selector" style="color:#00009f"> </span><span class="token selector class" style="color:#00009f">.errors</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> </span><span class="token selector class" style="color:#00009f">.error</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">display</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> none</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.8 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector pseudo-class" style="color:#00009f">:where</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">    label </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> input</span><span class="token selector pseudo-class" style="color:#00009f">:valid</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">    label </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> textarea</span><span class="token selector pseudo-class" style="color:#00009f">:not</span><span class="token selector punctuation" style="color:#393A34">(</span><span class="token selector pseudo-class" style="color:#00009f">:empty</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector punctuation" style="color:#393A34">,</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">    label </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> button</span><span class="token selector attribute punctuation" style="color:#393A34">[</span><span class="token selector attribute attr-name" style="color:#00a4db">disabled</span><span class="token selector attribute punctuation" style="color:#393A34">]</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  </span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  </span><span class="token selector combinator" style="color:#00009f">~</span><span class="token selector" style="color:#00009f"> </span><span class="token selector class" style="color:#00009f">.errors</span><span class="token selector" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token selector" style="color:#00009f">  </span><span class="token selector combinator" style="color:#00009f">&gt;</span><span class="token selector" style="color:#00009f"> </span><span class="token selector class" style="color:#00009f">.error</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">display</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> none</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scss">SCSS<a href="https://prettier.io/blog/2022/11/23/2.8.0#scss" class="hash-link" aria-label="Direct link to SCSS" title="Direct link to SCSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-extra-space-between--and--13286-by-jspereiramoura">Fix: extra space between '#' and '{' (<a href="https://github.com/prettier/prettier/pull/13286" target="_blank" rel="noopener noreferrer" class="">#13286</a> by <a href="https://github.com/jspereiramoura" target="_blank" rel="noopener noreferrer" class="">@jspereiramoura</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#fix-extra-space-between--and--13286-by-jspereiramoura" class="hash-link" aria-label="Direct link to fix-extra-space-between--and--13286-by-jspereiramoura" title="Direct link to fix-extra-space-between--and--13286-by-jspereiramoura" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property" style="color:#36acaa">padding</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">--spacer#</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property" style="color:#36acaa">padding</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">--spacer# </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property" style="color:#36acaa">padding</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">var</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">--spacer#</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular">Angular<a href="https://prettier.io/blog/2022/11/23/2.8.0#angular" class="hash-link" aria-label="Direct link to Angular" title="Direct link to Angular" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="insert-spaces-in-pipe-13100-by-sosukesuzuki">Insert spaces in pipe (<a href="https://github.com/prettier/prettier/pull/13100" target="_blank" rel="noopener noreferrer" class="">#13100</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#insert-spaces-in-pipe-13100-by-sosukesuzuki" class="hash-link" aria-label="Direct link to insert-spaces-in-pipe-13100-by-sosukesuzuki" title="Direct link to insert-spaces-in-pipe-13100-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">tui-line-chart</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">[value]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">chart | tuiFilter : filter : range | tuiMapper : toNumbers : range</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">tui-line-chart</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.7 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">tui-line-chart</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">[value]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">chart | tuiFilter: filter:range | tuiMapper: toNumbers:range</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">tui-line-chart</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">tui-line-chart</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">[value]</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">chart | tuiFilter : filter : range | tuiMapper : toNumbers : range</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">tui-line-chart</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ember--handlebars">Ember / Handlebars<a href="https://prettier.io/blog/2022/11/23/2.8.0#ember--handlebars" class="hash-link" aria-label="Direct link to Ember / Handlebars" title="Direct link to Ember / Handlebars" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="correctly-format-custom-else-if-blocks-13507-by-jamescdavis">Correctly format custom "else if" blocks (<a href="https://github.com/prettier/prettier/pull/13507" target="_blank" rel="noopener noreferrer" class="">#13507</a> by <a href="https://github.com/jamescdavis" target="_blank" rel="noopener noreferrer" class="">@jamescdavis</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#correctly-format-custom-else-if-blocks-13507-by-jamescdavis" class="hash-link" aria-label="Direct link to correctly-format-custom-else-if-blocks-13507-by-jamescdavis" title="Direct link to correctly-format-custom-else-if-blocks-13507-by-jamescdavis" translate="no">​</a></h4>
<p>A template transform can be used to create custom block keywords that behave similar to <code>if</code>. This updates printer-glimmer to correctly recognize and format the "else if" case when "if" is a custom keyword.</p>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{! Input }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">when</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">isAtWork</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Ship</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">that</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">code</span><span class="token punctuation" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">else</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">when</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">isReading</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">You</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">can</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">finish</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">War</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">and</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Peace</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">eventually</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">else</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Go</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">to</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">bed</span><span class="token punctuation" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">when</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 2.7 }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">when</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">isAtWork</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Ship</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">that</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">code</span><span class="token punctuation" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">else</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">when</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">isReading</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">You</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">can</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">finish</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">War</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">and</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Peace</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">eventually</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">else</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">Go</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">to</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">bed</span><span class="token punctuation" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">when</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">when</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 2.8 }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">when</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">isAtWork</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Ship</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">that</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">code</span><span class="token punctuation" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">else</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">when</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">isReading</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">You</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">can</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">finish</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">War</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">and</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Peace</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">eventually</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">else</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Go</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">to</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">bed</span><span class="token punctuation" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">when</span><span class="token delimiter punctuation" style="color:#393A34">}}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown">Markdown<a href="https://prettier.io/blog/2022/11/23/2.8.0#markdown" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-inline-code-line-breaks-if---prose-wrappreserve-11373-by-andersk">Preserve inline code line breaks if <code>--prose-wrap=preserve</code> (<a href="https://github.com/prettier/prettier/pull/11373" target="_blank" rel="noopener noreferrer" class="">#11373</a> by <a href="https://github.com/andersk" target="_blank" rel="noopener noreferrer" class="">@andersk</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#preserve-inline-code-line-breaks-if---prose-wrappreserve-11373-by-andersk" class="hash-link" aria-label="Direct link to preserve-inline-code-line-breaks-if---prose-wrappreserve-11373-by-andersk" title="Direct link to preserve-inline-code-line-breaks-if---prose-wrappreserve-11373-by-andersk" translate="no">​</a></h4>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod `tempor</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">incididunt` ut labore et dolore magna aliqua.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.7 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod </span><span class="token code-snippet code keyword" style="color:#00009f">`tempor incididunt`</span><span class="token plain"> ut labore et dolore magna aliqua.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.8 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod `tempor</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">incididunt` ut labore et dolore magna aliqua.</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mdx">MDX<a href="https://prettier.io/blog/2022/11/23/2.8.0#mdx" class="hash-link" aria-label="Direct link to MDX" title="Direct link to MDX" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-mdx-range-ignore-support-12208-by-nickrttn">Improve MDX range ignore support (<a href="https://github.com/prettier/prettier/pull/12208" target="_blank" rel="noopener noreferrer" class="">#12208</a> by <a href="https://github.com/nickrttn" target="_blank" rel="noopener noreferrer" class="">@nickrttn</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#improve-mdx-range-ignore-support-12208-by-nickrttn" class="hash-link" aria-label="Direct link to improve-mdx-range-ignore-support-12208-by-nickrttn" title="Direct link to improve-mdx-range-ignore-support-12208-by-nickrttn" translate="no">​</a></h4>
<p>Adds support for using Markdown <a href="https://prettier.io/docs/ignore#range-ignore" target="_blank" rel="noopener noreferrer" class="">range ignore</a> directives in MDX, using JSX comments.</p>
<div class="language-mdx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-mdx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">// Input</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{/* prettier-ignore-start */}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">export const Hello = () =&gt; {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  return (&lt;p&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Hello&lt;/p&gt;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{/* prettier-ignore-end */}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 2.7 (throws an error)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">TypeError: Cannot read properties of undefined (reading 'type')</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 2.8</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{/* prettier-ignore-start */}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">export const Hello = () =&gt; {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  return (&lt;p&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Hello&lt;/p&gt;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{/* prettier-ignore-end */}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api">API<a href="https://prettier.io/blog/2022/11/23/2.8.0#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="doc-explorer-mode-for-the-playground-10183-by-thorn0">"Doc Explorer" mode for the Playground (<a href="https://github.com/prettier/prettier/pull/10183" target="_blank" rel="noopener noreferrer" class="">#10183</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#doc-explorer-mode-for-the-playground-10183-by-thorn0" class="hash-link" aria-label="Direct link to doc-explorer-mode-for-the-playground-10183-by-thorn0" title="Direct link to doc-explorer-mode-for-the-playground-10183-by-thorn0" translate="no">​</a></h4>
<p>Switch the <code>parser</code> option to the special <code>doc-explorer</code> value to play with Prettier's intermediate representation and see how it's printed with different options.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-doc-printer-issue-when-using-ifbreak-inside-group-12362-by-fisker">Fix doc printer issue when using <code>ifBreak</code> inside <code>group</code> (<a href="https://github.com/prettier/prettier/pull/12362" target="_blank" rel="noopener noreferrer" class="">#12362</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#fix-doc-printer-issue-when-using-ifbreak-inside-group-12362-by-fisker" class="hash-link" aria-label="Direct link to fix-doc-printer-issue-when-using-ifbreak-inside-group-12362-by-fisker" title="Direct link to fix-doc-printer-issue-when-using-ifbreak-inside-group-12362-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">//                                                                              |80</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> number </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">12</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> number </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">12</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.8</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> number </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">123_123_123</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">12</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="rethrow-embed-errors-checkbox-on-the-playground-13227-by-thorn0">"Rethrow embed errors" checkbox on the Playground (<a href="https://github.com/prettier/prettier/pull/13227" target="_blank" rel="noopener noreferrer" class="">#13227</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#rethrow-embed-errors-checkbox-on-the-playground-13227-by-thorn0" class="hash-link" aria-label="Direct link to rethrow-embed-errors-checkbox-on-the-playground-13227-by-thorn0" title="Direct link to rethrow-embed-errors-checkbox-on-the-playground-13227-by-thorn0" translate="no">​</a></h4>
<p>Previously, the behavior of the Playground was confusingly inconsistent with the local behavior of Prettier in that it surfaced parsing errors in embedded languages for debug purposes. Now this behavior is controlled by a checkbox and disabled by default.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-1">CLI<a href="https://prettier.io/blog/2022/11/23/2.8.0#cli-1" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="infer-parser-for-lintstagedrc-13081-by-orrosenblatt">Infer parser for <code>.lintstagedrc</code> (<a href="https://github.com/prettier/prettier/pull/13081" target="_blank" rel="noopener noreferrer" class="">#13081</a> by <a href="https://github.com/OrRosenblatt" target="_blank" rel="noopener noreferrer" class="">@OrRosenblatt</a>)<a href="https://prettier.io/blog/2022/11/23/2.8.0#infer-parser-for-lintstagedrc-13081-by-orrosenblatt" class="hash-link" aria-label="Direct link to infer-parser-for-lintstagedrc-13081-by-orrosenblatt" title="Direct link to infer-parser-for-lintstagedrc-13081-by-orrosenblatt" translate="no">​</a></h4>
<p>A <code>.lintstagedrc</code> file (without extension) is handled using <code>json</code> and <code>yaml</code> parsers.</p>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 2.7: new --cache CLI option and TypeScript 4.7 syntax!]]></title>
        <id>https://prettier.io/blog/2022/06/14/2.7.0</id>
        <link href="https://prettier.io/blog/2022/06/14/2.7.0"/>
        <updated>2022-06-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release includes a new --cache CLI option. Enabling this option will use some attributes as cache keys and format files only if they have changed. This could dramatically improve CLI performance.]]></summary>
        <content type="html"><![CDATA[<p>This release includes a new <code>--cache</code> CLI option. Enabling this option will use some attributes as cache keys and format files only if they have changed. This could dramatically improve CLI performance.</p>
<p>We've also added support formatting for TypeScript 4.7 syntax!</p>
<p>If you enjoy Prettier and would like to support our work, consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on, including <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2022/06/14/2.7.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2022/06/14/2.7.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-typescript-47-12896-12897-12898-12900-12921-12924-12959-by-sosukesuzuki">Support TypeScript 4.7 (<a href="https://github.com/prettier/prettier/pull/12896" target="_blank" rel="noopener noreferrer" class="">#12896</a>, <a href="https://github.com/prettier/prettier/pull/12897" target="_blank" rel="noopener noreferrer" class="">#12897</a>, <a href="https://github.com/prettier/prettier/pull/12898" target="_blank" rel="noopener noreferrer" class="">#12898</a>, <a href="https://github.com/prettier/prettier/pull/12900" target="_blank" rel="noopener noreferrer" class="">#12900</a>, <a href="https://github.com/prettier/prettier/pull/12921" target="_blank" rel="noopener noreferrer" class="">#12921</a>, <a href="https://github.com/prettier/prettier/pull/12924" target="_blank" rel="noopener noreferrer" class="">#12924</a>, <a href="https://github.com/prettier/prettier/pull/12959" target="_blank" rel="noopener noreferrer" class="">#12959</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#support-typescript-47-12896-12897-12898-12900-12921-12924-12959-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-typescript-47-12896-12897-12898-12900-12921-12924-12959-by-sosukesuzuki" title="Direct link to support-typescript-47-12896-12897-12898-12900-12921-12924-12959-by-sosukesuzuki" translate="no">​</a></h4>
<p>Support <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-7" target="_blank" rel="noopener noreferrer" class="">TypeScript 4.7</a> new features!</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="instantiation-expressions"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-7/#instantiation-expressions" target="_blank" rel="noopener noreferrer" class="">Instantiation Expressions</a><a href="https://prettier.io/blog/2022/06/14/2.7.0#instantiation-expressions" class="hash-link" aria-label="Direct link to instantiation-expressions" title="Direct link to instantiation-expressions" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">Box</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  value</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token generic-function function" style="color:#d73a49">makeBox</span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name constant" style="color:#36acaa">T</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">value</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> value </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> makeHammerBox </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> makeBox</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">Hammer</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> makeWrenchBox </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> makeBox</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">Wrench</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="optional-variance-annotations"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-7/#optional-variance-annotations-for-type-parameters" target="_blank" rel="noopener noreferrer" class="">Optional Variance Annotations</a><a href="https://prettier.io/blog/2022/06/14/2.7.0#optional-variance-annotations" class="hash-link" aria-label="Direct link to optional-variance-annotations" title="Direct link to optional-variance-annotations" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">Animal</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  animalStuff</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">Dog</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">Animal</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  dogStuff</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Getter</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name">out </span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Setter</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name keyword" style="color:#00009f">in</span><span class="token class-name"> </span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">value</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="extends-constraints-for-infer"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-7/#extends-constraints-on-infer-type-variables" target="_blank" rel="noopener noreferrer" class=""><code>extends</code> constraints for <code>infer</code></a><a href="https://prettier.io/blog/2022/06/14/2.7.0#extends-constraints-for-infer" class="hash-link" aria-label="Direct link to extends-constraints-for-infer" title="Direct link to extends-constraints-for-infer" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">FirstString</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token keyword" style="color:#00009f">infer</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">S</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name builtin">string</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">...</span><span class="token builtin">unknown</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">S</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">never</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://prettier.io/blog/2022/06/14/2.7.0#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add---cache-and---cache-strategy-cli-options-12800-by-sosukesuzuki">Add <code>--cache</code> and <code>--cache-strategy</code> CLI options (<a href="https://github.com/prettier/prettier/pull/12800" target="_blank" rel="noopener noreferrer" class="">#12800</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#add---cache-and---cache-strategy-cli-options-12800-by-sosukesuzuki" class="hash-link" aria-label="Direct link to add---cache-and---cache-strategy-cli-options-12800-by-sosukesuzuki" title="Direct link to add---cache-and---cache-strategy-cli-options-12800-by-sosukesuzuki" translate="no">​</a></h4>
<p>Two new CLI options have been added for a caching system similar to <a href="https://eslint.org/docs/user-guide/command-line-interface#caching" target="_blank" rel="noopener noreferrer" class="">ESLint's one</a>.</p>
<p>Please see <a href="https://prettier.io/docs/cli#--cache" target="_blank" rel="noopener noreferrer" class="">the doc</a> for more details.</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="--cache"><code>--cache</code><a href="https://prettier.io/blog/2022/06/14/2.7.0#--cache" class="hash-link" aria-label="Direct link to --cache" title="Direct link to --cache" translate="no">​</a></h5>
<p>If this option is enabled, the following values are used as cache keys and the file is formatted only if one of them is changed.</p>
<ul>
<li class="">Prettier version</li>
<li class="">Options</li>
<li class="">Node.js version</li>
<li class="">(if <code>--cache-strategy</code> is <code>content</code>) content of the file</li>
<li class="">(if <code>--cache-strategy</code> is <code>metadata</code>) file metadata, such as timestamps</li>
</ul>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier </span><span class="token parameter variable" style="color:#36acaa">--write</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--cache</span><span class="token plain"> src</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="--cache-strategy"><code>--cache-strategy</code><a href="https://prettier.io/blog/2022/06/14/2.7.0#--cache-strategy" class="hash-link" aria-label="Direct link to --cache-strategy" title="Direct link to --cache-strategy" translate="no">​</a></h5>
<p>Strategy for the cache to use for detecting changed files. Can be either <code>metadata</code> or <code>content</code>. If no strategy is specified, <code>content</code> will be used.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">prettier </span><span class="token parameter variable" style="color:#36acaa">--write</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--cache</span><span class="token plain"> --cache-strategy metadata src</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2022/06/14/2.7.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2022/06/14/2.7.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-blank-line-between-export-specifiers-12746-by-sosukesuzuki">Preserve blank line between export specifiers (<a href="https://github.com/prettier/prettier/pull/12746" target="_blank" rel="noopener noreferrer" class="">#12746</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#preserve-blank-line-between-export-specifiers-12746-by-sosukesuzuki" class="hash-link" aria-label="Direct link to preserve-blank-line-between-export-specifiers-12746-by-sosukesuzuki" title="Direct link to preserve-blank-line-between-export-specifiers-12746-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// a</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// b</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  bar1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  baz1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"mod"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// a</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// b</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  bar1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  baz1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"mod"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// a</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// b</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  bar1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  baz1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"mod"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="make-more-callee-patterns-recognized-as-test-call-callee-12779-by-hosokawar">Make more callee patterns recognized as "test call callee". (<a href="https://github.com/prettier/prettier/pull/12779" target="_blank" rel="noopener noreferrer" class="">#12779</a> by <a href="https://github.com/HosokawaR" target="_blank" rel="noopener noreferrer" class="">@HosokawaR</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#make-more-callee-patterns-recognized-as-test-call-callee-12779-by-hosokawar" class="hash-link" aria-label="Direct link to make-more-callee-patterns-recognized-as-test-call-callee-12779-by-hosokawar" title="Direct link to make-more-callee-patterns-recognized-as-test-call-callee-12779-by-hosokawar" translate="no">​</a></h4>
<p>Supports test calls like <a href="https://playwright.dev/docs/api/class-test#test-describe" target="_blank" rel="noopener noreferrer" class="">Playwright <code>test.describe</code></a>.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">step</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">describe</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">only</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">parallel</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">parallel</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">only</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the testThis is a very"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">serial</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">serial</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">only</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">step</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">describe</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">only</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">parallel</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">parallel</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">only</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the testThis is a very"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">serial</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">serial</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">only</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">step</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">describe</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">only</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">parallel</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">parallel</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">only</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the testThis is a very"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">serial</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">test</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">describe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">serial</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">only</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"does something really long and complicated so I have to write a very long name for the test"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-comment-formats-in-12860-by-hosokawar">Fix comment formats in (<a href="https://github.com/prettier/prettier/pull/12860" target="_blank" rel="noopener noreferrer" class="">#12860</a> by <a href="https://github.com/HosokawaR" target="_blank" rel="noopener noreferrer" class="">@HosokawaR</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#fix-comment-formats-in-12860-by-hosokawar" class="hash-link" aria-label="Direct link to fix-comment-formats-in-12860-by-hosokawar" title="Direct link to fix-comment-formats-in-12860-by-hosokawar" translate="no">​</a></h4>
<p>This change fixes the comment format in <code>exports</code> to align with the comment format in <code>import</code>.</p>
<p>Although this change does not affect the comments format in <code>import</code>, follows change log contains examples of comments in <code>import</code> for reference.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  bar </span><span class="token keyword module" style="color:#00009f">as</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">		 baz</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  bar </span><span class="token keyword module" style="color:#00009f">as</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">		 baz</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'foo'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  bar </span><span class="token keyword module" style="color:#00009f">as</span><span class="token plain"> baz</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  bar </span><span class="token keyword module" style="color:#00009f">as</span><span class="token plain"> baz</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  bar </span><span class="token keyword module" style="color:#00009f">as</span><span class="token plain"> baz</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  foo</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  bar </span><span class="token keyword module" style="color:#00009f">as</span><span class="token plain"> baz</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript-1">TypeScript<a href="https://prettier.io/blog/2022/06/14/2.7.0#typescript-1" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-as-instead-of--for-babel-ts-parser-12706-by-hosokawar">Print <code>as</code> instead of <code>:</code> for <code>babel-ts</code> parser (<a href="https://github.com/prettier/prettier/pull/12706" target="_blank" rel="noopener noreferrer" class="">#12706</a> by <a href="https://github.com/HosokawaR" target="_blank" rel="noopener noreferrer" class="">@HosokawaR</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#print-as-instead-of--for-babel-ts-parser-12706-by-hosokawar" class="hash-link" aria-label="Direct link to print-as-instead-of--for-babel-ts-parser-12706-by-hosokawar" title="Direct link to print-as-instead-of--for-babel-ts-parser-12706-by-hosokawar" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">x </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">x</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">x </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-for-typescript-enum-with-computed-members-12930-by-hosokawar">Fix formatting for typescript Enum with computed members (<a href="https://github.com/prettier/prettier/pull/12930" target="_blank" rel="noopener noreferrer" class="">#12930</a> by <a href="https://github.com/HosokawaR" target="_blank" rel="noopener noreferrer" class="">@HosokawaR</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#fix-formatting-for-typescript-enum-with-computed-members-12930-by-hosokawar" class="hash-link" aria-label="Direct link to fix-formatting-for-typescript-enum-with-computed-members-12930-by-hosokawar" title="Direct link to fix-formatting-for-typescript-enum-with-computed-members-12930-by-hosokawar" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">enum</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">i</span><span class="token operator" style="color:#393A34">++</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">enum</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  i</span><span class="token operator" style="color:#393A34">++</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">enum</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">i</span><span class="token operator" style="color:#393A34">++</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="stop-parsing-invalid-code-12982-by-fisker">Stop parsing invalid code (<a href="https://github.com/prettier/prettier/pull/12982" target="_blank" rel="noopener noreferrer" class="">#12982</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#stop-parsing-invalid-code-12982-by-fisker" class="hash-link" aria-label="Direct link to stop-parsing-invalid-code-12982-by-fisker" title="Direct link to stop-parsing-invalid-code-12982-by-fisker" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> object </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">methodName</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> object </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">methodName</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Unexpected</span><span class="token plain"> token</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">29</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> object </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">methodName</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">                             </span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2022/06/14/2.7.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-speculation-rules-api-formatting-in-html-12882-by-sosukesuzuki">Support Speculation Rules API formatting in HTML (<a href="https://github.com/prettier/prettier/pull/12882" target="_blank" rel="noopener noreferrer" class="">#12882</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#support-speculation-rules-api-formatting-in-html-12882-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-speculation-rules-api-formatting-in-html-12882-by-sosukesuzuki" title="Direct link to support-speculation-rules-api-formatting-in-html-12882-by-sosukesuzuki" translate="no">​</a></h4>
<p>Please read <a href="https://web.dev/speculative-prerendering/" target="_blank" rel="noopener noreferrer" class="">https://web.dev/speculative-prerendering/</a> for more information about the Speculation Rules API.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">speculationrules</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">   </span><span class="token script language-javascript string-property property" style="color:#36acaa">"prerender"</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">[</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript string-property property" style="color:#36acaa">"source"</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">"list"</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript string-property property" style="color:#36acaa">"urls"</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">[</span><span class="token script language-javascript string" style="color:#e3116c">"https://a.test/foo"</span><span class="token script language-javascript punctuation" style="color:#393A34">]</span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript punctuation" style="color:#393A34">]</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">speculationrules</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">   </span><span class="token script language-javascript string-property property" style="color:#36acaa">"prerender"</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">[</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript string-property property" style="color:#36acaa">"source"</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">"list"</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript string-property property" style="color:#36acaa">"urls"</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">[</span><span class="token script language-javascript string" style="color:#e3116c">"https://a.test/foo"</span><span class="token script language-javascript punctuation" style="color:#393A34">]</span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript punctuation" style="color:#393A34">]</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.7 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">script</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">speculationrules</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">    </span><span class="token script language-javascript string-property property" style="color:#36acaa">"prerender"</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">[</span><span class="token script language-javascript punctuation" style="color:#393A34">{</span><span class="token script language-javascript"> </span><span class="token script language-javascript string-property property" style="color:#36acaa">"source"</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:#e3116c">"list"</span><span class="token script language-javascript punctuation" style="color:#393A34">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript string-property property" style="color:#36acaa">"urls"</span><span class="token script language-javascript operator" style="color:#393A34">:</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">[</span><span class="token script language-javascript string" style="color:#e3116c">"https://a.test/foo"</span><span class="token script language-javascript punctuation" style="color:#393A34">]</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript punctuation" style="color:#393A34">]</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript">  </span><span class="token script language-javascript punctuation" style="color:#393A34">}</span><span class="token script language-javascript"></span><br></span><span class="token-line" style="color:#393A34"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">script</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="vue">Vue<a href="https://prettier.io/blog/2022/06/14/2.7.0#vue" class="hash-link" aria-label="Direct link to Vue" title="Direct link to Vue" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="allow-formatting-for-vue-template-expression-written-in-typescript-12584-by-sosukesuzuki">Allow formatting for Vue template expression written in TypeScript (<a href="https://github.com/prettier/prettier/pull/12584" target="_blank" rel="noopener noreferrer" class="">#12584</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#allow-formatting-for-vue-template-expression-written-in-typescript-12584-by-sosukesuzuki" class="hash-link" aria-label="Direct link to allow-formatting-for-vue-template-expression-written-in-typescript-12584-by-sosukesuzuki" title="Direct link to allow-formatting-for-vue-template-expression-written-in-typescript-12584-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-vue codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-vue codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- input --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script setup lang="ts"&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">let x: string | number = 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {{ (x      as      number).toFixed(2) }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.6 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script setup lang="ts"&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">let x: string | number = 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {{ (x      as      number).toFixed(2) }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.7 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script setup lang="ts"&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">let x: string | number = 1;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {{ (x as number).toFixed(2) }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="infer-stylus-parser-for-vue-sfc-style-block-12707-by-lsdsjy">Infer Stylus parser for Vue SFC style block (<a href="https://github.com/prettier/prettier/pull/12707" target="_blank" rel="noopener noreferrer" class="">#12707</a> by <a href="https://github.com/lsdsjy" target="_blank" rel="noopener noreferrer" class="">@lsdsjy</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#infer-stylus-parser-for-vue-sfc-style-block-12707-by-lsdsjy" class="hash-link" aria-label="Direct link to infer-stylus-parser-for-vue-sfc-style-block-12707-by-lsdsjy" title="Direct link to infer-stylus-parser-for-vue-sfc-style-block-12707-by-lsdsjy" translate="no">​</a></h4>
<p><code>&lt;style lang="stylus"&gt;</code> blocks in Vue SFCs can be processed by the appropriate plugin if any.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="avoid-printing-attribute-per-line-in-vue-sfc-blocks-12895-by-sosukesuzuki">Avoid printing attribute per line in Vue SFC blocks (<a href="https://github.com/prettier/prettier/pull/12895" target="_blank" rel="noopener noreferrer" class="">#12895</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#avoid-printing-attribute-per-line-in-vue-sfc-blocks-12895-by-sosukesuzuki" class="hash-link" aria-label="Direct link to avoid-printing-attribute-per-line-in-vue-sfc-blocks-12895-by-sosukesuzuki" title="Direct link to avoid-printing-attribute-per-line-in-vue-sfc-blocks-12895-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-vue codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-vue codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Input (singleAttributePerLine: true) --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script lang="ts" setup&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.6 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> lang="ts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> setup</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.7 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script lang="ts" setup&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/script&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="angular">Angular<a href="https://prettier.io/blog/2022/06/14/2.7.0#angular" class="hash-link" aria-label="Direct link to Angular" title="Direct link to Angular" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-shorthand-properties-formatting-12993-by-sosukesuzuki-fisker">Fix shorthand properties formatting (<a href="https://github.com/prettier/prettier/pull/12993" target="_blank" rel="noopener noreferrer" class="">#12993</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#fix-shorthand-properties-formatting-12993-by-sosukesuzuki-fisker" class="hash-link" aria-label="Direct link to fix-shorthand-properties-formatting-12993-by-sosukesuzuki-fisker" title="Direct link to fix-shorthand-properties-formatting-12993-by-sosukesuzuki-fisker" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ng-container</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">*ngTemplateOutlet</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">someTmpl; context: { app }</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ng-container</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.6 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ng-container</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">*ngTemplateOutlet</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">someTmpl; context: { app: this.app }</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ng-container</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.7 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ng-container</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">*ngTemplateOutlet</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">someTmpl; context: { app }</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ng-container</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="graphql">GraphQL<a href="https://prettier.io/blog/2022/06/14/2.7.0#graphql" class="hash-link" aria-label="Direct link to GraphQL" title="Direct link to GraphQL" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-support-for-printing-schemaextension-nodes-12519-by-trevor-scheer">Add support for printing SchemaExtension nodes (<a href="https://github.com/prettier/prettier/pull/12519" target="_blank" rel="noopener noreferrer" class="">#12519</a> by <a href="https://github.com/trevor-scheer" target="_blank" rel="noopener noreferrer" class="">@trevor-scheer</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#add-support-for-printing-schemaextension-nodes-12519-by-trevor-scheer" class="hash-link" aria-label="Direct link to add-support-for-printing-schemaextension-nodes-12519-by-trevor-scheer" title="Direct link to add-support-for-printing-schemaextension-nodes-12519-by-trevor-scheer" translate="no">​</a></h4>
<div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">extend</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">schema</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token attr-name" style="color:#00a4db">subscription</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token class-name">Subscription</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">extend</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">schema</span><span class="token plain"> </span><span class="token directive function" style="color:#d73a49">@directive</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token constant" style="color:#36acaa">N</span><span class="token plain">/</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> - </span><span class="token property" style="color:#36acaa">throws</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">error</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">extend</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">schema</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">subscription</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token class-name">Subscription</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">extend</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">schema</span><span class="token plain"> </span><span class="token directive function" style="color:#d73a49">@directive</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-single-line-and-empty-description-formatting-12608-by-chimurai-fisker">Fix single line and empty description formatting (<a href="https://github.com/prettier/prettier/pull/12608" target="_blank" rel="noopener noreferrer" class="">#12608</a> by <a href="https://github.com/chimurai" target="_blank" rel="noopener noreferrer" class="">@chimurai</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#fix-single-line-and-empty-description-formatting-12608-by-chimurai-fisker" class="hash-link" aria-label="Direct link to fix-single-line-and-empty-description-formatting-12608-by-chimurai-fisker" title="Direct link to fix-single-line-and-empty-description-formatting-12608-by-chimurai-fisker" translate="no">​</a></h4>
<div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token description string language-markdown" style="color:#e3116c"> Customer </span><span class="token description string" style="color:#e3116c">"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Person</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token description string" style="color:#e3116c">""""""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Person</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.6.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token description string language-markdown" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="color:#e3116c"> Customer</span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="color:#e3116c"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Person</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token description string language-markdown" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="display:inline-block;color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="color:#e3116c"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Person</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.6.2 (second format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token description string language-markdown" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="color:#e3116c">Customer</span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="color:#e3116c"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Person</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token description string language-markdown" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="display:inline-block;color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="color:#e3116c"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Person</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.7</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token description string language-markdown" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="color:#e3116c">Customer</span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="color:#e3116c"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Person</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token description string language-markdown" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="color:#e3116c"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Person</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli-1">CLI<a href="https://prettier.io/blog/2022/06/14/2.7.0#cli-1" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-the-number-of-files-need-change-12561-by-harry-hopkinson">Print the number of files need change (<a href="https://github.com/prettier/prettier/pull/12561" target="_blank" rel="noopener noreferrer" class="">#12561</a> by <a href="https://github.com/Harry-Hopkinson" target="_blank" rel="noopener noreferrer" class="">@Harry-Hopkinson</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#print-the-number-of-files-need-change-12561-by-harry-hopkinson" class="hash-link" aria-label="Direct link to print-the-number-of-files-need-change-12561-by-harry-hopkinson" title="Direct link to print-the-number-of-files-need-change-12561-by-harry-hopkinson" translate="no">​</a></h4>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 2.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier src --check</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checking formatting...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[warn] src/fileA.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[warn] Code style issues found in the above file(s). Forgot to run Prettier?</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 2.7</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier src --check</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checking formatting...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[warn] src/fileA.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[warn] src/fileB.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[warn] Code style issues found in 2 files. Forgot to run Prettier?</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier src --check</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checking formatting...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[warn] src/fileA.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[warn] Code style issues found in the above file. Forgot to run Prettier?</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="infer-parser-for-importmap-files-12603-by-fisker">Infer parser for <code>.importmap</code> files (<a href="https://github.com/prettier/prettier/pull/12603" target="_blank" rel="noopener noreferrer" class="">#12603</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#infer-parser-for-importmap-files-12603-by-fisker" class="hash-link" aria-label="Direct link to infer-parser-for-importmap-files-12603-by-fisker" title="Direct link to infer-parser-for-importmap-files-12603-by-fisker" translate="no">​</a></h4>
<p>Format <a href="https://github.com/WICG/import-maps#import-map-processing" target="_blank" rel="noopener noreferrer" class=""><code>.importmap</code></a> files as JSON files.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="simplify-performance-test-12682-12698-by-fisker">Simplify performance test (<a href="https://github.com/prettier/prettier/pull/12682" target="_blank" rel="noopener noreferrer" class="">#12682</a>, <a href="https://github.com/prettier/prettier/pull/12698" target="_blank" rel="noopener noreferrer" class="">#12698</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/06/14/2.7.0#simplify-performance-test-12682-12698-by-fisker" class="hash-link" aria-label="Direct link to simplify-performance-test-12682-12698-by-fisker" title="Direct link to simplify-performance-test-12682-12698-by-fisker" translate="no">​</a></h4>
<p>When <code>--debug-benchmark</code> or <code>--debug-repeat</code> is passed:</p>
<ol>
<li class="">The CLI skips print code to the screen or write file</li>
<li class="">Set log level to <code>debug</code> automatically</li>
</ol>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 2.6: new singleAttributePerLine option and new JavaScript features!]]></title>
        <id>https://prettier.io/blog/2022/03/16/2.6.0</id>
        <link href="https://prettier.io/blog/2022/03/16/2.6.0"/>
        <updated>2022-03-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release includes a new singleAttributePerLine option. This is an option to print only one attribute per line in Vue SFC templates, HTML, and JSX. Per our Option Philosophy, we would prefer not to add such an option. However, there are many users who want this feature, and major style guides like Airbnb’s JavaScript Style Guide and Vue’s style guide recommend the single attribute per line style. A PR to add this feature was opened in October 2019, and both it and the corresponding issue have received a significant amount of support from users. For us it was a hard decision to add this option. We hope the addition of this option will benefit many users without significantly harming our principles.]]></summary>
        <content type="html"><![CDATA[<p>This release includes a new <code>singleAttributePerLine</code> option. This is an option to print only one attribute per line in Vue SFC templates, HTML, and JSX. Per our <a href="https://prettier.io/docs/option-philosophy" target="_blank" rel="noopener noreferrer" class="">Option Philosophy</a>, we would prefer not to add such an option. However, there are many users who want this feature, and major style guides like <a href="https://github.com/airbnb/javascript/blob/274c8d570155a05b016980294d4204c5711bce86/packages/eslint-config-airbnb/rules/react.js#L97-L99" target="_blank" rel="noopener noreferrer" class="">Airbnb’s JavaScript Style Guide</a> and <a href="https://vuejs.org/style-guide/rules-strongly-recommended.html#multi-attribute-elements" target="_blank" rel="noopener noreferrer" class="">Vue’s style guide</a> recommend the single attribute per line style. A <a href="https://github.com/prettier/prettier/pull/6644" target="_blank" rel="noopener noreferrer" class="">PR</a> to add this feature was opened in October 2019, and both it and the <a href="https://github.com/prettier/prettier/issues/5501" target="_blank" rel="noopener noreferrer" class="">corresponding issue</a> have received a significant amount of support from users. For us it was a hard decision to add this option. We hope the addition of this option will benefit many users without significantly harming our principles.</p>
<p>We've also added support formatting for some new JavaScript syntax proposals via Babel.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="thanks-to-our-sponsors">Thanks to our sponsors!<a href="https://prettier.io/blog/2022/03/16/2.6.0#thanks-to-our-sponsors" class="hash-link" aria-label="Direct link to Thanks to our sponsors!" title="Direct link to Thanks to our sponsors!" translate="no">​</a></h2>
<p>As discussed in <a href="https://prettier.io/blog/2022/01/06/prettier-begins-paying-maintainers.html" target="_blank" rel="noopener noreferrer" class="">a blog post from earlier this year</a>, we have begun paying our maintainers from funds received from our sponsors. We would like to thank our many sponsors who have made this possible! We’re especially grateful to the following companies and individuals, who have donated over $1,000 to us:</p>
<ul>
<li class=""><a href="https://frontendmasters.com/" target="_blank" rel="noopener noreferrer" class="">Frontend Masters</a></li>
<li class=""><a href="https://www.salesforce.com/" target="_blank" rel="noopener noreferrer" class="">Salesforce</a></li>
<li class=""><a href="https://indeed.com/" target="_blank" rel="noopener noreferrer" class="">Indeed</a></li>
<li class=""><a href="https://sentry.io/welcome/" target="_blank" rel="noopener noreferrer" class="">Sentry</a></li>
<li class=""><a href="https://www.airbnb.com/" target="_blank" rel="noopener noreferrer" class="">Airbnb</a></li>
<li class=""><a href="https://engineering.linecorp.com/en/" target="_blank" rel="noopener noreferrer" class="">LINE</a></li>
<li class=""><a href="https://www.ampproject.org/" target="_blank" rel="noopener noreferrer" class="">AMP Project</a></li>
<li class=""><a href="https://www.ivx.com/" target="_blank" rel="noopener noreferrer" class="">InVision AG</a></li>
<li class=""><a href="https://ubiehealth.com/" target="_blank" rel="noopener noreferrer" class="">Ubie</a></li>
<li class=""><a href="https://getshogun.com/" target="_blank" rel="noopener noreferrer" class="">Shogun Labs, Inc</a></li>
<li class=""><a href="https://www.underbelly.is/" target="_blank" rel="noopener noreferrer" class="">Underbelly</a></li>
<li class=""><a href="https://www.principal.com/about-us" target="_blank" rel="noopener noreferrer" class="">Principal Financial Group</a></li>
<li class=""><a href="https://twitter.com/suhail" target="_blank" rel="noopener noreferrer" class="">Suhail Doshi</a></li>
</ul>
<p>If you enjoy Prettier and would like to support our work, consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on, including <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2022/03/16/2.6.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2022/03/16/2.6.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript-46-support-12400-by-dependabot">TypeScript 4.6 support (<a href="https://github.com/prettier/prettier/pull/12400" target="_blank" rel="noopener noreferrer" class="">#12400</a> by <a href="https://github.com/dependabot" target="_blank" rel="noopener noreferrer" class="">@dependabot</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#typescript-46-support-12400-by-dependabot" class="hash-link" aria-label="Direct link to typescript-46-support-12400-by-dependabot" title="Direct link to typescript-46-support-12400-by-dependabot" translate="no">​</a></h4>
<p>We’ve updated the version of TypeScript that we use to parse TS code to <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-6/" target="_blank" rel="noopener noreferrer" class="">TypeScript 4.6</a>. However, no new syntax was added in this release of TypeScript so we have not had to make any other changes.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2022/03/16/2.6.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="enforce-single-attribute-per-line-6644-by-kankje">Enforce Single Attribute Per Line (<a href="https://github.com/prettier/prettier/pull/6644" target="_blank" rel="noopener noreferrer" class="">#6644</a> by <a href="https://github.com/kankje" target="_blank" rel="noopener noreferrer" class="">@kankje</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#enforce-single-attribute-per-line-6644-by-kankje" class="hash-link" aria-label="Direct link to enforce-single-attribute-per-line-6644-by-kankje" title="Direct link to enforce-single-attribute-per-line-6644-by-kankje" translate="no">​</a></h4>
<p>Added the <code>singleAttributePerLine</code> option for specifying if Prettier should enforce single attribute per line in HTML, Vue and JSX.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-a</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">1</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-a</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">1</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-b</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">2</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-c</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">3</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-a</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">1</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-a</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">1</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-b</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">2</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-c</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">3</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.6, with `{"singleAttributePerLine": false}` --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-a</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">1</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-a</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">1</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-b</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">2</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-c</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">3</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.6, with `{"singleAttributePerLine": true}` --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">data-a</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">1</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-a</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">1</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-b</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">2</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-c</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">3</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2022/03/16/2.6.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2022/03/16/2.6.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="recognize-waitforasync-as-test-statement-in-angular-11992-by-hendrikn">Recognize waitForAsync as test-statement in Angular (<a href="https://github.com/prettier/prettier/pull/11992" target="_blank" rel="noopener noreferrer" class="">#11992</a> by <a href="https://github.com/HendrikN" target="_blank" rel="noopener noreferrer" class="">@HendrikN</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#recognize-waitforasync-as-test-statement-in-angular-11992-by-hendrikn" class="hash-link" aria-label="Direct link to recognize-waitforasync-as-test-statement-in-angular-11992-by-hendrikn" title="Direct link to recognize-waitforasync-as-test-statement-in-angular-11992-by-hendrikn" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">test</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo bar"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">waitForAsync</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">expect</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">toEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">test</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"foo bar"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">waitForAsync</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">expect</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">toEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">test</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo bar"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">waitForAsync</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">expect</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">toEqual</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-end-of-line-comments-after-if-statements-without-blocks-12017-by-sosukesuzuki">Preserve end-of-line comments after if statements without blocks (<a href="https://github.com/prettier/prettier/pull/12017" target="_blank" rel="noopener noreferrer" class="">#12017</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#preserve-end-of-line-comments-after-if-statements-without-blocks-12017-by-sosukesuzuki" class="hash-link" aria-label="Direct link to preserve-end-of-line-comments-after-if-statements-without-blocks-12017-by-sosukesuzuki" title="Direct link to preserve-end-of-line-comments-after-if-statements-without-blocks-12017-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">condition1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> expression1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment A</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">condition2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> expression2</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment B</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> expression3</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment C</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">condition1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> expression1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// comment A</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">condition2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> expression2</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// comment B</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> expression3</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment C</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">condition1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> expression1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment A</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">condition2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> expression2</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment B</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> expression3</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment C</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-comments-for-parenthesized-ts-keyword-types-with-babel-ts-parser-12070-by-sosukesuzuki">Print comments for parenthesized TS keyword types with <code>babel-ts</code> parser (<a href="https://github.com/prettier/prettier/pull/12070" target="_blank" rel="noopener noreferrer" class="">#12070</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#print-comments-for-parenthesized-ts-keyword-types-with-babel-ts-parser-12070-by-sosukesuzuki" class="hash-link" aria-label="Direct link to print-comments-for-parenthesized-ts-keyword-types-with-babel-ts-parser-12070-by-sosukesuzuki" title="Direct link to print-comments-for-parenthesized-ts-keyword-types-with-babel-ts-parser-12070-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> foo</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token builtin">never</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Error</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Comment </span><span class="token string" style="color:#e3116c">"comment"</span><span class="token plain"> was not printed</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> Please report </span><span class="token keyword" style="color:#00009f">this</span><span class="token plain"> error</span><span class="token operator" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> foo</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin">never</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-end-of-line-comments-for-continuebreak-statements-12075-by-sosukesuzuki">Print end-of-line comments for <code>continue</code>/<code>break</code> statements (<a href="https://github.com/prettier/prettier/pull/12075" target="_blank" rel="noopener noreferrer" class="">#12075</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#print-end-of-line-comments-for-continuebreak-statements-12075-by-sosukesuzuki" class="hash-link" aria-label="Direct link to print-end-of-line-comments-for-continuebreak-statements-12075-by-sosukesuzuki" title="Direct link to print-end-of-line-comments-for-continuebreak-statements-12075-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">continue</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">Error</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Comment</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"comment"</span><span class="token plain"> was not printed</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token property-access maybe-class-name">Please</span><span class="token plain"> report </span><span class="token keyword" style="color:#00009f">this</span><span class="token plain"> error</span><span class="token operator" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">continue</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="inline-await-expressions-in-jsx-12088--12109-by-j-f1">Inline <code>await</code> expressions in JSX (<a href="https://github.com/prettier/prettier/pull/12088" target="_blank" rel="noopener noreferrer" class="">#12088</a> &amp; <a href="https://github.com/prettier/prettier/pull/12109" target="_blank" rel="noopener noreferrer" class="">#12109</a> by <a href="https://github.com/j-f1" target="_blank" rel="noopener noreferrer" class="">@j-f1</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#inline-await-expressions-in-jsx-12088--12109-by-j-f1" class="hash-link" aria-label="Direct link to inline-await-expressions-in-jsx-12088--12109-by-j-f1" title="Direct link to inline-await-expressions-in-jsx-12088--12109-by-j-f1" translate="no">​</a></h4>
<p><code>await</code> expressions in JSX are now inlined if their argument would be inlined.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token known-class-name class-name">Promise</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">all</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  someVeryLongExpression</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">Lorem ipsum ...</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token known-class-name class-name">Promise</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">all</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    someVeryLongExpression</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">Lorem ipsum ...</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token known-class-name class-name">Promise</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">all</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  someVeryLongExpression</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">Lorem ipsum ...</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-acorn-parser-12172-by-fisker">Add <code>acorn</code> parser (<a href="https://github.com/prettier/prettier/pull/12172" target="_blank" rel="noopener noreferrer" class="">#12172</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#add-acorn-parser-12172-by-fisker" class="hash-link" aria-label="Direct link to add-acorn-parser-12172-by-fisker" title="Direct link to add-acorn-parser-12172-by-fisker" translate="no">​</a></h4>
<p>A new value for the <code>parser</code> option has been added: <a href="https://github.com/acornjs/acorn" target="_blank" rel="noopener noreferrer" class=""><code>acorn</code></a> - A small, fast, JavaScript-based JavaScript parser.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="keep-comments-after-default-cases-in-the-same-line-12177-by-duailibe">Keep comments after <code>default</code> cases in the same line (<a href="https://github.com/prettier/prettier/pull/12177" target="_blank" rel="noopener noreferrer" class="">#12177</a> by <a href="https://github.com/duailibe" target="_blank" rel="noopener noreferrer" class="">@duailibe</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#keep-comments-after-default-cases-in-the-same-line-12177-by-duailibe" class="hash-link" aria-label="Direct link to keep-comments-after-default-cases-in-the-same-line-12177-by-duailibe" title="Direct link to keep-comments-after-default-cases-in-the-same-line-12177-by-duailibe" translate="no">​</a></h4>
<p>Keep comments right after <code>default</code> cases (in switch statements) in the same line, when possible.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">read_statement</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">switch</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">peek_keyword</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">case</span><span class="token plain"> </span><span class="token maybe-class-name">Keyword</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">impl</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// impl&lt;T&gt; Growling&lt;T&gt; for Wolf {}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token maybe-class-name">ImplDeclaration</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">read</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword module" style="color:#00009f">default</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// expression;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionStatement</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">read</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">read_statement</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">switch</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">peek_keyword</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">case</span><span class="token plain"> </span><span class="token maybe-class-name">Keyword</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">impl</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// impl&lt;T&gt; Growling&lt;T&gt; for Wolf {}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token maybe-class-name">ImplDeclaration</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">read</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword module" style="color:#00009f">default</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token comment" style="color:#999988;font-style:italic">// expression;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionStatement</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">read</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">read_statement</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">switch</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">peek_keyword</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">case</span><span class="token plain"> </span><span class="token maybe-class-name">Keyword</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">impl</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// impl&lt;T&gt; Growling&lt;T&gt; for Wolf {}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token maybe-class-name">ImplDeclaration</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">read</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword module" style="color:#00009f">default</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// expression;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token maybe-class-name">ExpressionStatement</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">read</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-misplaced-argument-comment-in-abstract-methods-12185-by-duailibe">Fix misplaced argument comment in abstract methods (<a href="https://github.com/prettier/prettier/pull/12185" target="_blank" rel="noopener noreferrer" class="">#12185</a> by <a href="https://github.com/duailibe" target="_blank" rel="noopener noreferrer" class="">@duailibe</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#fix-misplaced-argument-comment-in-abstract-methods-12185-by-duailibe" class="hash-link" aria-label="Direct link to fix-misplaced-argument-comment-in-abstract-methods-12185-by-duailibe" title="Direct link to fix-misplaced-argument-comment-in-abstract-methods-12185-by-duailibe" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">abstract</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">abstract</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** comment explaining userId param */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    userId</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">abstract</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">abstract</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">userId</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** comment explaining userId param */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">abstract</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">abstract</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** comment explaining userId param */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    userId</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-typecast-of-superclass-in-class-declarations-12222--12226-by-duailibe">Fix typecast of superclass in class declarations (<a href="https://github.com/prettier/prettier/pull/12222" target="_blank" rel="noopener noreferrer" class="">#12222</a> &amp; <a href="https://github.com/prettier/prettier/pull/12226" target="_blank" rel="noopener noreferrer" class="">#12226</a> by <a href="https://github.com/duailibe" target="_blank" rel="noopener noreferrer" class="">@duailibe</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#fix-typecast-of-superclass-in-class-declarations-12222--12226-by-duailibe" class="hash-link" aria-label="Direct link to fix-typecast-of-superclass-in-class-declarations-12222--12226-by-duailibe" title="Direct link to fix-typecast-of-superclass-in-class-declarations-12222--12226-by-duailibe" translate="no">​</a></h4>
<p>This was a combination of two separate bugs: moving the comments before the superclass and adding multiple parenthesis around the superclass.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@type</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">Type</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token maybe-class-name">Bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@type</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">Type</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token maybe-class-name">Bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@type</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">Type</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token maybe-class-name">Bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-support-for-unicode-set-notation-in-regular-expressions-12241-by-fisker">Add support for Unicode Set Notation in regular expressions (<a href="https://github.com/prettier/prettier/pull/12241" target="_blank" rel="noopener noreferrer" class="">#12241</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#add-support-for-unicode-set-notation-in-regular-expressions-12241-by-fisker" class="hash-link" aria-label="Direct link to add-support-for-unicode-set-notation-in-regular-expressions-12241-by-fisker" title="Direct link to add-support-for-unicode-set-notation-in-regular-expressions-12241-by-fisker" translate="no">​</a></h4>
<p>The Stage 3 proposal for <a href="https://github.com/tc39/proposal-regexp-set-notation/" target="_blank" rel="noopener noreferrer" class="">Unicode Set Notation</a> in regular expressions is now supported via <a href="https://babeljs.io/blog/2022/02/02/7.17.0" target="_blank" rel="noopener noreferrer" class="">Babel 7.17.0</a>.</p>
<p>See <a href="https://babeljs.io/blog/2022/02/02/7.17.0#regexp-set-notation-and-properties-of-strings-14125httpsgithubcombabelbabelpull14125" target="_blank" rel="noopener noreferrer" class="">the release blog post of Babel v7.17.0</a> and <a href="https://github.com/tc39/proposal-regexp-set-notation/" target="_blank" rel="noopener noreferrer" class="">the README of this proposal</a> for details. Also keep in mind our <a href="https://prettier.io/docs/rationale#disclaimer-about-non-standard-syntax" target="_blank" rel="noopener noreferrer" class="">policy on non-standardized syntax</a> before using this proposed syntax feature with Prettier.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Examples</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">\p</span><span class="token punctuation" style="color:#393A34">{</span><span class="token maybe-class-name">Decimal_Number</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">--</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">9</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">v</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Non-ASCII decimal digits</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token string" style="color:#e3116c">"Did you see the 👩🏿‍❤️‍💋‍👩🏾 emoji?"</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">match</span><span class="token punctuation" style="color:#393A34">(</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token regex regex-source language-regex char-set class-name" style="color:#36acaa">\p{RGI_Emoji}</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token regex regex-flags" style="color:#36acaa">v</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// ["👩🏿‍❤️‍💋‍👩🏾"]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">\r\n\q</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">\r\n</span><span class="token operator" style="color:#393A34">|</span><span class="token constant" style="color:#36acaa">NEWLINE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">v</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Matches \r, \n, \r\n or NEWLINE</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-parens-to-classexpression-with-decorators-12260-by-fisker">Add parens to <code>ClassExpression</code> with decorators (<a href="https://github.com/prettier/prettier/pull/12260" target="_blank" rel="noopener noreferrer" class="">#12260</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#add-parens-to-classexpression-with-decorators-12260-by-fisker" class="hash-link" aria-label="Direct link to add-parens-to-classexpression-with-decorators-12260-by-fisker" title="Direct link to add-parens-to-classexpression-with-decorators-12260-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">@</span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@</span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5 (Second format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">name</span><span class="token plain"> is required</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">2</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">7</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> @</span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">       </span><span class="token operator" style="color:#393A34">^</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @</span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-printing-of-comments-in-type-aliases-in-flow--ts-12268-by-duailibe">Improve printing of comments in type aliases in Flow &amp; TS (<a href="https://github.com/prettier/prettier/pull/12268" target="_blank" rel="noopener noreferrer" class="">#12268</a> by <a href="https://github.com/duailibe" target="_blank" rel="noopener noreferrer" class="">@duailibe</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#improve-printing-of-comments-in-type-aliases-in-flow--ts-12268-by-duailibe" class="hash-link" aria-label="Direct link to improve-printing-of-comments-in-type-aliases-in-flow--ts-12268-by-duailibe" title="Direct link to improve-printing-of-comments-in-type-aliases-in-flow--ts-12268-by-duailibe" translate="no">​</a></h4>
<p>For Flow, the comments will now be more aligned to how we print comments in assignments where the right-hand side is an object expression:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Props</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment explaining the props</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">isPlaying</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> boolean</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// comment explaining the props</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Props</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">isPlaying</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> boolean</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Props</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment explaining the props</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">isPlaying</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> boolean</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>This change also fixes an issue where a similarly-placed comment in TypeScript would be moved again after a second formatting operation:</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Props</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment explaining the props</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    isPlaying</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">boolean</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Props</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment explaining the props</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  isPlaying</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">boolean</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5 (2nd format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Props</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment explaining the props</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  isPlaying</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">boolean</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Props</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment explaining the props</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    isPlaying</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">boolean</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-support-for-destructuring-of-private-fields-12276-by-sosukesuzuki">Add support for destructuring of private fields (<a href="https://github.com/prettier/prettier/pull/12276" target="_blank" rel="noopener noreferrer" class="">#12276</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#add-support-for-destructuring-of-private-fields-12276-by-sosukesuzuki" class="hash-link" aria-label="Direct link to add-support-for-destructuring-of-private-fields-12276-by-sosukesuzuki" title="Direct link to add-support-for-destructuring-of-private-fields-12276-by-sosukesuzuki" translate="no">​</a></h4>
<p>The Stage 2 TC39 proposal for <a href="https://github.com/tc39/proposal-destructuring-private" target="_blank" rel="noopener noreferrer" class="">destructuring of private fields</a> is now supported via <a href="https://babeljs.io/blog/2022/02/02/7.17.0" target="_blank" rel="noopener noreferrer" class="">Babel 7.17</a>. Please read our <a href="https://prettier.io/docs/rationale#disclaimer-about-non-standard-syntax" target="_blank" rel="noopener noreferrer" class="">policy on non-standardized syntax</a> before you decide to use this proposed syntax feature with Prettier.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Example</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">constructor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">#x</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// =&gt; 1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> #x</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> x </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">x</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// =&gt; 1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-decorator-auto-accessors-syntax-12299-by-sosukesuzuki">Support decorator auto accessors syntax (<a href="https://github.com/prettier/prettier/pull/12299" target="_blank" rel="noopener noreferrer" class="">#12299</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#support-decorator-auto-accessors-syntax-12299-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-decorator-auto-accessors-syntax-12299-by-sosukesuzuki" title="Direct link to support-decorator-auto-accessors-syntax-12299-by-sosukesuzuki" translate="no">​</a></h4>
<p>Support auto accessors syntax that is introduced in <a href="https://github.com/tc39/proposal-decorators" target="_blank" rel="noopener noreferrer" class="">new decorators proposal</a>. Please read our <a href="https://prettier.io/docs/rationale#disclaimer-about-non-standard-syntax" target="_blank" rel="noopener noreferrer" class="">policy on non-standardized syntax</a> before you decide to use this proposed syntax feature with Prettier.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Example</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@</span><span class="token function" style="color:#d73a49">defineElement</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"my-class"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">C</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">HTMLElement</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @reactive accessor clicked </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-idempotence-issues-caused-by-line-comments-after--in-assignments-12349-by-thorn0">Fix idempotence issues caused by line comments after <code>=</code> in assignments (<a href="https://github.com/prettier/prettier/pull/12349" target="_blank" rel="noopener noreferrer" class="">#12349</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#fix-idempotence-issues-caused-by-line-comments-after--in-assignments-12349-by-thorn0" class="hash-link" aria-label="Direct link to fix-idempotence-issues-caused-by-line-comments-after--in-assignments-12349-by-thorn0" title="Direct link to fix-idempotence-issues-caused-by-line-comments-after--in-assignments-12349-by-thorn0" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> kochabCooieGameOnOboleUnweave </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// !!!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">rhubarbRhubarb</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">annularCooeedSplicesWalksWayWay</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5, first format</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> kochabCooieGameOnOboleUnweave </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rhubarbRhubarb</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// !!!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  annularCooeedSplicesWalksWayWay</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5, second format</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> kochabCooieGameOnOboleUnweave </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rhubarbRhubarb</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// !!!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  annularCooeedSplicesWalksWayWay</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> kochabCooieGameOnOboleUnweave </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// !!!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">rhubarbRhubarb</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">annularCooeedSplicesWalksWayWay</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript-1">TypeScript<a href="https://prettier.io/blog/2022/03/16/2.6.0#typescript-1" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="refactor-printing-definite-assignment-assertions-12351-by-thorn0">Refactor printing definite assignment assertions (<a href="https://github.com/prettier/prettier/pull/12351" target="_blank" rel="noopener noreferrer" class="">#12351</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#refactor-printing-definite-assignment-assertions-12351-by-thorn0" class="hash-link" aria-label="Direct link to refactor-printing-definite-assignment-assertions-12351-by-thorn0" title="Direct link to refactor-printing-definite-assignment-assertions-12351-by-thorn0" translate="no">​</a></h4>
<p>Definite assignment assertions are now printed even when they aren't followed by type annotations. This is an error in TypeScript, but TS is still able to parse the file.</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> a</span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> a</span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-trailing-comma-for-rest-elements-in-tuple-types-12390-by-sosukesuzuki">Print trailing comma for rest elements in tuple types (<a href="https://github.com/prettier/prettier/pull/12390" target="_blank" rel="noopener noreferrer" class="">#12390</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#print-trailing-comma-for-rest-elements-in-tuple-types-12390-by-sosukesuzuki" class="hash-link" aria-label="Direct link to print-trailing-comma-for-rest-elements-in-tuple-types-12390-by-sosukesuzuki" title="Direct link to print-trailing-comma-for-rest-elements-in-tuple-types-12390-by-sosukesuzuki" translate="no">​</a></h4>
<p>TypeScript has allowed rest elements in tuple types (<code>...T</code>) to have normal elements come after them since <a href="https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-2.html#leadingmiddle-rest-elements-in-tuple-types" target="_blank" rel="noopener noreferrer" class="">TypeScript 4.2</a>.
Prettier now prints a trailing comma for the trailing rest element (when trailing commas are enabled) for consistency and to reduce diffs if you decide to add more elements after the final element in the future.</p>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// { trailingCommma: "all" }</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token spread operator" style="color:#393A34">...</span><span class="token maybe-class-name">RestElement</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token spread operator" style="color:#393A34">...</span><span class="token maybe-class-name">RestElement</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">Element</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token spread operator" style="color:#393A34">...</span><span class="token maybe-class-name">RestElement</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow">Flow<a href="https://prettier.io/blog/2022/03/16/2.6.0#flow" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-flows-class-declarations-static-indexer-formatting-12009-by-gkz">Fix Flow's class declaration's <code>static</code> indexer formatting (<a href="https://github.com/prettier/prettier/pull/12009" target="_blank" rel="noopener noreferrer" class="">#12009</a> by <a href="https://github.com/gkz" target="_blank" rel="noopener noreferrer" class="">@gkz</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#fix-flows-class-declarations-static-indexer-formatting-12009-by-gkz" class="hash-link" aria-label="Direct link to fix-flows-class-declarations-static-indexer-formatting-12009-by-gkz" title="Direct link to fix-flows-class-declarations-static-indexer-formatting-12009-by-gkz" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">declare </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">string</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> boolean</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">declare </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">string</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> boolean</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">declare </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">string</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> boolean</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="css">CSS<a href="https://prettier.io/blog/2022/03/16/2.6.0#css" class="hash-link" aria-label="Direct link to CSS" title="Direct link to CSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-blank-lines-in-scss-maps-12210-by-duailibe">Preserve blank lines in SCSS maps (<a href="https://github.com/prettier/prettier/pull/12210" target="_blank" rel="noopener noreferrer" class="">#12210</a> by <a href="https://github.com/duailibe" target="_blank" rel="noopener noreferrer" class="">@duailibe</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#preserve-blank-lines-in-scss-maps-12210-by-duailibe" class="hash-link" aria-label="Direct link to preserve-blank-lines-in-scss-maps-12210-by-duailibe" title="Direct link to preserve-blank-lines-in-scss-maps-12210-by-duailibe" translate="no">​</a></h4>
<p>This change also applies to some PostCSS features with similar syntax.</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$</span><span class="token property" style="color:#36acaa">colours</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"text"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $light-100</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"background-primary"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $dark-300</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"background-secondary"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $dark-200</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"background-tertiary"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $dark-100</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.5 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$</span><span class="token property" style="color:#36acaa">colours</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"text"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $light-100</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"background-primary"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $dark-300</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"background-secondary"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $dark-200</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"background-tertiary"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $dark-100</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.6 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$</span><span class="token property" style="color:#36acaa">colours</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"text"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $light-100</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"background-primary"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $dark-300</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"background-secondary"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $dark-200</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"background-tertiary"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> $dark-100</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-lowercasing-postcss-values-12393-by-niklasvatn">Fix lowercasing postcss values (<a href="https://github.com/prettier/prettier/pull/12393" target="_blank" rel="noopener noreferrer" class="">#12393</a> by <a href="https://github.com/niklasvatn" target="_blank" rel="noopener noreferrer" class="">@niklasvatn</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#fix-lowercasing-postcss-values-12393-by-niklasvatn" class="hash-link" aria-label="Direct link to fix-lowercasing-postcss-values-12393-by-niklasvatn" title="Direct link to fix-lowercasing-postcss-values-12393-by-niklasvatn" translate="no">​</a></h4>
<p>PostCSS values can start with digits. Prettier interprets this as a number followed by a unit in the example below.</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">// Input</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@value</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule number" style="color:#36acaa">4</span><span class="token atrule" style="color:#00a4db">XLarge </span><span class="token atrule number" style="color:#36acaa">28</span><span class="token atrule" style="color:#00a4db">/</span><span class="token atrule number" style="color:#36acaa">36</span><span class="token atrule unit" style="color:#00a4db">px</span><span class="token atrule punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.test</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">font</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4</span><span class="token plain">XLarge Helvetica</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier </span><span class="token number" style="color:#36acaa">2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@value</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule number" style="color:#36acaa">4</span><span class="token atrule" style="color:#00a4db">XLarge </span><span class="token atrule number" style="color:#36acaa">28</span><span class="token atrule" style="color:#00a4db">/</span><span class="token atrule number" style="color:#36acaa">36</span><span class="token atrule unit" style="color:#00a4db">px</span><span class="token atrule punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.test</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">font</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4</span><span class="token unit">xlarge</span><span class="token plain"> Helvetica</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier </span><span class="token number" style="color:#36acaa">2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@value</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule number" style="color:#36acaa">4</span><span class="token atrule" style="color:#00a4db">XLarge </span><span class="token atrule number" style="color:#36acaa">28</span><span class="token atrule" style="color:#00a4db">/</span><span class="token atrule number" style="color:#36acaa">36</span><span class="token atrule unit" style="color:#00a4db">px</span><span class="token atrule punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector class" style="color:#00009f">.test</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">font</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4</span><span class="token plain">XLarge Helvetica</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scss">SCSS<a href="https://prettier.io/blog/2022/03/16/2.6.0#scss" class="hash-link" aria-label="Direct link to SCSS" title="Direct link to SCSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-comments-inside-map-11920-by-fisker">Fix comments inside map (<a href="https://github.com/prettier/prettier/pull/11920" target="_blank" rel="noopener noreferrer" class="">#11920</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#fix-comments-inside-map-11920-by-fisker" class="hash-link" aria-label="Direct link to fix-comments-inside-map-11920-by-fisker" title="Direct link to fix-comments-inside-map-11920-by-fisker" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.ag-theme-balham </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">@include</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">ag-theme-balham</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token property" style="color:#36acaa">foreground-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">$custom-foreground-color</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token property" style="color:#36acaa">disabled-foreground-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token null keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// TODO some comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.ag-theme-balham </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">@include</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">ag-theme-balham</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token property" style="color:#36acaa">foreground-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">$custom-foreground-color</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token property" style="color:#36acaa">disabled-foreground-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token null keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token property" style="color:#36acaa">r</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token null keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// TODO som</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.ag-theme-balham </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">@include</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">ag-theme-balham</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">foreground-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">$custom-foreground-color</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">disabled-foreground-color</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token null keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token comment" style="color:#999988;font-style:italic">// TODO some comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fixes-printing-parameters-of-a-mixin-named-selector-12213-by-duailibe">Fixes printing parameters of a mixin named <code>selector()</code> (<a href="https://github.com/prettier/prettier/pull/12213" target="_blank" rel="noopener noreferrer" class="">#12213</a> by <a href="https://github.com/duailibe" target="_blank" rel="noopener noreferrer" class="">@duailibe</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#fixes-printing-parameters-of-a-mixin-named-selector-12213-by-duailibe" class="hash-link" aria-label="Direct link to fixes-printing-parameters-of-a-mixin-named-selector-12213-by-duailibe" title="Direct link to fixes-printing-parameters-of-a-mixin-named-selector-12213-by-duailibe" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@mixin</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule function" style="color:#d73a49">selector</span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule selector-function-argument selector" style="color:#00009f">$param: 'value'</span><span class="token atrule punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.5 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@mixin </span><span class="token function" style="color:#d73a49">selector</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">$</span><span class="token property" style="color:#36acaa">param</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token selector" style="color:#00009f">'value</span><span class="token selector punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.6 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@mixin</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule function" style="color:#d73a49">selector</span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule selector-function-argument selector" style="color:#00009f">$param: 'value'</span><span class="token atrule punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="vue">Vue<a href="https://prettier.io/blog/2022/03/16/2.6.0#vue" class="hash-link" aria-label="Direct link to Vue" title="Direct link to Vue" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-hangs-on-invalid-v-for-12113-by-fisker">Fix hangs on invalid <code>v-for</code> (<a href="https://github.com/prettier/prettier/pull/12113" target="_blank" rel="noopener noreferrer" class="">#12113</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#fix-hangs-on-invalid-v-for-12113-by-fisker" class="hash-link" aria-label="Direct link to fix-hangs-on-invalid-v-for-12113-by-fisker" title="Direct link to fix-hangs-on-invalid-v-for-12113-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">template</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">v-for</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c"> a in </span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">aaaaa</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">template</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Hangs</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">template</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">v-for</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c"> a in </span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">aaaaa</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">template</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="allow-lang-attribute-of-template-to-be-empty-12394-by-hallvardmm">Allow <code>lang</code> attribute of <code>&lt;template&gt;</code> to be empty (<a href="https://github.com/prettier/prettier/pull/12394" target="_blank" rel="noopener noreferrer" class="">#12394</a> by <a href="https://github.com/HallvardMM" target="_blank" rel="noopener noreferrer" class="">@HallvardMM</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#allow-lang-attribute-of-template-to-be-empty-12394-by-hallvardmm" class="hash-link" aria-label="Direct link to allow-lang-attribute-of-template-to-be-empty-12394-by-hallvardmm" title="Direct link to allow-lang-attribute-of-template-to-be-empty-12394-by-hallvardmm" translate="no">​</a></h4>
<p>Template tag should allow empty string lang="" or undefined lang</p>
<div class="language-vue codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-vue codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Input --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template lang=""&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;v-app-bar&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;v-menu offset-y&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      &lt;template&gt;&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;/v-menu&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;/v-app-bar&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template lang&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;v-app-bar&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;v-menu offset-y&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      &lt;template&gt;&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;/v-menu&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;/v-app-bar&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.5 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SyntaxError: Unexpected closing tag "v-menu". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags (5:5)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error]   3 |     &lt;v-menu offset-y&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error]   4 |       &lt;template&gt;&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error] &gt; 5 |     &lt;/v-menu&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error]     |     ^^^^^^^^^</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error]   6 |   &lt;/v-app-bar&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error]   7 | &lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.6 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template lang=""&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;v-app-bar&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;v-menu offset-y&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      &lt;template&gt;&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;/v-menu&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;/v-app-bar&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template lang&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;v-app-bar&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;v-menu offset-y&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      &lt;template&gt;&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;/v-menu&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;/v-app-bar&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ember--handlebars">Ember / Handlebars<a href="https://prettier.io/blog/2022/03/16/2.6.0#ember--handlebars" class="hash-link" aria-label="Direct link to Ember / Handlebars" title="Direct link to Ember / Handlebars" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="correctly-identify-which-backslashes-are-removed-by-glimmer-12302-by-mattthenub">Correctly identify which backslashes are removed by glimmer (<a href="https://github.com/prettier/prettier/pull/12302" target="_blank" rel="noopener noreferrer" class="">#12302</a> by <a href="https://github.com/MattTheNub" target="_blank" rel="noopener noreferrer" class="">@MattTheNub</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#correctly-identify-which-backslashes-are-removed-by-glimmer-12302-by-mattthenub" class="hash-link" aria-label="Direct link to correctly-identify-which-backslashes-are-removed-by-glimmer-12302-by-mattthenub" title="Direct link to correctly-identify-which-backslashes-are-removed-by-glimmer-12302-by-mattthenub" translate="no">​</a></h4>
<p>This caused Prettier to unnecessarily add backslashes every time a file was formatted.</p>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{! Input }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 2.5 }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 2.6 }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">\</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">p</span><span class="token punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="graphql">GraphQL<a href="https://prettier.io/blog/2022/03/16/2.6.0#graphql" class="hash-link" aria-label="Direct link to GraphQL" title="Direct link to GraphQL" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-descriptions-on-graphql-schema-definition-nodes-11901-by-trevor-scheer">Print descriptions on graphql schema definition nodes (<a href="https://github.com/prettier/prettier/pull/11901" target="_blank" rel="noopener noreferrer" class="">#11901</a> by <a href="https://github.com/trevor-scheer" target="_blank" rel="noopener noreferrer" class="">@trevor-scheer</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#print-descriptions-on-graphql-schema-definition-nodes-11901-by-trevor-scheer" class="hash-link" aria-label="Direct link to print-descriptions-on-graphql-schema-definition-nodes-11901-by-trevor-scheer" title="Direct link to print-descriptions-on-graphql-schema-definition-nodes-11901-by-trevor-scheer" translate="no">​</a></h4>
<div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token description string language-markdown" style="color:#e3116c">SchemaDefinition description is lost</span><span class="token description string" style="color:#e3116c">"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">schema</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">query</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token class-name">Query</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">schema</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">query</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token class-name">Query</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.6</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token description string language-markdown" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="color:#e3116c">SchemaDefinition description is lost</span><br></span><span class="token-line" style="color:#393A34"><span class="token description string language-markdown" style="color:#e3116c"></span><span class="token description string" style="color:#e3116c">"""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">schema</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token attr-name" style="color:#00a4db">query</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token class-name">Query</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="yaml">YAML<a href="https://prettier.io/blog/2022/03/16/2.6.0#yaml" class="hash-link" aria-label="Direct link to YAML" title="Direct link to YAML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-unexpected-deletion-of-block-literal-lines-which-starts-with-u3000-12305-by-quramy">Fix unexpected deletion of block-literal lines which starts with U+3000 (<a href="https://github.com/prettier/prettier/pull/12305" target="_blank" rel="noopener noreferrer" class="">#12305</a> by <a href="https://github.com/Quramy" target="_blank" rel="noopener noreferrer" class="">@Quramy</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#fix-unexpected-deletion-of-block-literal-lines-which-starts-with-u3000-12305-by-quramy" class="hash-link" aria-label="Direct link to fix-unexpected-deletion-of-block-literal-lines-which-starts-with-u3000-12305-by-quramy" title="Direct link to fix-unexpected-deletion-of-block-literal-lines-which-starts-with-u3000-12305-by-quramy" translate="no">​</a></h4>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">block_with_ideographic_space</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  　line</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">content </span><span class="token comment" style="color:#999988;font-style:italic"># This line starts with U+3000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">block_with_ideographic_space</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 2.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">block_with_ideographic_space</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  　line</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">content </span><span class="token comment" style="color:#999988;font-style:italic"># This line starts with U+3000</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://prettier.io/blog/2022/03/16/2.6.0#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add---no-plugin-search-option-to-turn-off-plugin-autoloading-10274-by-fisker">Add <code>--no-plugin-search</code> option to turn off plugin autoloading (<a href="https://github.com/prettier/prettier/pull/10274" target="_blank" rel="noopener noreferrer" class="">#10274</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#add---no-plugin-search-option-to-turn-off-plugin-autoloading-10274-by-fisker" class="hash-link" aria-label="Direct link to add---no-plugin-search-option-to-turn-off-plugin-autoloading-10274-by-fisker" title="Direct link to add---no-plugin-search-option-to-turn-off-plugin-autoloading-10274-by-fisker" translate="no">​</a></h4>
<p>To turn off plugin autoloading, use <code>--no-plugin-search</code> when using Prettier CLI or add <code>{ pluginSearchDirs: false }</code> to options in <code>prettier.format()</code> or to the config file.</p>
<div class="language-cli codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-cli codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 2.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier . --plugin-search-dir=a-dir-without-plugins</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 2.6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier . --no-plugin-search</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="infer-parser-for-swcrc-12320-by-sosukesuzuki">Infer parser for <code>.swcrc</code> (<a href="https://github.com/prettier/prettier/pull/12320" target="_blank" rel="noopener noreferrer" class="">#12320</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#infer-parser-for-swcrc-12320-by-sosukesuzuki" class="hash-link" aria-label="Direct link to infer-parser-for-swcrc-12320-by-sosukesuzuki" title="Direct link to infer-parser-for-swcrc-12320-by-sosukesuzuki" translate="no">​</a></h4>
<p>Format the <a href="https://swc.rs/docs/configuration/swcrc" target="_blank" rel="noopener noreferrer" class=""><code>.swcrc</code></a> file as a JSON file.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="miscellaneous">Miscellaneous<a href="https://prettier.io/blog/2022/03/16/2.6.0#miscellaneous" class="hash-link" aria-label="Direct link to Miscellaneous" title="Direct link to Miscellaneous" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="switch-to-esbuild-12055-by-fisker">Switch to <code>esbuild</code> (<a href="https://github.com/prettier/prettier/pull/12055" target="_blank" rel="noopener noreferrer" class="">#12055</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2022/03/16/2.6.0#switch-to-esbuild-12055-by-fisker" class="hash-link" aria-label="Direct link to switch-to-esbuild-12055-by-fisker" title="Direct link to switch-to-esbuild-12055-by-fisker" translate="no">​</a></h4>
<p>We've switched our build process from Rollup to <a href="https://esbuild.github.io/" target="_blank" rel="noopener noreferrer" class="">esbuild</a>. esbuild is much faster and has improved our development experience. This is an internal change and should not affect users. If something isn’t working for you after upgrading, please <a href="https://github.com/prettier/prettier/issues/new?assignees=&amp;labels=&amp;template=integration.md" target="_blank" rel="noopener noreferrer" class="">open an issue</a>!</p>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier begins paying maintainers]]></title>
        <id>https://prettier.io/blog/2022/01/06/prettier-begins-paying-maintainers</id>
        <link href="https://prettier.io/blog/2022/01/06/prettier-begins-paying-maintainers"/>
        <updated>2022-01-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Prettier, an opinionated code formatter for JavaScript and many web languages, has been accepting donations at OpenCollective since 2019 and thanks to many generous donations we now have \$50,000 in the bank! As a result, we are now able to pay the two active maintainers \$1,500/month each. This funding will ensure that they will be able to continue consistent maintenance of Prettier into the future.]]></summary>
        <content type="html"><![CDATA[<p>Prettier, an opinionated code formatter for JavaScript and many web languages, has been accepting donations at <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">OpenCollective</a> since 2019 and thanks to many generous donations we now have $50,000 in the bank! As a result, we are now able to pay the two active maintainers $1,500/month each. This funding will ensure that they will be able to continue consistent maintenance of Prettier into the future.</p>
<!-- -->
<!-- -->
<div class="react-tweet-theme root_D3qd root_Y6tr"><article class="article_kRZ8"><span class="skeleton_FMR8" style="height:3rem;margin-bottom:0.75rem"></span><span class="skeleton_FMR8" style="height:6rem;margin:0.5rem 0"></span><div style="border-top:var(--tweet-border);margin:0.5rem 0"></div><span class="skeleton_FMR8" style="height:2rem"></span><span class="skeleton_FMR8" style="height:2rem;border-radius:9999px;margin-top:0.5rem"></span></article></div>
<p>Open Source and Money has always been a tricky topic. We've tried many things with Prettier. Right after the project was open sourced, Facebook contracted <a href="https://twitter.com/jlongster" target="_blank" rel="noopener noreferrer" class="">James Long</a> for 2 weeks in order to polish it. Facebook also paid Christopher Chedeau (<a href="https://twitter.com/Vjeux" target="_blank" rel="noopener noreferrer" class="">vjeux</a>) for 9 months to work on it full time. Once there was $10,000 in contributions, we gave everyone that contributed significantly the opportunity to redeem $1,000 but due to the complexities in collecting the money, few people did.</p>
<p>We now have $50,000 which is a sizable sum but not enough for someone with the skills to work on it to do it full time. But at the same time we shouldn't let it sit unused. So after a lot of thinking, we decided to provide a recurring $1,500 to the two current maintainers of the project. They have been amazing stewards for the project for the past 2 years!</p>
<ul>
<li class=""><a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">Fisker Cheung</a></li>
<li class=""><a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">Sosuke Suzuki</a></li>
</ul>
<p>As you can imagine, maintaining a project that is <a href="https://twitter.com/vjeux/status/1349383134010200068" target="_blank" rel="noopener noreferrer" class="">used by 60% of all JavaScript developers</a> is not a simple task. We are planning to release Prettier 3.0, including a migration to ECMAScript Modules, support for formatting new language features in, and fixing new edge cases as they are identified.</p>
<p>If Prettier has been useful for you or your company, there has never been a better time to <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">donate to Prettier</a>. We will now be much more able to use that money to make Prettier better!</p>]]></content>
        <author>
            <name>Christopher Chedeau</name>
            <uri>https://github.com/vjeux</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 2.5: TypeScript 4.5 and MDX v2 comment syntax!]]></title>
        <id>https://prettier.io/blog/2021/11/25/2.5.0</id>
        <link href="https://prettier.io/blog/2021/11/25/2.5.0"/>
        <updated>2021-11-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release adds support for TypeScript 4.5's new syntax and MDX v2 comment syntax!]]></summary>
        <content type="html"><![CDATA[<p>This release adds support for <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-5/" target="_blank" rel="noopener noreferrer" class="">TypeScript 4.5</a>'s new syntax and <a href="https://mdxjs.com/blog/v2/" target="_blank" rel="noopener noreferrer" class="">MDX v2</a> comment syntax!</p>
<p>If you enjoy Prettier and would like to support our work, consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on, including <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2021/11/25/2.5.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2021/11/25/2.5.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="avoid-extra-offset-in-arrow-function-body-when-using-long-types-11515-by-kachkaev-and-thorn0">Avoid extra offset in arrow function body when using long types (<a href="https://github.com/prettier/prettier/pull/11515" target="_blank" rel="noopener noreferrer" class="">#11515</a> by <a href="https://github.com/kachkaev" target="_blank" rel="noopener noreferrer" class="">@kachkaev</a> and <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#avoid-extra-offset-in-arrow-function-body-when-using-long-types-11515-by-kachkaev-and-thorn0" class="hash-link" aria-label="Direct link to avoid-extra-offset-in-arrow-function-body-when-using-long-types-11515-by-kachkaev-and-thorn0" title="Direct link to avoid-extra-offset-in-arrow-function-body-when-using-long-types-11515-by-kachkaev-and-thorn0" translate="no">​</a></h4>
<p>Starting with Prettier 2.3.0, type declarations in arrow functions could affect function body indentation. Changing the length of the type annotation could produce large diffs and thus increased the chance of git conflicts. To prevent this, function body offset was stabilized.<br>
<strong>Note</strong>: This change may affect a large number of lines in your codebase.</p>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">MyComponentWithLongName</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">React</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">VoidFunctionComponent</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token maybe-class-name">MyComponentWithLongNameProps</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> y </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">useA</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> y </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2 and below</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">MyComponentWithLongName</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">React</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">VoidFunctionComponent</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token maybe-class-name">MyComponentWithLongNameProps</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  x</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  y</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">useA</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> y </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">MyComponentWithLongName</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">React</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">VoidFunctionComponent</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token maybe-class-name">MyComponentWithLongNameProps</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> y </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">useA</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> y </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">MyComponentWithLongName</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">React</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">VoidFunctionComponent</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token maybe-class-name">MyComponentWithLongNameProps</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> x</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> y </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">useA</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">x </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> y </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-typescript-45-11721-11723-11813-by-sosukesuzuki">Support TypeScript 4.5 (<a href="https://github.com/prettier/prettier/pull/11721" target="_blank" rel="noopener noreferrer" class="">#11721</a>, <a href="https://github.com/prettier/prettier/pull/11723" target="_blank" rel="noopener noreferrer" class="">#11723</a>, <a href="https://github.com/prettier/prettier/pull/11813" target="_blank" rel="noopener noreferrer" class="">#11813</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#support-typescript-45-11721-11723-11813-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-typescript-45-11721-11723-11813-by-sosukesuzuki" title="Direct link to support-typescript-45-11721-11723-11813-by-sosukesuzuki" translate="no">​</a></h4>
<p>We’ve added support for TypeScript 4.5’s new syntax features:</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="type-modifiers-on-import-names"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-5/#type-on-import-names" target="_blank" rel="noopener noreferrer" class=""><code>type</code> Modifiers on Import Names</a><a href="https://prettier.io/blog/2021/11/25/2.5.0#type-modifiers-on-import-names" class="hash-link" aria-label="Direct link to type-modifiers-on-import-names" title="Direct link to type-modifiers-on-import-names" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Example</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"mod"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="private-field-presence-checks"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-5/#private-field-presence-checks" target="_blank" rel="noopener noreferrer" class="">Private Field Presence Checks</a><a href="https://prettier.io/blog/2021/11/25/2.5.0#private-field-presence-checks" class="hash-link" aria-label="Direct link to private-field-presence-checks" title="Direct link to private-field-presence-checks" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Example</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  #prop1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> #prop1 </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="import-assertions"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-5/#import-assertions" target="_blank" rel="noopener noreferrer" class="">Import Assertions</a><a href="https://prettier.io/blog/2021/11/25/2.5.0#import-assertions" class="hash-link" aria-label="Direct link to import-assertions" title="Direct link to import-assertions" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Example</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> obj </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./something.json"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">assert</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="handle-mts-and-cts">Handle <code>.mts</code> and <code>.cts</code><a href="https://prettier.io/blog/2021/11/25/2.5.0#handle-mts-and-cts" class="hash-link" aria-label="Direct link to handle-mts-and-cts" title="Direct link to handle-mts-and-cts" translate="no">​</a></h5>
<p>Prettier will now format files with <code>.mts</code> and <code>.cts</code> extensions as TypeScript.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2021/11/25/2.5.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="collapse-html-class-attributes-onto-one-line-11827-by-jlongster">Collapse HTML <code>class</code> attributes onto one line (<a href="https://github.com/prettier/prettier/pull/11827" target="_blank" rel="noopener noreferrer" class="">#11827</a> by <a href="https://github.com/jlongster" target="_blank" rel="noopener noreferrer" class="">@jlongster</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#collapse-html-class-attributes-onto-one-line-11827-by-jlongster" class="hash-link" aria-label="Direct link to collapse-html-class-attributes-onto-one-line-11827-by-jlongster" title="Direct link to collapse-html-class-attributes-onto-one-line-11827-by-jlongster" translate="no">​</a></h4>
<p>Reverts <a href="https://github.com/prettier/prettier/pull/7865" target="_blank" rel="noopener noreferrer" class="">#7865</a>.</p>
<p>While this was intended to be useful for users of CSS libraries like Tailwind that tend to result in large numbers of classes on elements, it became clear that our heuristics for where to split the class list on to multiple lines were unable to consistently produce good results. We’re still considering better ways to format HTML with lots of classes — consider <a href="https://github.com/prettier/prettier/issues/7863" target="_blank" rel="noopener noreferrer" class="">discussing with us</a>.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">SomeComponent__heading-row d-flex flex-column flex-lg-row justify-content-start justify-content-lg-between align-items-start align-items-lg-center</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    SomeComponent__heading-row</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    d-flex</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    flex-column flex-lg-row</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    justify-content-start justify-content-lg-between</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    align-items-start align-items-lg-center</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">  </span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">SomeComponent__heading-row d-flex flex-column flex-lg-row justify-content-start justify-content-lg-between align-items-start align-items-lg-center</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mdx">MDX<a href="https://prettier.io/blog/2021/11/25/2.5.0#mdx" class="hash-link" aria-label="Direct link to MDX" title="Direct link to MDX" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-support-for-mdx-v2-comment-syntax-11563-by-wooorm">Add support for MDX v2 comment syntax (<a href="https://github.com/prettier/prettier/pull/11563" target="_blank" rel="noopener noreferrer" class="">#11563</a> by <a href="https://github.com/wooorm" target="_blank" rel="noopener noreferrer" class="">@wooorm</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#add-support-for-mdx-v2-comment-syntax-11563-by-wooorm" class="hash-link" aria-label="Direct link to add-support-for-mdx-v2-comment-syntax-11563-by-wooorm" title="Direct link to add-support-for-mdx-v2-comment-syntax-11563-by-wooorm" translate="no">​</a></h4>
<p>This adds basic support for MDX v2 comment syntax (JavaScript-style comments) in addition to the existing support MDX v1 comment syntax (HTML-style comments).</p>
<p><strong>Note</strong>: Prettier currently only supports the new comment syntax for single-line comments (so that <code>{/* prettier-ignore */}</code> can be used), and doesn’t support the rest of MDX v2.</p>
<div class="language-mdx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-mdx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Input:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{/*A comment*/}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Prettier 2.4:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{/_A comment_/}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Prettier 2.5:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{/*A comment*/}</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2021/11/25/2.5.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2021/11/25/2.5.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-parentheses-around-sequence-expression-as-body-of-arrow-chain-11593-by-bakkot">Fix parentheses around sequence expression as body of arrow chain (<a href="https://github.com/prettier/prettier/pull/11593" target="_blank" rel="noopener noreferrer" class="">#11593</a> by <a href="https://github.com/bakkot" target="_blank" rel="noopener noreferrer" class="">@bakkot</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#fix-parentheses-around-sequence-expression-as-body-of-arrow-chain-11593-by-bakkot" class="hash-link" aria-label="Direct link to fix-parentheses-around-sequence-expression-as-body-of-arrow-chain-11593-by-bakkot" title="Direct link to fix-parentheses-around-sequence-expression-as-body-of-arrow-chain-11593-by-bakkot" translate="no">​</a></h4>
<p>The required parentheses around sequence expressions as the body of arrow functions are now preserved for chained arrows. Previously, Prettier removed them, which resulted in invalid syntax.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">f</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">f</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">f</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="ignore-errors-for-sloppy-mode-syntax-11750-by-fisker-11778-by-sosukesuzuki">Ignore errors for sloppy mode syntax (<a href="https://github.com/prettier/prettier/pull/11750" target="_blank" rel="noopener noreferrer" class="">#11750</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/prettier/prettier/pull/11778" target="_blank" rel="noopener noreferrer" class="">#11778</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#ignore-errors-for-sloppy-mode-syntax-11750-by-fisker-11778-by-sosukesuzuki" class="hash-link" aria-label="Direct link to ignore-errors-for-sloppy-mode-syntax-11750-by-fisker-11778-by-sosukesuzuki" title="Direct link to ignore-errors-for-sloppy-mode-syntax-11750-by-fisker-11778-by-sosukesuzuki" translate="no">​</a></h4>
<p>JavaScript’s <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode" target="_blank" rel="noopener noreferrer" class="">strict mode</a> adds several useful errors to prevent mistakes. Some of these errors are syntax errors that occur at parse time. Since Prettier’s goal is to format all syntactically valid JavaScript code regardless of whether it will actually run, we’ve opted to leave this error checking to linters, compilers, and the runtime.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">delete</span><span class="token plain"> bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Deleting</span><span class="token plain"> local variable </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> strict mode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">31</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">delete</span><span class="token plain"> bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">                               </span><span class="token operator" style="color:#393A34">^</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">delete</span><span class="token plain"> bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="respect-spacing-for-between-expressions-and-parentheses-in-embedded-css-11800-by-sosukesuzuki">Respect spacing for between expressions and parentheses in embedded CSS (<a href="https://github.com/prettier/prettier/pull/11800" target="_blank" rel="noopener noreferrer" class="">#11800</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#respect-spacing-for-between-expressions-and-parentheses-in-embedded-css-11800-by-sosukesuzuki" class="hash-link" aria-label="Direct link to respect-spacing-for-between-expressions-and-parentheses-in-embedded-css-11800-by-sosukesuzuki" title="Direct link to respect-spacing-for-between-expressions-and-parentheses-in-embedded-css-11800-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> paragraph2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> css</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">transform1</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">expr</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css number" style="color:#36acaa">30</span><span class="token template-string css language-css unit">px</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">transform2</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">expr</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css number" style="color:#36acaa">30</span><span class="token template-string css language-css unit">px</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> paragraph2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> css</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">transform1</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">expr</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css number" style="color:#36acaa">30</span><span class="token template-string css language-css unit">px</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">transform2</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">expr</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css number" style="color:#36acaa">30</span><span class="token template-string css language-css unit">px</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> paragraph2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> css</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">transform1</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">expr</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css number" style="color:#36acaa">30</span><span class="token template-string css language-css unit">px</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">transform2</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">expr</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css punctuation" style="color:#393A34">(</span><span class="token template-string css language-css number" style="color:#36acaa">30</span><span class="token template-string css language-css unit">px</span><span class="token template-string css language-css punctuation" style="color:#393A34">)</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-es2022-class-private-fields-in-syntax-in-espree-parser-11835-by-fisker">Support ES2022 class-private-fields-in syntax in <code>espree</code> parser (<a href="https://github.com/prettier/prettier/pull/11835" target="_blank" rel="noopener noreferrer" class="">#11835</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#support-es2022-class-private-fields-in-syntax-in-espree-parser-11835-by-fisker" class="hash-link" aria-label="Direct link to support-es2022-class-private-fields-in-syntax-in-espree-parser-11835-by-fisker" title="Direct link to support-es2022-class-private-fields-in-syntax-in-espree-parser-11835-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Example</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  #brand</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">isC</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">obj</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> #brand </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token maybe-class-name">Foo</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript-1">TypeScript<a href="https://prettier.io/blog/2021/11/25/2.5.0#typescript-1" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="remove-unnecessary-parentheses-for-decorators-11717-11849-by-sosukesuzuki">Remove unnecessary parentheses for decorators (<a href="https://github.com/prettier/prettier/pull/11717" target="_blank" rel="noopener noreferrer" class="">#11717</a>, <a href="https://github.com/prettier/prettier/pull/11849" target="_blank" rel="noopener noreferrer" class="">#11849</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#remove-unnecessary-parentheses-for-decorators-11717-11849-by-sosukesuzuki" class="hash-link" aria-label="Direct link to remove-unnecessary-parentheses-for-decorators-11717-11849-by-sosukesuzuki" title="Direct link to remove-unnecessary-parentheses-for-decorators-11717-11849-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Test</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token decorator at operator" style="color:#393A34">@</span><span class="token decorator function" style="color:#d73a49">foo</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">bar</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  test1</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"test"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @</span><span class="token function" style="color:#d73a49">test</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">x</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"global"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">y</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  test2</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"test"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Test</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">bar</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  test</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"test"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @</span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">test</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">x</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"global"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">y</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  test2</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"test"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Test</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token decorator at operator" style="color:#393A34">@</span><span class="token decorator function" style="color:#d73a49">foo</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">bar</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  test</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"test"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @</span><span class="token function" style="color:#d73a49">test</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">x</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"global"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">y</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  test2</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"test"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scss">SCSS<a href="https://prettier.io/blog/2021/11/25/2.5.0#scss" class="hash-link" aria-label="Direct link to SCSS" title="Direct link to SCSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-use-with-formatting-11637-by-sosukesuzuki">Improve <code>@use with</code> formatting (<a href="https://github.com/prettier/prettier/pull/11637" target="_blank" rel="noopener noreferrer" class="">#11637</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#improve-use-with-formatting-11637-by-sosukesuzuki" class="hash-link" aria-label="Direct link to improve-use-with-formatting-11637-by-sosukesuzuki" title="Direct link to improve-use-with-formatting-11637-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@use</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'library'</span><span class="token plain"> </span><span class="token module-modifier keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property variable" style="color:#36acaa">$black</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token hexcode color">#222</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property variable" style="color:#36acaa">$border-radius</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.1</span><span class="token unit">rem</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property variable" style="color:#36acaa">$font-family</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Helvetica, sans-serif'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@use</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"library"</span><span class="token plain"> </span><span class="token module-modifier keyword" style="color:#00009f">with</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token property variable" style="color:#36acaa">$black</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token hexcode color">#222</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property variable" style="color:#36acaa">$border-radius</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.1</span><span class="token unit">rem</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property variable" style="color:#36acaa">$font-family</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Helvetica, sans-serif"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@use</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'library'</span><span class="token plain"> </span><span class="token module-modifier keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property variable" style="color:#36acaa">$black</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token hexcode color">#222</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property variable" style="color:#36acaa">$border-radius</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.1</span><span class="token unit">rem</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property variable" style="color:#36acaa">$font-family</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'Helvetica, sans-serif'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-forward-with-formatting-error-11683-by-sriramarul-sosukesuzuki">Fix <code>@forward with</code> formatting error (<a href="https://github.com/prettier/prettier/pull/11683" target="_blank" rel="noopener noreferrer" class="">#11683</a> by <a href="https://github.com/sriramarul" target="_blank" rel="noopener noreferrer" class="">@sriramarul</a>, <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#fix-forward-with-formatting-error-11683-by-sriramarul-sosukesuzuki" class="hash-link" aria-label="Direct link to fix-forward-with-formatting-error-11683-by-sriramarul-sosukesuzuki" title="Direct link to fix-forward-with-formatting-error-11683-by-sriramarul-sosukesuzuki" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@forward</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'foo.scss'</span><span class="token plain"> </span><span class="token module-modifier keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token property variable" style="color:#36acaa">$components</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">red</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property" style="color:#36acaa">TypeError</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Cannot read properties of undefined </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">reading </span><span class="token string" style="color:#e3116c">'type'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@forward</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo.scss"</span><span class="token plain"> </span><span class="token module-modifier keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property variable" style="color:#36acaa">$components</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token color">red</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ember--handlebars">Ember / Handlebars<a href="https://prettier.io/blog/2021/11/25/2.5.0#ember--handlebars" class="hash-link" aria-label="Direct link to Ember / Handlebars" title="Direct link to Ember / Handlebars" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="uses-the-opposite-quote-type-for-quotes-inside-mustache-statements-in-attributes-11524-by-bmaehr">Uses the opposite quote type for quotes inside mustache statements in attributes (<a href="https://github.com/prettier/prettier/pull/11524" target="_blank" rel="noopener noreferrer" class="">#11524</a> by <a href="https://github.com/bmaehr" target="_blank" rel="noopener noreferrer" class="">@bmaehr</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#uses-the-opposite-quote-type-for-quotes-inside-mustache-statements-in-attributes-11524-by-bmaehr" class="hash-link" aria-label="Direct link to uses-the-opposite-quote-type-for-quotes-inside-mustache-statements-in-attributes-11524-by-bmaehr" title="Direct link to uses-the-opposite-quote-type-for-quotes-inside-mustache-statements-in-attributes-11524-by-bmaehr" translate="no">​</a></h4>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{!-- Input --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">title</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"{{t 'login.username.description'}}"</span><span class="token plain"> </span><span class="token block keyword" style="color:#00009f">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.5 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">title</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"{{t 'login.username.description'}}"</span><span class="token plain"> </span><span class="token block keyword" style="color:#00009f">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.4 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">title</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"{{t "</span><span class="token variable" style="color:#36acaa">login</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">username</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">description</span><span class="token string" style="color:#e3116c">"}}"</span><span class="token plain"> </span><span class="token block keyword" style="color:#00009f">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown">Markdown<a href="https://prettier.io/blog/2021/11/25/2.5.0#markdown" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="keep-trailing-commas-for-type-parameters-in-embedded-tsx-11685-by-sosukesuzuki">Keep trailing commas for type parameters in embedded TSX (<a href="https://github.com/prettier/prettier/pull/11685" target="_blank" rel="noopener noreferrer" class="">#11685</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/11/25/2.5.0#keep-trailing-commas-for-type-parameters-in-embedded-tsx-11685-by-sosukesuzuki" class="hash-link" aria-label="Direct link to keep-trailing-commas-for-type-parameters-in-embedded-tsx-11685-by-sosukesuzuki" title="Direct link to keep-trailing-commas-for-type-parameters-in-embedded-tsx-11685-by-sosukesuzuki" translate="no">​</a></h4>
<p>The trailing comma is necessary to prevent TypeScript from treating the <code>&lt;T&gt;</code> as the beginning of a JSX expression.</p>
<div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input  --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">tsx</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-tsx">const test = &lt;T,&gt;(value: T) =&gt; {};</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">tsx</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-tsx">const test = &lt;T&gt;(value: T) =&gt; {};</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.5 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">tsx</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-tsx">const test = &lt;T,&gt;(value: T) =&gt; {};</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 2.4: new bracketSameLine option and TypeScript 4.4 support!]]></title>
        <id>https://prettier.io/blog/2021/09/09/2.4.0</id>
        <link href="https://prettier.io/blog/2021/09/09/2.4.0"/>
        <updated>2021-09-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release renames the jsxBracketSameLine option to bracketSameLine, which supports HTML, Vue, and Angular in addition to JSX. The old name has been deprecated.]]></summary>
        <content type="html"><![CDATA[<p>This release renames the <code>jsxBracketSameLine</code> option to <code>bracketSameLine</code>, which supports HTML, Vue, and Angular in addition to JSX. The old name has been deprecated.</p>
<p>We’ve also added support for <a href="https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-4.html" target="_blank" rel="noopener noreferrer" class="">TypeScript 4.4</a>, including new syntax features such as <a href="https://github.com/tc39/proposal-class-static-block" target="_blank" rel="noopener noreferrer" class="">class <code>static</code> blocks</a>.</p>
<p>If you enjoy Prettier and would like to support our work, consider sponsoring us directly via <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">our OpenCollective</a> or by sponsoring the projects we depend on, including <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2021/09/09/2.4.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2021/09/09/2.4.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-typescript-44-11426-by-sosukesuzuki">Support TypeScript 4.4 (<a href="https://github.com/prettier/prettier/pull/11426" target="_blank" rel="noopener noreferrer" class="">#11426</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/09/09/2.4.0#support-typescript-44-11426-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-typescript-44-11426-by-sosukesuzuki" title="Direct link to support-typescript-44-11426-by-sosukesuzuki" translate="no">​</a></h4>
<p>Support <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-4/" target="_blank" rel="noopener noreferrer" class="">TypeScript 4.4</a>!</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="static-blocks-in-classes"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-4/#static-blocks" target="_blank" rel="noopener noreferrer" class=""><code>static</code> Blocks in Classes</a><a href="https://prettier.io/blog/2021/09/09/2.4.0#static-blocks-in-classes" class="hash-link" aria-label="Direct link to static-blocks-in-classes" title="Direct link to static-blocks-in-classes" translate="no">​</a></h5>
<p>Class Static Blocks syntax is a Stage 4 ECMAScript proposal. See <a href="https://github.com/tc39/proposal-class-static-block" target="_blank" rel="noopener noreferrer" class="">https://github.com/tc39/proposal-class-static-block</a> for more details.</p>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> count </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// This is a static block:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">someCondition</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token maybe-class-name">Foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">count</span><span class="token operator" style="color:#393A34">++</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Declaration</span><span class="token plain"> expected</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">5</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">9</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">4</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">   </span><span class="token comment" style="color:#999988;font-style:italic">// This is a static block:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">   </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">         </span><span class="token operator" style="color:#393A34">^</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">6</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">     </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">someCondition</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">7</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">       </span><span class="token maybe-class-name">Foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">count</span><span class="token operator" style="color:#393A34">++</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">8</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> count </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// This is a static block:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">someCondition</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token maybe-class-name">Foo</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">count</span><span class="token operator" style="color:#393A34">++</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2021/09/09/2.4.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="replace-jsxbracketsameline-option-with-bracketsameline-option-11006-by-kurtztech">Replace <code>jsxBracketSameLine</code> option with <code>bracketSameLine</code> option (<a href="https://github.com/prettier/prettier/pull/11006" target="_blank" rel="noopener noreferrer" class="">#11006</a> by <a href="https://github.com/kurtztech" target="_blank" rel="noopener noreferrer" class="">@kurtztech</a>)<a href="https://prettier.io/blog/2021/09/09/2.4.0#replace-jsxbracketsameline-option-with-bracketsameline-option-11006-by-kurtztech" class="hash-link" aria-label="Direct link to replace-jsxbracketsameline-option-with-bracketsameline-option-11006-by-kurtztech" title="Direct link to replace-jsxbracketsameline-option-with-bracketsameline-option-11006-by-kurtztech" translate="no">​</a></h4>
<p>Deprecate the <code>jsxBracketSameLine</code> option in favour of the new <code>bracketSameLine</code> option that will work for HTML, Angular, Vue, and JSX.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">id</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">foo-bar-baz</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">bar-foo-baz</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">a sample title</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-foo</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">bar</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-bar</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">baz</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">lorem ipsum dolor sit amet</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">id</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">foo-bar-baz</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">bar-foo-baz</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">a sample title</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-foo</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">bar</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-bar</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">baz</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  lorem ipsum dolor sit amet</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.4 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Options: `{bracketSameLine: true}` --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">id</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">foo-bar-baz</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">bar-foo-baz</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">title</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">a sample title</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-foo</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">bar</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">data-bar</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">baz</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  lorem ipsum dolor sit amet</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2021/09/09/2.4.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2021/09/09/2.4.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-parenthesized-tagged-template-literals-for-styled-components-11246-by-sosukesuzuki">Support parenthesized tagged template literals for styled components (<a href="https://github.com/prettier/prettier/pull/11246" target="_blank" rel="noopener noreferrer" class="">#11246</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/09/09/2.4.0#support-parenthesized-tagged-template-literals-for-styled-components-11246-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-parenthesized-tagged-template-literals-for-styled-components-11246-by-sosukesuzuki" title="Direct link to support-parenthesized-tagged-template-literals-for-styled-components-11246-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">StyledComponent</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@type</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name keyword" style="color:#00009f;font-style:italic">import</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">(</span><span class="token doc-comment comment class-name string" style="color:#e3116c;font-style:italic">'styled-components'</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">)</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">.</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">ThemedStyledFunction</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">&lt;</span><span class="token doc-comment comment class-name string" style="color:#e3116c;font-style:italic">'div'</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">,</span><span class="token doc-comment comment class-name keyword" style="color:#00009f;font-style:italic">null</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">,</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">overlap</span><span class="token doc-comment comment class-name operator" style="color:#393A34;font-style:italic">:</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic"> boolean</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">&gt;</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">styled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">div</span><span class="token punctuation" style="color:#393A34">)</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    position:   fixed;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  color: red;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">StyledComponent</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@type</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name keyword" style="color:#00009f;font-style:italic">import</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">(</span><span class="token doc-comment comment class-name string" style="color:#e3116c;font-style:italic">'styled-components'</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">)</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">.</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">ThemedStyledFunction</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">&lt;</span><span class="token doc-comment comment class-name string" style="color:#e3116c;font-style:italic">'div'</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">,</span><span class="token doc-comment comment class-name keyword" style="color:#00009f;font-style:italic">null</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">,</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">overlap</span><span class="token doc-comment comment class-name operator" style="color:#393A34;font-style:italic">:</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic"> boolean</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">&gt;</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">styled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">div</span><span class="token punctuation" style="color:#393A34">)</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    position:   fixed;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  color: red;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token maybe-class-name">StyledComponent</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token doc-comment comment" style="color:#999988;font-style:italic">/** </span><span class="token doc-comment comment keyword" style="color:#00009f;font-style:italic">@type</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> </span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name keyword" style="color:#00009f;font-style:italic">import</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">(</span><span class="token doc-comment comment class-name string" style="color:#e3116c;font-style:italic">'styled-components'</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">)</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">.</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">ThemedStyledFunction</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">&lt;</span><span class="token doc-comment comment class-name string" style="color:#e3116c;font-style:italic">'div'</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">,</span><span class="token doc-comment comment class-name keyword" style="color:#00009f;font-style:italic">null</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">,</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">{</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic">overlap</span><span class="token doc-comment comment class-name operator" style="color:#393A34;font-style:italic">:</span><span class="token doc-comment comment class-name" style="color:#999988;font-style:italic"> boolean</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">&gt;</span><span class="token doc-comment comment class-name punctuation" style="color:#393A34;font-style:italic">}</span><span class="token doc-comment comment" style="color:#999988;font-style:italic"> */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">styled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">div</span><span class="token punctuation" style="color:#393A34">)</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    position: fixed;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    color: red;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="count-correctly-regex-literals-in-method-chain-arguments-11299-by-sosukesuzuki">Count correctly regex literals in method chain arguments (<a href="https://github.com/prettier/prettier/pull/11299" target="_blank" rel="noopener noreferrer" class="">#11299</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/09/09/2.4.0#count-correctly-regex-literals-in-method-chain-arguments-11299-by-sosukesuzuki" class="hash-link" aria-label="Direct link to count-correctly-regex-literals-in-method-chain-arguments-11299-by-sosukesuzuki" title="Direct link to count-correctly-regex-literals-in-method-chain-arguments-11299-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo1</span><span class="token punctuation" style="color:#393A34">(</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token regex regex-source language-regex" style="color:#36acaa">𠮟𠮟𠮟</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo2</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo3</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">baz</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo1</span><span class="token punctuation" style="color:#393A34">(</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token regex regex-source language-regex" style="color:#36acaa">叱叱叱</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo2</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo3</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">baz</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo1</span><span class="token punctuation" style="color:#393A34">(</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token regex regex-source language-regex" style="color:#36acaa">𠮟𠮟𠮟</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo2</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo3</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">baz</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo1</span><span class="token punctuation" style="color:#393A34">(</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token regex regex-source language-regex" style="color:#36acaa">叱叱叱</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo2</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo3</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">baz</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo1</span><span class="token punctuation" style="color:#393A34">(</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token regex regex-source language-regex" style="color:#36acaa">𠮟𠮟𠮟</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo2</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo3</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">baz</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo1</span><span class="token punctuation" style="color:#393A34">(</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token regex regex-source language-regex" style="color:#36acaa">叱叱叱</span><span class="token regex regex-delimiter" style="color:#36acaa">/</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo2</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">bar</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">foo3</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">baz</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-hack-style-pipeline-proposal-11335-by-sosukesuzuki">Support hack-style pipeline proposal (<a href="https://github.com/prettier/prettier/pull/11335" target="_blank" rel="noopener noreferrer" class="">#11335</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/09/09/2.4.0#support-hack-style-pipeline-proposal-11335-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-hack-style-pipeline-proposal-11335-by-sosukesuzuki" title="Direct link to support-hack-style-pipeline-proposal-11335-by-sosukesuzuki" translate="no">​</a></h4>
<p>The proposed <a href="https://github.com/js-choi/proposal-hack-pipes" target="_blank" rel="noopener noreferrer" class="">hack-style pipeline syntax</a> is now supported by Prettier. We are using <code>%</code> as the topic token, following the official explainer — although this may change in future releases as the proposal progresses.</p>
<p>As part of this change, support for the <a href="https://github.com/js-choi/proposal-smart-pipelines" target="_blank" rel="noopener noreferrer" class="">“smart” pipeline syntax</a> has been removed. See <a href="https://prettier.io/docs/rationale#disclaimer-about-non-standard-syntax" target="_blank" rel="noopener noreferrer" class="">our policy on non-standardized syntax</a> for the rationale behind this decision.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fn</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fn1</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fn2</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Unexpected</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">token</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">25</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fn</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fn1</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fn2</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">                         </span><span class="token operator" style="color:#393A34">^</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fn</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fn1</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fn</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">%</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript-1">TypeScript<a href="https://prettier.io/blog/2021/09/09/2.4.0#typescript-1" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-intersection-types-that-include-mapped-types-11247-by-sosukesuzuki">Fix formatting intersection types that include mapped types (<a href="https://github.com/prettier/prettier/pull/11247" target="_blank" rel="noopener noreferrer" class="">#11247</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/09/09/2.4.0#fix-formatting-intersection-types-that-include-mapped-types-11247-by-sosukesuzuki" class="hash-link" aria-label="Direct link to fix-formatting-intersection-types-that-include-mapped-types-11247-by-sosukesuzuki" title="Direct link to fix-formatting-intersection-types-that-include-mapped-types-11247-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Example</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Example</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Example</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&amp;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow">Flow<a href="https://prettier.io/blog/2021/09/09/2.4.0#flow" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="always-put-a-semicolon-before-flow-variance-sigils-11398-by-noppa">Always put a semicolon before Flow variance sigils (<a href="https://github.com/prettier/prettier/pull/11398" target="_blank" rel="noopener noreferrer" class="">#11398</a> by <a href="https://github.com/noppa" target="_blank" rel="noopener noreferrer" class="">@noppa</a>)<a href="https://prettier.io/blog/2021/09/09/2.4.0#always-put-a-semicolon-before-flow-variance-sigils-11398-by-noppa" class="hash-link" aria-label="Direct link to always-put-a-semicolon-before-flow-variance-sigils-11398-by-noppa" title="Direct link to always-put-a-semicolon-before-flow-variance-sigils-11398-by-noppa" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">+</span><span class="token function-variable function" style="color:#d73a49">one</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">-</span><span class="token plain">two </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">val</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">+</span><span class="token plain">#privOne </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">val</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain">#privTwo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">val</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">+</span><span class="token function-variable function" style="color:#d73a49">one</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">-</span><span class="token plain">two </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">val</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">+</span><span class="token plain">#privOne </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">val</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain">#privTwo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">val</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">A</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">+</span><span class="token function-variable function" style="color:#d73a49">one</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">-</span><span class="token plain">two </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">val</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">+</span><span class="token plain">#privOne </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">val</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain">#privTwo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">val</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scss">SCSS<a href="https://prettier.io/blog/2021/09/09/2.4.0#scss" class="hash-link" aria-label="Direct link to SCSS" title="Direct link to SCSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="consistently-quote-sass-modules-strings-11461-by-niksy">Consistently quote Sass modules strings (<a href="https://github.com/prettier/prettier/pull/11461" target="_blank" rel="noopener noreferrer" class="">#11461</a> by <a href="https://github.com/niksy" target="_blank" rel="noopener noreferrer" class="">@niksy</a>)<a href="https://prettier.io/blog/2021/09/09/2.4.0#consistently-quote-sass-modules-strings-11461-by-niksy" class="hash-link" aria-label="Direct link to consistently-quote-sass-modules-strings-11461-by-niksy" title="Direct link to consistently-quote-sass-modules-strings-11461-by-niksy" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@use</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"sass:math"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@forward</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"list"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@use</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"sass:math"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@forward</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"list"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.4</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@use</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'sass:math'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">@forward</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'list'</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://prettier.io/blog/2021/09/09/2.4.0#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="infer-parser-for-stylelintrc-10924-by-sevenoutman">Infer parser for <code>.stylelintrc</code> (<a href="https://github.com/prettier/prettier/pull/10924" target="_blank" rel="noopener noreferrer" class="">#10924</a> by <a href="https://github.com/SevenOutman" target="_blank" rel="noopener noreferrer" class="">@SevenOutman</a>)<a href="https://prettier.io/blog/2021/09/09/2.4.0#infer-parser-for-stylelintrc-10924-by-sevenoutman" class="hash-link" aria-label="Direct link to infer-parser-for-stylelintrc-10924-by-sevenoutman" title="Direct link to infer-parser-for-stylelintrc-10924-by-sevenoutman" translate="no">​</a></h4>
<p>A <code>.stylelintrc</code> file (without extension) is handled using <code>json</code> and <code>yaml</code> parsers.</p>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 2.3. In which assignments are consistent, short keys non-breaking, and Handlebars official]]></title>
        <id>https://prettier.io/blog/2021/05/09/2.3.0</id>
        <link href="https://prettier.io/blog/2021/05/09/2.3.0"/>
        <updated>2021-05-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release focuses on fixing long-standing issues in the JavaScript printer. Be warned that, unfortunately, reformatting a project with the new version might result in quite a big diff. If you don’t use ignoreRevsFile to hide such wholesale changes from git blame, it might be about time.]]></summary>
        <content type="html"><![CDATA[<p>This release focuses on fixing long-standing issues in the JavaScript printer. Be warned that, unfortunately, reformatting a project with the new version might result in quite a big diff. If you don’t use <a href="https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revs-fileltfilegt" target="_blank" rel="noopener noreferrer" class=""><code>ignoreRevsFile</code></a> to hide such wholesale changes from <code>git blame</code>, it might be about time.</p>
<p>A remarkable milestone is the long-awaited release of the Ember / Handlebars formatter. It’s supposed to be the last formatter included directly in the core library. In the future, for sustainability, languages should be added only by plugins.</p>
<p>We are grateful to our financial contributors: <a href="https://engineering.salesforce.com/foss-fund-brings-more-than-just-financial-contributions-7b0664067b1e" target="_blank" rel="noopener noreferrer" class="">Salesforce</a>, <a href="https://engineering.indeedblog.com/blog/2019/07/foss-fund-six-months-in/" target="_blank" rel="noopener noreferrer" class="">Indeed</a>, <a href="https://blog.opencollective.com/frontend-masters/" target="_blank" rel="noopener noreferrer" class="">Frontend Masters</a>, Airbnb, Shogun Labs, Skyscanner, Konstantin Pschera, and <a href="https://opencollective.com/prettier#section-contributors" target="_blank" rel="noopener noreferrer" class="">many others</a> who help us keep going. If you enjoy Prettier and would like to support our work, head to our <a href="https://opencollective.com/prettier" target="_blank" rel="noopener noreferrer" class="">OpenCollective</a>. Please consider also supporting the projects Prettier depends on, such as <a href="https://opencollective.com/typescript-eslint" target="_blank" rel="noopener noreferrer" class="">typescript-eslint</a>, <a href="https://opencollective.com/unified" target="_blank" rel="noopener noreferrer" class="">remark</a>, and <a href="https://opencollective.com/babel" target="_blank" rel="noopener noreferrer" class="">Babel</a>.</p>
<p>Most of the changes in this release are thanks to the hard work of <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">Fisker Cheung</a>, <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">Georgii Dolzhykov</a>, and <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">Sosuke Suzuki</a>, along with many other contributors.</p>
<p>And just a reminder, when Prettier is installed or updated, it’s <a href="https://prettier.io/docs/install#summary" target="_blank" rel="noopener noreferrer" class="">strongly recommended</a> to specify the exact version in <code>package.json</code>: <code>"2.3.0"</code>, not <code>"^2.3.0"</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2021/05/09/2.3.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2021/05/09/2.3.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="format-assignments-more-consistently-10222-10643-10672-by-thorn0-10158-by-sosukesuzuki">Format assignments more consistently (<a href="https://github.com/prettier/prettier/pull/10222" target="_blank" rel="noopener noreferrer" class="">#10222</a>, <a href="https://github.com/prettier/prettier/pull/10643" target="_blank" rel="noopener noreferrer" class="">#10643</a>, <a href="https://github.com/prettier/prettier/pull/10672" target="_blank" rel="noopener noreferrer" class="">#10672</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>; <a href="https://github.com/prettier/prettier/pull/10158" target="_blank" rel="noopener noreferrer" class="">#10158</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#format-assignments-more-consistently-10222-10643-10672-by-thorn0-10158-by-sosukesuzuki" class="hash-link" aria-label="Direct link to format-assignments-more-consistently-10222-10643-10672-by-thorn0-10158-by-sosukesuzuki" title="Direct link to format-assignments-more-consistently-10222-10643-10672-by-thorn0-10158-by-sosukesuzuki" translate="no">​</a></h4>
<p>Previously, Prettier had a lot of trouble with figuring out how to break lines in assignments. E.g., long right-hand sides often stayed unbroken. Not anymore.</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">aParticularlyLongAndObnoxiousNameForIllustrativePurposes </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> anotherVeryLongNameForIllustrativePurposes</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">aParticularlyLongAndObnoxiousNameForIllustrativePurposes </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"a very long string for illustrative purposes"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">length</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">someReallyLongThingStoredInAMapWithAReallyBigName</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  pageletID</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> _someVariableThatWeAreCheckingForFalsiness</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> Date</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">now</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> _someVariableThatWeAreCheckingForFalsiness</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">x</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> rawConfigFromFile$</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> BehaviorSubject</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">any</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">BehaviorSubject</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    notRead</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">aParticularlyLongAndObnoxiousNameForIllustrativePurposes </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  anotherVeryLongNameForIllustrativePurposes</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">aParticularlyLongAndObnoxiousNameForIllustrativePurposes </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"a very long string for illustrative purposes"</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">length</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">someReallyLongThingStoredInAMapWithAReallyBigName</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">pageletID</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  _someVariableThatWeAreCheckingForFalsiness</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> Date</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">now</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token plain"> _someVariableThatWeAreCheckingForFalsiness</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">x</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">private</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">readonly</span><span class="token plain"> rawConfigFromFile$</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> BehaviorSubject</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token builtin">any</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">BehaviorSubject</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">notRead</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="prevent-wrapping-object-properties-with-short-keys-10335-by-thorn0">Prevent wrapping object properties with short keys (<a href="https://github.com/prettier/prettier/pull/10335" target="_blank" rel="noopener noreferrer" class="">#10335</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#prevent-wrapping-object-properties-with-short-keys-10335-by-thorn0" class="hash-link" aria-label="Direct link to prevent-wrapping-object-properties-with-short-keys-10335-by-thorn0" title="Direct link to prevent-wrapping-object-properties-with-short-keys-10335-by-thorn0" translate="no">​</a></h4>
<p>Line breaks after short property names in object literals often look unnatural. Even when such a line break yields a line length benefit of 1 or 2 characters, it rarely looks justified. Prettier 2.3 avoids line breaks after property names shorter than <code>tabWidth + 3</code> – for example, 5 characters in the default configuration, or 7 characters with <code>tabWidth: 4</code>. This heuristic may be revised in future versions.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> importantLink </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">url</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"https://prettier.io/docs/en/rationale.html#what-prettier-is-concerned-about"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">gitHubUrl</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"https://github.com/prettier/prettier/blob/main/docs/rationale.md#what-prettier-is-concerned-about"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> importantLink </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">url</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://prettier.io/docs/en/rationale.html#what-prettier-is-concerned-about"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">gitHubUrl</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"https://github.com/prettier/prettier/blob/main/docs/rationale.md#what-prettier-is-concerned-about"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ember--handlebars">Ember / Handlebars<a href="https://prettier.io/blog/2021/05/09/2.3.0#ember--handlebars" class="hash-link" aria-label="Direct link to Ember / Handlebars" title="Direct link to Ember / Handlebars" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="move-handlebars-support-out-of-alpha-to-release-10290-by-dcyriller--thorn0">Move Handlebars support out of alpha to release (<a href="https://github.com/prettier/prettier/pull/10290" target="_blank" rel="noopener noreferrer" class="">#10290</a> by <a href="https://github.com/dcyriller" target="_blank" rel="noopener noreferrer" class="">@dcyriller</a> &amp; <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#move-handlebars-support-out-of-alpha-to-release-10290-by-dcyriller--thorn0" class="hash-link" aria-label="Direct link to move-handlebars-support-out-of-alpha-to-release-10290-by-dcyriller--thorn0" title="Direct link to move-handlebars-support-out-of-alpha-to-release-10290-by-dcyriller--thorn0" translate="no">​</a></h4>
<p>This started in 2017. Handlebars support has been in Prettier for a while, but it wasn’t released officially as it wasn’t really ready. Its status went from “alpha” to “experimental” to “beta” and then, if you checked older release notes, you can see that after “beta” somehow it was “alpha” again…</p>
<p>Well, anyway, it finally is happening: Prettier can now officially format HTML templates with Handlebars! 🎉</p>
<p>It uses <a href="https://www.npmjs.com/package/@glimmer/syntax" target="_blank" rel="noopener noreferrer" class="">Glimmer</a>, <a href="https://emberjs.com/" target="_blank" rel="noopener noreferrer" class="">Ember</a>’s Handlebars parser, so it should be compliant with the HTML spec thanks to the Ember team.</p>
<p>The <a href="https://prettier.io/docs/options#html-whitespace-sensitivity" target="_blank" rel="noopener noreferrer" class=""><code>--html-whitespace-sensitivity</code></a> option is supported and defaults to <code>strict</code>, which means that Prettier will always respect the presence or absence of whitespace around tags and consider it unsafe to add whitespace where there were none and vice versa as this can affect how the document is rendered in the browser. The <code>css</code> value is not yet supported (treated as <code>strict</code> for now).</p>
<p>The feature is called “Ember / Handlebars” and not just “Handlebars” because Glimmer doesn’t support some syntax and use cases of Handlebars. This is mostly due to the fact that <a href="https://handlebarsjs.com/" target="_blank" rel="noopener noreferrer" class="">Handlebars</a>, being a template engine (a preprocessor), doesn’t care about the underlying syntax of the content it processes whereas Glimmer parses two syntaxes – HTML and Handlebars – at the same time and combines the result into a single tree, which Prettier can print. This means Prettier won’t format Handlebars files that can’t be parsed into such a tree, either because the underlying syntax isn’t HTML or because template directives and tags overlap in a way that can’t be represented in a tree (e.g., <code>{{#if foo}}&lt;div&gt;{{/if}</code>). Even with these restrictions, the formatter still seems to be useful enough to non-Ember Handlebars users. As for the syntax unsupported by Ember, there is a good chance to see support for it in future versions of Prettier as Glimmer uses a full-fledged Handlebars parser under the hood.</p>
<p>Files with the extensions <code>.hbs</code> and <code>.handlebars</code> are recognized as Handlebars by default. For other extensions, the <a class="" href="https://prettier.io/docs/configuration#setting-the-parser-option"><code>--parser</code></a> option with the value <code>glimmer</code> has to be specified – for example, using command line or, better yet, <a href="https://prettier.io/docs/configuration#configuration-overrides" target="_blank" rel="noopener noreferrer" class="">configuration overrides</a>.</p>
<p>See the formatter in action on the <a href="https://prettier.io/playground/#N4Igxg9gdgLgprEAuEACVAeAJgSwG7qFgA2AhgM7kC8AOiAjAE4CedhqAfDVOhgBYBGDsGDoYOGMTjsAvjIwB6QVx6ZcBdCQrU6AIwhZWIFe1OERhfYbOE53Reo6YFjkABoQEAA7jo5ZKCkjIwQAO4ACkEI-iikxKGkzP4euoykYADWcDAAyl7pOFAA5shMAK5wHnAAtrpwWFj1ADKkxWWkRXAAYhCM1aQw4sXIIKRlMBDuIHww1cQA6nwScOT5YHA50RL4Eswj5Ew4YDBTheRwjDDhaUX9yABmceceAFbkAB4AQmmZ2Tmk1TgTUKcAeT0qIDe7xyhSKUgAimUIPAwcRniB8oxzowRnCcNVATiPF5GIUYPMcFgYHxkAAOAAMxJC53maS8IxJKwueFBHgAjkj4NdvDFRuQALRQOD1epTRhwAU4eXXDp3JCPNEQ87VHClRgVDzkWEIwWg9XgjwwUi6ClUmlIABMlrSOGIsIAwhACaQRisAKxTMrnAAq1piGvReAqAEkoI1YDkwKSfABBOM5GDMKSo85yIA" target="_blank" rel="noopener noreferrer" class="">playground</a>!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="formatting-improvements">Formatting Improvements<a href="https://prettier.io/blog/2021/05/09/2.3.0#formatting-improvements" class="hash-link" aria-label="Direct link to Formatting Improvements" title="Direct link to Formatting Improvements" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript-1">JavaScript<a href="https://prettier.io/blog/2021/05/09/2.3.0#javascript-1" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="refine-formatting-of-curried-arrow-functions-9992-10543-by-sosukesuzuki--thorn0">Refine formatting of curried arrow functions (<a href="https://github.com/prettier/prettier/pull/9992" target="_blank" rel="noopener noreferrer" class="">#9992</a>, <a href="https://github.com/prettier/prettier/pull/10543" target="_blank" rel="noopener noreferrer" class="">#10543</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a> &amp; <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#refine-formatting-of-curried-arrow-functions-9992-10543-by-sosukesuzuki--thorn0" class="hash-link" aria-label="Direct link to refine-formatting-of-curried-arrow-functions-9992-10543-by-sosukesuzuki--thorn0" title="Direct link to refine-formatting-of-curried-arrow-functions-9992-10543-by-sosukesuzuki--thorn0" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">currying</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">argument1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">argument2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">argument3</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">argument4</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token parameter">argument5</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">argument6</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> foo</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">currying</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">argument1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">argument2</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">argument3</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">argument4</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">argument5</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">argument6</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    foo</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-formatting-for-react-hooks-calls-10238-by-sosukesuzuki">Improve formatting for React Hooks calls (<a href="https://github.com/prettier/prettier/pull/10238" target="_blank" rel="noopener noreferrer" class="">#10238</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#improve-formatting-for-react-hooks-calls-10238-by-sosukesuzuki" class="hash-link" aria-label="Direct link to improve-formatting-for-react-hooks-calls-10238-by-sosukesuzuki" title="Direct link to improve-formatting-for-react-hooks-calls-10238-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> firstName</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> lastName </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">useMemo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">parseFullName</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">fullName</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  fullName</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> firstName</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> lastName </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">useMemo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">parseFullName</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">fullName</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">fullName</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-visual-separation-between-header-and-body-in-classes-with-multiline-headers-10085-by-sosukesuzuki">Improve visual separation between header and body in classes with multiline headers (<a href="https://github.com/prettier/prettier/pull/10085" target="_blank" rel="noopener noreferrer" class="">#10085</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#improve-visual-separation-between-header-and-body-in-classes-with-multiline-headers-10085-by-sosukesuzuki" class="hash-link" aria-label="Direct link to improve-visual-separation-between-header-and-body-in-classes-with-multiline-headers-10085-by-sosukesuzuki" title="Direct link to improve-visual-separation-between-header-and-body-in-classes-with-multiline-headers-10085-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">looooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  property</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain"> </span><span class="token class-name">looooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">implements</span><span class="token plain"> </span><span class="token class-name">loooooooooooooooooooong</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  property</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="concise-formatting-of-number-only-arrays-10106-10160-by-thorn0">Concise formatting of number-only arrays (<a href="https://github.com/prettier/prettier/pull/10106" target="_blank" rel="noopener noreferrer" class="">#10106</a>, <a href="https://github.com/prettier/prettier/pull/10160" target="_blank" rel="noopener noreferrer" class="">#10160</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#concise-formatting-of-number-only-arrays-10106-10160-by-thorn0" class="hash-link" aria-label="Direct link to concise-formatting-of-number-only-arrays-10106-10160-by-thorn0" title="Direct link to concise-formatting-of-number-only-arrays-10106-10160-by-thorn0" translate="no">​</a></h4>
<p>While in general, Prettier avoids this kind of formatting because it's not diff-friendly, in this special case we decided that the benefits outweigh the risks.</p>
<p>If at least one element has a trailing single-line (<code>// ...</code>) comment on the same line, the concise formatting isn't applied. On the other hand, single-line comments placed on separate lines don't have such an effect and – as well as empty lines – can be used for logical grouping.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> lazyCatererNumbers  </span><span class="token operator" style="color:#393A34">=</span><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">7</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">11</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">16</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">22</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">29</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">37</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">46</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// n &gt; 10</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">56</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">67</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">79</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">92</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">106</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">121</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">137</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">154</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">172</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">191</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">211</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">232</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">254</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">277</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">301</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">326</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">352</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">379</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">407</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">436</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">466</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">497</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">529</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">562</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">596</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">631</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">667</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">704</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">742</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">781</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// n &gt; 40</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">821</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">862</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">904</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">947</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">991</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1036</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1082</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1129</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1177</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1226</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1276</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1327</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1379</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> lazyCatererNumbers </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">7</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">11</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">16</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">22</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">29</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">37</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// ... ✂ 46 lines ✂ ...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1379</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> lazyCatererNumbers </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">7</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">11</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">16</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">22</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">29</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">37</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">46</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// n &gt; 10</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">56</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">67</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">79</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">92</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">106</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">121</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">137</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">154</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">172</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">191</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">211</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">232</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">254</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">277</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">301</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">326</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">352</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">379</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">407</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">436</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">466</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">497</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">529</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">562</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">596</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">631</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">667</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">704</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">742</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">781</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// n &gt; 40</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">821</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">862</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">904</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">947</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">991</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1036</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1082</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1129</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1177</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1226</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1276</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1327</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1379</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-formatting-for-nested-await-expressions-in-heads-of-member-and-call-expressions-10342-by-thorn0">Improve formatting for nested await expressions in heads of member and call expressions (<a href="https://github.com/prettier/prettier/pull/10342" target="_blank" rel="noopener noreferrer" class="">#10342</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#improve-formatting-for-nested-await-expressions-in-heads-of-member-and-call-expressions-10342-by-thorn0" class="hash-link" aria-label="Direct link to improve-formatting-for-nested-await-expressions-in-heads-of-member-and-call-expressions-10342-by-thorn0" title="Direct link to improve-formatting-for-nested-await-expressions-in-heads-of-member-and-call-expressions-10342-by-thorn0" translate="no">​</a></h4>
<p>Even though Prettier tries to be helpful here, please don't write code like this. Have mercy upon your teammates and use intermediate variables.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">getAccountCount</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">focusOnSection</span><span class="token punctuation" style="color:#393A34">(</span><span class="token constant" style="color:#36acaa">BOOKMARKED_PROJECTS_SECTION_NAME</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">findItem</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"My bookmarks"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getChildren</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">getAccountCount</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">focusOnSection</span><span class="token punctuation" style="color:#393A34">(</span><span class="token constant" style="color:#36acaa">BOOKMARKED_PROJECTS_SECTION_NAME</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">findItem</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"My bookmarks"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getChildren</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">getAccountCount</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">focusOnSection</span><span class="token punctuation" style="color:#393A34">(</span><span class="token constant" style="color:#36acaa">BOOKMARKED_PROJECTS_SECTION_NAME</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">findItem</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"My bookmarks"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">getChildren</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">length</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-formatting-for-do-expressions-in-function-calls-10693-by-sosukesuzuki">Improve formatting for <code>do</code> expressions in function calls (<a href="https://github.com/prettier/prettier/pull/10693" target="_blank" rel="noopener noreferrer" class="">#10693</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#improve-formatting-for-do-expressions-in-function-calls-10693-by-sosukesuzuki" class="hash-link" aria-label="Direct link to improve-formatting-for-do-expressions-in-function-calls-10693-by-sosukesuzuki" title="Direct link to improve-formatting-for-do-expressions-in-function-calls-10693-by-sosukesuzuki" translate="no">​</a></h4>
<p>“<code>do</code> expressions” are a <a href="https://github.com/tc39/proposal-do-expressions" target="_blank" rel="noopener noreferrer" class="">stage 1 ECMAScript proposal</a>.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">expect</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">do</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">toBe</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">expect</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword control-flow" style="color:#00009f">do</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">toBe</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="consistent-indentation-for-conditional-operators-10187-10266-by-sosukesuzuki">Consistent indentation for conditional operators (<a href="https://github.com/prettier/prettier/pull/10187" target="_blank" rel="noopener noreferrer" class="">#10187</a>, <a href="https://github.com/prettier/prettier/pull/10266" target="_blank" rel="noopener noreferrer" class="">#10266</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#consistent-indentation-for-conditional-operators-10187-10266-by-sosukesuzuki" class="hash-link" aria-label="Direct link to consistent-indentation-for-conditional-operators-10187-10266-by-sosukesuzuki" title="Direct link to consistent-indentation-for-conditional-operators-10187-10266-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> dotNotationMemberExpression </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">type </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token constant" style="color:#36acaa">AST_NODE_TYPES</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ChainExpression</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">TSESTree</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">BinaryExpression</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> computedMemberExpression </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">type </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token constant" style="color:#36acaa">AST_NODE_TYPES</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ChainExpression</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">TSESTree</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">BinaryExpression</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> callExpressionCallee </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">type </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">AST_NODE_TYPES</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ChainExpression</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">TSESTree</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">BinaryExpression</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> typeScriptAsExpression </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">type </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token constant" style="color:#36acaa">AST_NODE_TYPES</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ChainExpression</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> TSESTree</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">BinaryExpression</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> dotNotationMemberExpression </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">type </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">AST_NODE_TYPES</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ChainExpression</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">TSESTree</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">BinaryExpression</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> computedMemberExpression </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">type </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">AST_NODE_TYPES</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ChainExpression</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">TSESTree</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">BinaryExpression</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> callExpressionCallee </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">type </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">AST_NODE_TYPES</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ChainExpression</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">TSESTree</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">BinaryExpression</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> typeScriptAsExpression </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">type </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">AST_NODE_TYPES</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ChainExpression</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> callNode</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">parent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> TSESTree</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">BinaryExpression</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2021/05/09/2.3.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="prefix-based-multiline-formatting-for-the-class-attribute-7865-by-thorn0">Prefix-based multiline formatting for the <code>class</code> attribute (<a href="https://github.com/prettier/prettier/pull/7865" target="_blank" rel="noopener noreferrer" class="">#7865</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#prefix-based-multiline-formatting-for-the-class-attribute-7865-by-thorn0" class="hash-link" aria-label="Direct link to prefix-based-multiline-formatting-for-the-class-attribute-7865-by-thorn0" title="Direct link to prefix-based-multiline-formatting-for-the-class-attribute-7865-by-thorn0" translate="no">​</a></h4>
<p>Formatting of HTML class names will now keep classes on one line until the line length limit is reached; at that point, consecutive classes with the same prefix will be grouped together on each line. For layout frameworks such as Bootstrap and Tailwind CSS, which add many classes to an element, this is important for readability and maintainability vs. the previous behavior (keeping all classes on one line) or e.g. putting each class on its own line.</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">SomeComponent__heading-row d-flex flex-column flex-lg-row justify-content-start justify-content-lg-between align-items-start align-items-lg-center</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">  </span><span class="token tag attr-name" style="color:#00a4db">class</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    SomeComponent__heading-row</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    d-flex</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    flex-column flex-lg-row</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    justify-content-start justify-content-lg-between</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">    align-items-start align-items-lg-center</span><br></span><span class="token-line" style="color:#393A34"><span class="token tag attr-value" style="color:#e3116c">  </span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f"></span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other Changes<a href="https://prettier.io/blog/2021/05/09/2.3.0#other-changes" class="hash-link" aria-label="Direct link to Other Changes" title="Direct link to Other Changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript-2">JavaScript<a href="https://prettier.io/blog/2021/05/09/2.3.0#javascript-2" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-unstable-multiple-comments-on-the-same-line-9672-by-fisker">Fix unstable multiple comments on the same line (<a href="https://github.com/prettier/prettier/pull/9672" target="_blank" rel="noopener noreferrer" class="">#9672</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-unstable-multiple-comments-on-the-same-line-9672-by-fisker" class="hash-link" aria-label="Direct link to fix-unstable-multiple-comments-on-the-same-line-9672-by-fisker" title="Direct link to fix-unstable-multiple-comments-on-the-same-line-9672-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/*1*/</span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">*</span><span class="token number" style="color:#36acaa">2</span><span class="token operator" style="color:#393A34">*</span><span class="token operator" style="color:#393A34">/</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/*3*/</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">b</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/*2*/</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/*1*/</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/*3*/</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">b</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2 (second format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/*2*/</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/*3*/</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/*1*/</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/*1*/</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/*2*/</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/*3*/</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">b</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dont-format-nodes-that-end-just-before-rangestart-9704-by-fisker">Don’t format nodes that end just before <code>rangeStart</code> (<a href="https://github.com/prettier/prettier/pull/9704" target="_blank" rel="noopener noreferrer" class="">#9704</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#dont-format-nodes-that-end-just-before-rangestart-9704-by-fisker" class="hash-link" aria-label="Direct link to dont-format-nodes-that-end-just-before-rangestart-9704-by-fisker" title="Direct link to dont-format-nodes-that-end-just-before-rangestart-9704-by-fisker" translate="no">​</a></h4>
<p>Previously, when <a href="https://prettier.io/docs/options#range" target="_blank" rel="noopener noreferrer" class="">range formatting</a> was performed, such nodes were considered part of the range, now they're excluded. This affects other languages that the range formatting feature supports, not only JavaScript.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1.0000</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain">bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1.0000</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain">baz</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1.0000</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">             </span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token plain"> </span><span class="token maybe-class-name">Range</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1.0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1.0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain">baz</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1.0000</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1.0000</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain">bar </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1.0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain">baz</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">1.0000</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-comments-inside-jsx-end-tag-9711-by-fisker">Fix comments inside JSX end tag (<a href="https://github.com/prettier/prettier/pull/9711" target="_blank" rel="noopener noreferrer" class="">#9711</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-comments-inside-jsx-end-tag-9711-by-fisker" class="hash-link" aria-label="Direct link to fix-comments-inside-jsx-end-tag-9711-by-fisker" title="Direct link to fix-comments-inside-jsx-end-tag-9711-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">a</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">&lt;// comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">/a&gt;;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 2.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">a</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">&lt;/// comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">a&gt;;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 2.3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">a</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">&lt;/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  // comment</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">&gt;;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-inconsistent-language-comment-detection-9743-by-fisker">Fix inconsistent language comment detection (<a href="https://github.com/prettier/prettier/pull/9743" target="_blank" rel="noopener noreferrer" class="">#9743</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-inconsistent-language-comment-detection-9743-by-fisker" class="hash-link" aria-label="Direct link to fix-inconsistent-language-comment-detection-9743-by-fisker" title="Direct link to fix-inconsistent-language-comment-detection-9743-by-fisker" translate="no">​</a></h4>
<p>An <code>/* HTML */</code> comment should directly precede a template literal for the latter to be recognized as HTML-in-JS. Previously, the comment was erroneously recognized is some other locations.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token comment" style="color:#999988;font-style:italic">/* HTML */</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">&lt;DIV&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">&lt;/DIV&gt;</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2 (--parser=babel)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token comment" style="color:#999988;font-style:italic">/* HTML */</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">&lt;div&gt;&lt;/div&gt;</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2 (--parser=meriyah)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token comment" style="color:#999988;font-style:italic">/* HTML */</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">&lt;DIV&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">&lt;/DIV&gt;</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3 (All JavaScript parsers)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token comment" style="color:#999988;font-style:italic">/* HTML */</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">&lt;DIV&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">&lt;/DIV&gt;</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-extra-semicolon-added-to-ignored-directives-9850-by-fisker">Fix extra semicolon added to ignored directives (<a href="https://github.com/prettier/prettier/pull/9850" target="_blank" rel="noopener noreferrer" class="">#9850</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-extra-semicolon-added-to-ignored-directives-9850-by-fisker" class="hash-link" aria-label="Direct link to fix-extra-semicolon-added-to-ignored-directives-9850-by-fisker" title="Direct link to fix-extra-semicolon-added-to-ignored-directives-9850-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token string" style="color:#e3116c">'use strict'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token string" style="color:#e3116c">"use strict"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token string" style="color:#e3116c">'use strict'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"use strict"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token string" style="color:#e3116c">'use strict'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"use strict"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-unstable-jsx-formatting-with-u3000-9866-by-fisker">Fix unstable JSX formatting with U+3000 (<a href="https://github.com/prettier/prettier/pull/9866" target="_blank" rel="noopener noreferrer" class="">#9866</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-unstable-jsx-formatting-with-u3000-9866-by-fisker" class="hash-link" aria-label="Direct link to fix-unstable-jsx-formatting-with-u3000-9866-by-fisker" title="Direct link to fix-unstable-jsx-formatting-with-u3000-9866-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">p</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">span </span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">　</span><span class="token punctuation" style="color:#393A34">{</span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">props</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">title</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">　</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">span </span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">//----- ^ U+3000 --------------- ^ U+3000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">p</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">p</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">span </span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  　</span><span class="token punctuation" style="color:#393A34">{</span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">props</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">title</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">　</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">span </span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">//----- ^ U+3000 --------------- ^ U+3000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">p</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2 (second format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">p</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">span </span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">　</span><span class="token punctuation" style="color:#393A34">{</span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">props</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">title</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">　</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">span </span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">//----- ^ U+3000 --------------- ^ U+3000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">p</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">p</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">span </span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">　</span><span class="token punctuation" style="color:#393A34">{</span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">props</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">data</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">title</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">　</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">span </span><span class="token operator" style="color:#393A34">/</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">//----- ^ U+3000 --------------- ^ U+3000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">p</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-error-thrown-on-expressions-like-ab--c--function--10278-by-thorn0">Fix error thrown on expressions like <code>a(b =&gt; c =&gt; function (){})</code> (<a href="https://github.com/prettier/prettier/pull/10278" target="_blank" rel="noopener noreferrer" class="">#10278</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-error-thrown-on-expressions-like-ab--c--function--10278-by-thorn0" class="hash-link" aria-label="Direct link to fix-error-thrown-on-expressions-like-ab--c--function--10278-by-thorn0" title="Direct link to fix-error-thrown-on-expressions-like-ab--c--function--10278-by-thorn0" translate="no">​</a></h4>
<p>Regression from v2.2.0.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">b</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token parameter">c</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">TypeError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Cannot</span><span class="token plain"> read property </span><span class="token string" style="color:#e3116c">'length'</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> </span><span class="token keyword nil" style="color:#00009f">undefined</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">a</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">b</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter">c</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-formatting-for-inline-decorators-10296-by-fisker">Improve formatting for inline decorators (<a href="https://github.com/prettier/prettier/pull/10296" target="_blank" rel="noopener noreferrer" class="">#10296</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#improve-formatting-for-inline-decorators-10296-by-fisker" class="hash-link" aria-label="Direct link to improve-formatting-for-inline-decorators-10296-by-fisker" title="Direct link to improve-formatting-for-inline-decorators-10296-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @</span><span class="token function" style="color:#d73a49">decorator</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @</span><span class="token function" style="color:#d73a49">decorator</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">baz</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @</span><span class="token function" style="color:#d73a49">decorator</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @</span><span class="token function" style="color:#d73a49">decorator</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">baz</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @</span><span class="token function" style="color:#d73a49">decorator</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  @</span><span class="token function" style="color:#d73a49">decorator</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">baz</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-asi-protection-for-private-fields-10334-by-thorn0">Fix ASI protection for private fields (<a href="https://github.com/prettier/prettier/pull/10334" target="_blank" rel="noopener noreferrer" class="">#10334</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-asi-protection-for-private-fields-10334-by-thorn0" class="hash-link" aria-label="Direct link to fix-asi-protection-for-private-fields-10334-by-thorn0" title="Direct link to fix-asi-protection-for-private-fields-10334-by-thorn0" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">C</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  #field </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'value'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"method"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2 (with --no-semi)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">C</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  #field </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"method"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3 (with --no-semi)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">C</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  #field </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"value"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"method"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-module-blocks-proposal-10417-by-sosukesuzuki-thorn0">Support Module Blocks proposal (<a href="https://github.com/prettier/prettier/pull/10417" target="_blank" rel="noopener noreferrer" class="">#10417</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>, <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#support-module-blocks-proposal-10417-by-sosukesuzuki-thorn0" class="hash-link" aria-label="Direct link to support-module-blocks-proposal-10417-by-sosukesuzuki-thorn0" title="Direct link to support-module-blocks-proposal-10417-by-sosukesuzuki-thorn0" translate="no">​</a></h4>
<p>Support formatting for <a href="https://github.com/tc39/proposal-js-module-blocks" target="_blank" rel="noopener noreferrer" class="">Module Blocks Stage 2 proposal</a>.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">module </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Unexpected</span><span class="token plain"> token</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> expected </span><span class="token string" style="color:#e3116c">";"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">module </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-missing-parentheses-for-yield-in-a-pipeline-10446-by-fisker">Fix missing parentheses for <code>yield</code> in a pipeline (<a href="https://github.com/prettier/prettier/pull/10446" target="_blank" rel="noopener noreferrer" class="">#10446</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-missing-parentheses-for-yield-in-a-pipeline-10446-by-fisker" class="hash-link" aria-label="Direct link to fix-missing-parentheses-for-yield-in-a-pipeline-10446-by-fisker" title="Direct link to fix-missing-parentheses-for-yield-in-a-pipeline-10446-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> x </span><span class="token operator" style="color:#393A34">|</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> #</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> x </span><span class="token operator" style="color:#393A34">|</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> #</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> x </span><span class="token operator" style="color:#393A34">|</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> #</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="make-babels-error-recovery-more-selective-10495-by-fisker-9787-by-sosukesuzuki-10065-10322-by-thorn0">Make Babel’s error recovery more selective (<a href="https://github.com/prettier/prettier/pull/10495" target="_blank" rel="noopener noreferrer" class="">#10495</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/prettier/prettier/pull/9787" target="_blank" rel="noopener noreferrer" class="">#9787</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>, <a href="https://github.com/prettier/prettier/pull/10065" target="_blank" rel="noopener noreferrer" class="">#10065</a>, <a href="https://github.com/prettier/prettier/pull/10322" target="_blank" rel="noopener noreferrer" class="">#10322</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#make-babels-error-recovery-more-selective-10495-by-fisker-9787-by-sosukesuzuki-10065-10322-by-thorn0" class="hash-link" aria-label="Direct link to make-babels-error-recovery-more-selective-10495-by-fisker-9787-by-sosukesuzuki-10065-10322-by-thorn0" title="Direct link to make-babels-error-recovery-more-selective-10495-by-fisker-9787-by-sosukesuzuki-10065-10322-by-thorn0" translate="no">​</a></h4>
<p>Previously, because of the <a href="https://babeljs.io/blog/2019/11/05/7.7.0#parser-error-recovery-10363httpsgithubcombabelbabelpull10363" target="_blank" rel="noopener noreferrer" class="">error recovery</a>, the Babel parser was too permissive, which lead to all kinds of AST shapes that Prettier couldn’t print. Prettier 2.3 lets Babel recover only from a few harmless types of errors – for example, multiple <code>const</code> declarations with the same name. Anything else is reported as syntax errors.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"a"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"b"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">TypeError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Cannot</span><span class="token plain"> read property </span><span class="token string" style="color:#e3116c">'type'</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> </span><span class="token keyword null nil" style="color:#00009f">null</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> stdin</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Argument</span><span class="token plain"> expression expected</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"a"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"b"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">     </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">          </span><span class="token operator" style="color:#393A34">^</span><br></span></code></pre></div></div>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> \u</span><span class="token punctuation" style="color:#393A34">{</span><span class="token number" style="color:#36acaa">20</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain">   </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> stdin</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Invalid</span><span class="token plain"> </span><span class="token maybe-class-name">Unicode</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">escape</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">7</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> \u</span><span class="token punctuation" style="color:#393A34">{</span><span class="token number" style="color:#36acaa">20</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">     </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">       </span><span class="token operator" style="color:#393A34">^</span><span class="token plain">         </span><span class="token operator" style="color:#393A34">^</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="avoid-last-argument-hugging-for-number-only-arrays-10517-by-thorn0">Avoid last-argument hugging for number-only arrays (<a href="https://github.com/prettier/prettier/pull/10517" target="_blank" rel="noopener noreferrer" class="">#10517</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#avoid-last-argument-hugging-for-number-only-arrays-10517-by-thorn0" class="hash-link" aria-label="Direct link to avoid-last-argument-hugging-for-number-only-arrays-10517-by-thorn0" title="Direct link to avoid-last-argument-hugging-for-number-only-arrays-10517-by-thorn0" translate="no">​</a></h4>
<p>Another special case for number-only arrays.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">instantiate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">game</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">transform</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">0.7</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.5</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">render_colored_diffuse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">game</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">MaterialDiffuse</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> game</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">Meshes</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"monkey_flat"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.3</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">instantiate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">game</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">transform</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">0.7</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.5</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">render_colored_diffuse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">game</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">MaterialDiffuse</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> game</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">Meshes</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"monkey_flat"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">0.3</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">instantiate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">game</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">transform</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">0.7</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.5</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">render_colored_diffuse</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    game</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">MaterialDiffuse</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    game</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access maybe-class-name">Meshes</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"monkey_flat"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.3</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-detection-of-amd-define-10528-by-thorn0">Improve detection of AMD <code>define</code> (<a href="https://github.com/prettier/prettier/pull/10528" target="_blank" rel="noopener noreferrer" class="">#10528</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#improve-detection-of-amd-define-10528-by-thorn0" class="hash-link" aria-label="Direct link to improve-detection-of-amd-define-10528-by-thorn0" title="Direct link to improve-detection-of-amd-define-10528-by-thorn0" translate="no">​</a></h4>
<p>Prettier special-cases AMD <code>define</code> calls to avoid unexpected line breaks in them. We now only format <code>define</code> calls if they are at the top level of a function or program and are passed arguments in the way AMD expects.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> someVariable </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">define</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"some string literal"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> anotherVariable</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> yetAnotherVariable</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> someVariable </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">define</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"some string literal"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  anotherVariable</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  yetAnotherVariable</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-duplicated-prettier-ignore-comments-10666-by-fisker">Fix duplicated <code>prettier-ignore</code> comments (<a href="https://github.com/prettier/prettier/pull/10666" target="_blank" rel="noopener noreferrer" class="">#10666</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-duplicated-prettier-ignore-comments-10666-by-fisker" class="hash-link" aria-label="Direct link to fix-duplicated-prettier-ignore-comments-10666-by-fisker" title="Direct link to fix-duplicated-prettier-ignore-comments-10666-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  b</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  a</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  b</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  b</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="process-conditional-groups-in-mapdoc-10695-by-thorn0">Process conditional groups in <code>mapDoc</code> (<a href="https://github.com/prettier/prettier/pull/10695" target="_blank" rel="noopener noreferrer" class="">#10695</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#process-conditional-groups-in-mapdoc-10695-by-thorn0" class="hash-link" aria-label="Direct link to process-conditional-groups-in-mapdoc-10695-by-thorn0" title="Direct link to process-conditional-groups-in-mapdoc-10695-by-thorn0" translate="no">​</a></h4>
<p>In particular, this fixes broken substitutions in HTML-in-JS.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">include_photoswipe</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	gallery_selector </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">".my-gallery"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">	</span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* HTML */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">		&lt;script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">			window.addEventListener("load", () =&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">				initPhotoSwipeFromDOM("</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">gallery_selector</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">")</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">			);</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">		&lt;/script&gt;</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">include_photoswipe</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  gallery_selector </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">".my-gallery"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* HTML */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"> &lt;script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    window.addEventListener("load", () =&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">      initPhotoSwipeFromDOM("PRETTIER_HTML_PLACEHOLDER_0_13_IN_JS")</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    );</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  &lt;/script&gt;</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">default</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">include_photoswipe</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  gallery_selector </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">".my-gallery"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> string </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">return</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* HTML */</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"> &lt;script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    window.addEventListener("load", () =&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">      initPhotoSwipeFromDOM("</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">gallery_selector</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string string" style="color:#e3116c">")</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">    );</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  &lt;/script&gt;</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="avoid-arg-expansion-that-leads-to-broken-code-10712-by-thorn0">Avoid arg expansion that leads to broken code (<a href="https://github.com/prettier/prettier/pull/10712" target="_blank" rel="noopener noreferrer" class="">#10712</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#avoid-arg-expansion-that-leads-to-broken-code-10712-by-thorn0" class="hash-link" aria-label="Direct link to avoid-arg-expansion-that-leads-to-broken-code-10712-by-thorn0" title="Direct link to avoid-arg-expansion-that-leads-to-broken-code-10712-by-thorn0" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">glimseGlyphsHazardNoopsTieTie</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">b</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">averredBathersBoxroomBuggyNurl</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">glimseGlyphsHazardNoopsTieTie</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">b</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">averredBathersBoxroomBuggyNurl</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">glimseGlyphsHazardNoopsTieTie</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function-variable function" style="color:#d73a49">b</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">averredBathersBoxroomBuggyNurl</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-missing-parentheses-around-async-in-for-of-10781-by-fisker">Fix missing parentheses around <code>async</code> in <code>for-of</code> (<a href="https://github.com/prettier/prettier/pull/10781" target="_blank" rel="noopener noreferrer" class="">#10781</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-missing-parentheses-around-async-in-for-of-10781-by-fisker" class="hash-link" aria-label="Direct link to fix-missing-parentheses-around-async-in-for-of-10781-by-fisker" title="Direct link to fix-missing-parentheses-around-async-in-for-of-10781-by-fisker" translate="no">​</a></h4>
<p>See <a href="https://github.com/tc39/ecma262/issues/2034" target="_blank" rel="noopener noreferrer" class="">https://github.com/tc39/ecma262/issues/2034</a></p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">async</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2 (second format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Unexpected</span><span class="token plain"> token</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> expected </span><span class="token string" style="color:#e3116c">"=&gt;"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">15</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">for</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">async</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">of</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-async-do-expressions-proposal-10813-by-sosukesuzuki">Support <code>async do</code> expressions proposal (<a href="https://github.com/prettier/prettier/pull/10813" target="_blank" rel="noopener noreferrer" class="">#10813</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#support-async-do-expressions-proposal-10813-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-async-do-expressions-proposal-10813-by-sosukesuzuki" title="Direct link to support-async-do-expressions-proposal-10813-by-sosukesuzuki" translate="no">​</a></h4>
<p>See <a href="https://github.com/tc39/proposal-async-do-expressions" target="_blank" rel="noopener noreferrer" class="">https://github.com/tc39/proposal-async-do-expressions</a></p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">do</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">requestAPI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Unexpected</span><span class="token plain"> token</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> expected </span><span class="token string" style="color:#e3116c">";"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">17</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">do</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">requestAPI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">json</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2021/05/09/2.3.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-missing-comments-in-methoddefinition-9872-by-fisker">Fix missing comments in <code>MethodDefinition</code> (<a href="https://github.com/prettier/prettier/pull/9872" target="_blank" rel="noopener noreferrer" class="">#9872</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-missing-comments-in-methoddefinition-9872-by-fisker" class="hash-link" aria-label="Direct link to fix-missing-comments-in-methoddefinition-9872-by-fisker" title="Direct link to fix-missing-comments-in-methoddefinition-9872-by-fisker" translate="no">​</a></h4>
<p><code>typescript</code> parser only, <code>babel-ts</code> doesn't have this issue.</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* bat */</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Error</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Comment </span><span class="token string" style="color:#e3116c">"bat"</span><span class="token plain"> was not printed</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> Please report </span><span class="token keyword" style="color:#00009f">this</span><span class="token plain"> error</span><span class="token operator" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  bar </span><span class="token comment" style="color:#999988;font-style:italic">/* bat */</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-unnecessary-line-breaks-in-method-type-declaration-parameters-10024-by-sosukesuzuki-10357-by-thorn0">Fix unnecessary line breaks in method type declaration parameters (<a href="https://github.com/prettier/prettier/pull/10024" target="_blank" rel="noopener noreferrer" class="">#10024</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>, <a href="https://github.com/prettier/prettier/pull/10357" target="_blank" rel="noopener noreferrer" class="">#10357</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-unnecessary-line-breaks-in-method-type-declaration-parameters-10024-by-sosukesuzuki-10357-by-thorn0" class="hash-link" aria-label="Direct link to fix-unnecessary-line-breaks-in-method-type-declaration-parameters-10024-by-sosukesuzuki-10357-by-thorn0" title="Direct link to fix-unnecessary-line-breaks-in-method-type-declaration-parameters-10024-by-sosukesuzuki-10357-by-thorn0" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">foo</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token maybe-class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string string" style="color:#e3116c">  </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-trailing-commas-in-type-parameters-10109-by-sosukesuzuki-10353-by-thorn0">Print trailing commas in type parameters (<a href="https://github.com/prettier/prettier/pull/10109" target="_blank" rel="noopener noreferrer" class="">#10109</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>, <a href="https://github.com/prettier/prettier/pull/10353" target="_blank" rel="noopener noreferrer" class="">#10353</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#print-trailing-commas-in-type-parameters-10109-by-sosukesuzuki-10353-by-thorn0" class="hash-link" aria-label="Direct link to print-trailing-commas-in-type-parameters-10109-by-sosukesuzuki-10353-by-thorn0" title="Direct link to print-trailing-commas-in-type-parameters-10109-by-sosukesuzuki-10353-by-thorn0" translate="no">​</a></h4>
<p>TypeScript has been supporting trailing commas in type parameters since TypeScript 2.7 released in January 2018. Prettier 2.3 prints them if the <code>trailingComma</code> option is set to <code>all</code>. Keep this option at the more conservative default value <code>es5</code> if compatibility with TypeScript 2.7 or older is needed. Note that TypeScript <a href="https://github.com/microsoft/TypeScript/issues/21984" target="_blank" rel="noopener noreferrer" class="">still doesn't support</a> trailing commas in type arguments (type parameter instantiations).</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">BaseSingleLevelProfileTargeting</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">	</span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ValidSingleLevelProfileNode</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// ...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">BaseSingleLevelProfileTargeting</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ValidSingleLevelProfileNode</span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// ...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3 with --trailling-comma=all</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">BaseSingleLevelProfileTargeting</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name">  </span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> ValidSingleLevelProfileNode</span><span class="token class-name punctuation" style="color:#393A34">,</span><span class="token class-name"></span><br></span><span class="token-line" style="color:#393A34"><span class="token class-name"></span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// ...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="allow-hugging-arguments-that-are-non-concise-arrow-functions-with-return-type-annotations-10316-by-thorn0">Allow hugging arguments that are non-concise arrow functions with return type annotations (<a href="https://github.com/prettier/prettier/pull/10316" target="_blank" rel="noopener noreferrer" class="">#10316</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#allow-hugging-arguments-that-are-non-concise-arrow-functions-with-return-type-annotations-10316-by-thorn0" class="hash-link" aria-label="Direct link to allow-hugging-arguments-that-are-non-concise-arrow-functions-with-return-type-annotations-10316-by-thorn0" title="Direct link to allow-hugging-arguments-that-are-non-concise-arrow-functions-with-return-type-annotations-10316-by-thorn0" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">users</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">user</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> User</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> User </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> user</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">users</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">user</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> User</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> User </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> user</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="correct-parentheses-for-non-null-assertions-10337-by-thorn0">Correct parentheses for non-null assertions (<a href="https://github.com/prettier/prettier/pull/10337" target="_blank" rel="noopener noreferrer" class="">#10337</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#correct-parentheses-for-non-null-assertions-10337-by-thorn0" class="hash-link" aria-label="Direct link to correct-parentheses-for-non-null-assertions-10337-by-thorn0" title="Direct link to correct-parentheses-for-non-null-assertions-10337-by-thorn0" translate="no">​</a></h4>
<p>Necessary parentheses sometimes weren't printed in expressions containing non-null assertions. This has been fixed.</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> myFunction2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">key</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    b</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2 (invalid syntax)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> myFunction2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">key</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    b</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> myFunction2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">key</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    b</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">!</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="indent-type-assertions-in-heads-of-member-and-call-expressions-10341-by-thorn0">Indent type assertions in heads of member and call expressions (<a href="https://github.com/prettier/prettier/pull/10341" target="_blank" rel="noopener noreferrer" class="">#10341</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#indent-type-assertions-in-heads-of-member-and-call-expressions-10341-by-thorn0" class="hash-link" aria-label="Direct link to indent-type-assertions-in-heads-of-member-and-call-expressions-10341-by-thorn0" title="Direct link to indent-type-assertions-in-heads-of-member-and-call-expressions-10341-by-thorn0" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> accountCount </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">findItemInSection</span><span class="token punctuation" style="color:#393A34">(</span><span class="token constant" style="color:#36acaa">BOOKMARKED_PROJECTS_SECTION_NAME</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"My bookmarks"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> TreeItem</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">getChildren</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">length</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> accountCount </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">findItemInSection</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">BOOKMARKED_PROJECTS_SECTION_NAME</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"My bookmarks"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> TreeItem</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">getChildren</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">length</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> accountCount </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">findItemInSection</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token constant" style="color:#36acaa">BOOKMARKED_PROJECTS_SECTION_NAME</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"My bookmarks"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> TreeItem</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">getChildren</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">length</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-intrinsic-keyword-10390-by-sosukesuzuki">Support intrinsic keyword (<a href="https://github.com/prettier/prettier/pull/10390" target="_blank" rel="noopener noreferrer" class="">#10390</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#support-intrinsic-keyword-10390-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-intrinsic-keyword-10390-by-sosukesuzuki" title="Direct link to support-intrinsic-keyword-10390-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Uppercase</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">S</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> </span><span class="token class-name builtin">string</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> intrinsic</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Error</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">unknown</span><span class="token plain"> type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"TSIntrinsicKeyword"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Uppercase</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">S</span><span class="token class-name"> </span><span class="token class-name keyword" style="color:#00009f">extends</span><span class="token class-name"> </span><span class="token class-name builtin">string</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> intrinsic</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-typescript-42-10418-10466-10546-10589-by-sosukesuzuki">Support TypeScript 4.2 (<a href="https://github.com/prettier/prettier/pull/10418" target="_blank" rel="noopener noreferrer" class="">#10418</a>, <a href="https://github.com/prettier/prettier/pull/10466" target="_blank" rel="noopener noreferrer" class="">#10466</a>, <a href="https://github.com/prettier/prettier/pull/10546" target="_blank" rel="noopener noreferrer" class="">#10546</a>, <a href="https://github.com/prettier/prettier/pull/10589" target="_blank" rel="noopener noreferrer" class="">#10589</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#support-typescript-42-10418-10466-10546-10589-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-typescript-42-10418-10466-10546-10589-by-sosukesuzuki" title="Direct link to support-typescript-42-10418-10466-10546-10589-by-sosukesuzuki" translate="no">​</a></h4>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="abstract-construct-signatures"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-2/#abstract-construct-signatures" target="_blank" rel="noopener noreferrer" class=""><code>abstract</code> Construct Signatures</a><a href="https://prettier.io/blog/2021/05/09/2.3.0#abstract-construct-signatures" class="hash-link" aria-label="Direct link to abstract-construct-signatures" title="Direct link to abstract-construct-signatures" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">abstract</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Unexpected token</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> expected </span><span class="token string" style="color:#e3116c">";"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">19</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">abstract</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="type-imports-in-import-require-declaration"><a href="https://github.com/microsoft/TypeScript/pull/41573" target="_blank" rel="noopener noreferrer" class="">Type imports in import require declaration</a><a href="https://prettier.io/blog/2021/05/09/2.3.0#type-imports-in-import-require-declaration" class="hash-link" aria-label="Direct link to type-imports-in-import-require-declaration" title="Direct link to type-imports-in-import-require-declaration" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"A"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Only ECMAScript imports may use </span><span class="token string" style="color:#e3116c">'import type'</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"A"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-misplaced-comments-in-unions-and-intersections-10457-by-thorn0">Fix misplaced comments in unions and intersections (<a href="https://github.com/prettier/prettier/pull/10457" target="_blank" rel="noopener noreferrer" class="">#10457</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-misplaced-comments-in-unions-and-intersections-10457-by-thorn0" class="hash-link" aria-label="Direct link to fix-misplaced-comments-in-unions-and-intersections-10457-by-thorn0" title="Direct link to fix-misplaced-comments-in-unions-and-intersections-10457-by-thorn0" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* two */</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"3"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* two */</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"3"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2"</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">/* two */</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"3"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dont-print-parens-around-nested-type-assertions-10702-by-thorn0">Don’t print parens around nested type assertions (<a href="https://github.com/prettier/prettier/pull/10702" target="_blank" rel="noopener noreferrer" class="">#10702</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#dont-print-parens-around-nested-type-assertions-10702-by-thorn0" class="hash-link" aria-label="Direct link to dont-print-parens-around-nested-type-assertions-10702-by-thorn0" title="Direct link to dont-print-parens-around-nested-type-assertions-10702-by-thorn0" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token builtin">unknown</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> Bar</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">foo </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token builtin">unknown</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> Bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> </span><span class="token builtin">unknown</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> Bar</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-typescript-43-via-babel-ts-10811-by-sosukesuzuki">Support TypeScript 4.3 via <code>babel-ts</code> (<a href="https://github.com/prettier/prettier/pull/10811" target="_blank" rel="noopener noreferrer" class="">#10811</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#support-typescript-43-via-babel-ts-10811-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-typescript-43-via-babel-ts-10811-by-sosukesuzuki" title="Direct link to support-typescript-43-via-babel-ts-10811-by-sosukesuzuki" translate="no">​</a></h4>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="override-modifiers-in-class-elements"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-3-beta/#override-and-the-noimplicitoverride-flag" target="_blank" rel="noopener noreferrer" class=""><code>override</code> modifiers in class elements</a><a href="https://prettier.io/blog/2021/05/09/2.3.0#override-modifiers-in-class-elements" class="hash-link" aria-label="Direct link to override-modifiers-in-class-elements" title="Direct link to override-modifiers-in-class-elements" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">extends</span><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  override </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="static-index-signatures-key-keytype-valuetype-in-classes"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-3-beta/#static-index-signatures" target="_blank" rel="noopener noreferrer" class="">static index signatures (<code>[key: KeyType]: ValueType</code>) in classes</a><a href="https://prettier.io/blog/2021/05/09/2.3.0#static-index-signatures-key-keytype-valuetype-in-classes" class="hash-link" aria-label="Direct link to static-index-signatures-key-keytype-valuetype-in-classes" title="Direct link to static-index-signatures-key-keytype-valuetype-in-classes" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">key</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Bar</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="get--set-in-type-declarations"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-3-beta/#separate-write-types-on-properties" target="_blank" rel="noopener noreferrer" class=""><code>get</code> / <code>set</code> in type declarations</a><a href="https://prettier.io/blog/2021/05/09/2.3.0#get--set-in-type-declarations" class="hash-link" aria-label="Direct link to get--set-in-type-declarations" title="Direct link to get--set-in-type-declarations" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">set</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">get</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow">Flow<a href="https://prettier.io/blog/2021/05/09/2.3.0#flow" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-missing-semicolon-in-declare-export--from--9767-by-fisker">Fix missing semicolon in <code>declare export * from …</code> (<a href="https://github.com/prettier/prettier/pull/9767" target="_blank" rel="noopener noreferrer" class="">#9767</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-missing-semicolon-in-declare-export--from--9767-by-fisker" class="hash-link" aria-label="Direct link to fix-missing-semicolon-in-declare-export--from--9767-by-fisker" title="Direct link to fix-missing-semicolon-in-declare-export--from--9767-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">declare </span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token exports operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ES6_ExportAllFrom_Source2"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">declare </span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token exports operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ES6_ExportAllFrom_Source2"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">declare </span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token exports operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ES6_ExportAllFrom_Source2"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-this-type-annotation-in-functions-via-babel-flow-10397-by-sosukesuzuki">Support <code>this</code> type annotation in functions via <code>babel-flow</code> (<a href="https://github.com/prettier/prettier/pull/10397" target="_blank" rel="noopener noreferrer" class="">#10397</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#support-this-type-annotation-in-functions-via-babel-flow-10397-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-this-type-annotation-in-functions-via-babel-flow-10397-by-sosukesuzuki" title="Direct link to support-this-type-annotation-in-functions-via-babel-flow-10397-by-sosukesuzuki" translate="no">​</a></h4>
<p><code>this</code> type annotation is supported since <a href="https://babeljs.io/blog/2021/02/22/7.13.0#new-flow-features-12193httpsgithubcombabelbabelpull12193-12234httpsgithubcombabelbabelpull12234" target="_blank" rel="noopener noreferrer" class="">Babel 7.13</a>.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">foo</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter keyword" style="color:#00009f">this</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> boolean</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Unexpected</span><span class="token plain"> token</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> expected </span><span class="token string" style="color:#e3116c">")"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">15</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">var</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">foo</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter keyword" style="color:#00009f">this</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> boolean</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-range-formatting-issues-10505-by-thorn0">Fix range formatting issues (<a href="https://github.com/prettier/prettier/pull/10505" target="_blank" rel="noopener noreferrer" class="">#10505</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-range-formatting-issues-10505-by-thorn0" class="hash-link" aria-label="Direct link to fix-range-formatting-issues-10505-by-thorn0" title="Direct link to fix-range-formatting-issues-10505-by-thorn0" translate="no">​</a></h4>
<p>Prettier had trouble formatting some ranges in function declarations. <code>SyntaxError</code> was thrown. Prettier 2.3 formats these cases without errors. Examples of problematic ranges are shown below:</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">declare </span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> graphql</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token maybe-class-name">Props</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">Variables</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">Component</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">React$ComponentType</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Props</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  //                            ^^^^^ range 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  (query: GQLDocument, config?: Config&lt;Props, QueryConfigOptions</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Variables</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">&gt;):</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  (Component: Component) =&gt; React$ComponentType&lt;$Diff&lt;React$ElementConfig</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Component</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">, </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">data</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">Object</span><span class="token operator" style="color:#393A34">|</span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">//           ^^^^ range 2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">mutate</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">Function</span><span class="token operator" style="color:#393A34">|</span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text">&gt;&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-for-flows-indexed-access-type-10594-by-gkz">Support for Flow's indexed access type (<a href="https://github.com/prettier/prettier/pull/10594" target="_blank" rel="noopener noreferrer" class="">#10594</a> by <a href="https://github.com/gkz" target="_blank" rel="noopener noreferrer" class="">@gkz</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#support-for-flows-indexed-access-type-10594-by-gkz" class="hash-link" aria-label="Direct link to support-for-flows-indexed-access-type-10594-by-gkz" title="Direct link to support-for-flows-indexed-access-type-10594-by-gkz" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">x</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Obj</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'foo'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Error: unsupported node type "IndexedAccessType"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">x</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Obj</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-for-flows-optional-indexed-access-type-10788-by-gkz">Support for Flow's optional indexed access type (<a href="https://github.com/prettier/prettier/pull/10788" target="_blank" rel="noopener noreferrer" class="">#10788</a> by <a href="https://github.com/gkz" target="_blank" rel="noopener noreferrer" class="">@gkz</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#support-for-flows-optional-indexed-access-type-10788-by-gkz" class="hash-link" aria-label="Direct link to support-for-flows-optional-indexed-access-type-10788-by-gkz" title="Direct link to support-for-flows-optional-indexed-access-type-10788-by-gkz" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token maybe-class-name">Obj</span><span class="token operator" style="color:#393A34">?.</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'foo'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Error: unsupported node type "OptionalIndexedAccessType"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token maybe-class-name">Obj</span><span class="token operator" style="color:#393A34">?.</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">'foo'</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="json">JSON<a href="https://prettier.io/blog/2021/05/09/2.3.0#json" class="hash-link" aria-label="Direct link to JSON" title="Direct link to JSON" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dont-use-smart-quotes-for-json5-with---quote-propspreserve-10323-by-thorn0">Don't use smart quotes for JSON5 with <code>--quote-props=preserve</code> (<a href="https://github.com/prettier/prettier/pull/10323" target="_blank" rel="noopener noreferrer" class="">#10323</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#dont-use-smart-quotes-for-json5-with---quote-propspreserve-10323-by-thorn0" class="hash-link" aria-label="Direct link to dont-use-smart-quotes-for-json5-with---quote-propspreserve-10323-by-thorn0" title="Direct link to dont-use-smart-quotes-for-json5-with---quote-propspreserve-10323-by-thorn0" translate="no">​</a></h4>
<p>With the <code>quoteProps</code> option set to <code>preserve</code> and <code>singleQuotes</code> to <code>false</code> (default), double quotes are always used for printing strings, including situations like <code>"bla\"bla"</code>. This effectively allows using <code>--parser json5</code> for "JSON with comments and trailing commas".</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"char"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"\""</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"char"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'"'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string-property property" style="color:#36acaa">"char"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"\""</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="stricter-json-parser-10346-10443-10456-10434-by-fisker">Stricter JSON parser (<a href="https://github.com/prettier/prettier/pull/10346" target="_blank" rel="noopener noreferrer" class="">#10346</a>, <a href="https://github.com/prettier/prettier/pull/10443" target="_blank" rel="noopener noreferrer" class="">#10443</a>, <a href="https://github.com/prettier/prettier/pull/10456" target="_blank" rel="noopener noreferrer" class="">#10456</a>, <a href="https://github.com/prettier/prettier/pull/10434" target="_blank" rel="noopener noreferrer" class="">#10434</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#stricter-json-parser-10346-10443-10456-10434-by-fisker" class="hash-link" aria-label="Direct link to stricter-json-parser-10346-10443-10456-10434-by-fisker" title="Direct link to stricter-json-parser-10346-10443-10456-10434-by-fisker" translate="no">​</a></h4>
<p>Prettier internally uses a JavaScript expression parser to parse JSON. That's why the <code>json</code> and <code>json5</code> parsers used to be very forgiving and allowed all kinds of JavaScript expressions. Now they are much stricter, although some simple non-standard syntax is still allowed (e.g., <a href="https://github.com/d3x0r/JSON6" target="_blank" rel="noopener noreferrer" class="">JSON6</a> is supported, except for multiple minus signs: <code>----123</code>).</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">BinaryExpression</span><span class="token plain"> is not allowed </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token known-class-name class-name">JSON</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">8</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">        </span><span class="token operator" style="color:#393A34">^</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-error-message-10433-by-fisker">Improve error message (<a href="https://github.com/prettier/prettier/pull/10433" target="_blank" rel="noopener noreferrer" class="">#10433</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#improve-error-message-10433-by-fisker" class="hash-link" aria-label="Direct link to improve-error-message-10433-by-fisker" title="Direct link to improve-error-message-10433-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token literal-property property" style="color:#36acaa">key</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2 (--parser=json-stringify)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">BinaryExpression</span><span class="token plain"> is not allowed </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token known-class-name class-name">JSON</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">7</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token literal-property property" style="color:#36acaa">key</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">       </span><span class="token operator" style="color:#393A34">^</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">BinaryExpression</span><span class="token plain"> is not allowed </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token known-class-name class-name">JSON</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">7</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token literal-property property" style="color:#36acaa">key</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"foo"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">       </span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><span class="token operator" style="color:#393A34">^</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-syntax-error-on-json-range-formatting-10497-by-fisker">Fix syntax error on JSON range formatting (<a href="https://github.com/prettier/prettier/pull/10497" target="_blank" rel="noopener noreferrer" class="">#10497</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-syntax-error-on-json-range-formatting-10497-by-fisker" class="hash-link" aria-label="Direct link to fix-syntax-error-on-json-range-formatting-10497-by-fisker" title="Direct link to fix-syntax-error-on-json-range-formatting-10497-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1.0000</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string-property property" style="color:#36acaa">"b"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">   </span><span class="token number" style="color:#36acaa">2.0000</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">//                 ^^^^^^^^^^^ range</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Unexpected</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">token</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"b"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">   </span><span class="token number" style="color:#36acaa">2.0000</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">    </span><span class="token operator" style="color:#393A34">^</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">a</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1.0000</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string-property property" style="color:#36acaa">"b"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2.0</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="css">CSS<a href="https://prettier.io/blog/2021/05/09/2.3.0#css" class="hash-link" aria-label="Direct link to CSS" title="Direct link to CSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-absolute-path-in-custom-css--custom-url-calls-9966-by-vjeux">Fix absolute path in custom CSS <code>-custom-url()</code> calls (<a href="https://github.com/prettier/prettier/pull/9966" target="_blank" rel="noopener noreferrer" class="">#9966</a> by <a href="https://github.com/vjeux" target="_blank" rel="noopener noreferrer" class="">@vjeux</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-absolute-path-in-custom-css--custom-url-calls-9966-by-vjeux" class="hash-link" aria-label="Direct link to fix-absolute-path-in-custom-css--custom-url-calls-9966-by-vjeux" title="Direct link to fix-absolute-path-in-custom-css--custom-url-calls-9966-by-vjeux" translate="no">​</a></h4>
<p>The CSS parser is parsing this as <code>["division", "absolute/path"]</code> instead of a single <code>"/absolute/path"</code> token unless you are in a <code>url()</code> call. Because we put space after division, it results in an incorrect path. The fix was to avoid printing a space if a division is the first token of a call, which hopefully should be safe.</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-custom-</span><span class="token url function" style="color:#d73a49">url</span><span class="token url punctuation" style="color:#393A34">(</span><span class="token url" style="color:#36acaa">/absolute/path</span><span class="token url punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.2 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-custom-</span><span class="token url function" style="color:#d73a49">url</span><span class="token url punctuation" style="color:#393A34">(</span><span class="token url" style="color:#36acaa">/ absolute/path</span><span class="token url punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.3 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-custom-</span><span class="token url function" style="color:#d73a49">url</span><span class="token url punctuation" style="color:#393A34">(</span><span class="token url" style="color:#36acaa">/absolute/path</span><span class="token url punctuation" style="color:#393A34">)</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="exclude-keyframes-params-from-being-parsed-as-a-less-variable-10773-by-tmazeika">Exclude <code>@keyframes</code> params from being parsed as a Less variable (<a href="https://github.com/prettier/prettier/pull/10773" target="_blank" rel="noopener noreferrer" class="">#10773</a> by <a href="https://github.com/tmazeika" target="_blank" rel="noopener noreferrer" class="">@tmazeika</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#exclude-keyframes-params-from-being-parsed-as-a-less-variable-10773-by-tmazeika" class="hash-link" aria-label="Direct link to exclude-keyframes-params-from-being-parsed-as-a-less-variable-10773-by-tmazeika" title="Direct link to exclude-keyframes-params-from-being-parsed-as-a-less-variable-10773-by-tmazeika" translate="no">​</a></h4>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">/* Input */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@keyframes</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule punctuation" style="color:#393A34">:</span><span class="token atrule function" style="color:#d73a49">global</span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule" style="color:#00a4db">spin</span><span class="token atrule punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">from</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">transform</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rotate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">to</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">transform</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rotate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">360</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.2 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@keyframes</span><span class="token atrule punctuation" style="color:#393A34">:</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule function" style="color:#d73a49">global</span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule" style="color:#00a4db">spin</span><span class="token atrule punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">from</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">transform</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rotate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">to</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">transform</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rotate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">360</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* Prettier 2.3 */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@keyframes</span><span class="token atrule" style="color:#00a4db"> </span><span class="token atrule punctuation" style="color:#393A34">:</span><span class="token atrule function" style="color:#d73a49">global</span><span class="token atrule punctuation" style="color:#393A34">(</span><span class="token atrule" style="color:#00a4db">spin</span><span class="token atrule punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">from</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">transform</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rotate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token selector" style="color:#00009f">to</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">transform</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">rotate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">360</span><span class="token unit">deg</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="scss">SCSS<a href="https://prettier.io/blog/2021/05/09/2.3.0#scss" class="hash-link" aria-label="Direct link to SCSS" title="Direct link to SCSS" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-broken-comment-inside-parens-9710-by-fisker">Fix broken comment inside parens (<a href="https://github.com/prettier/prettier/pull/9710" target="_blank" rel="noopener noreferrer" class="">#9710</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-broken-comment-inside-parens-9710-by-fisker" class="hash-link" aria-label="Direct link to fix-broken-comment-inside-parens-9710-by-fisker" title="Direct link to fix-broken-comment-inside-parens-9710-by-fisker" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.simplification </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">foo</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">calc</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// not a comment anymore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.simplification </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">foo</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">calc</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// not a comment anymore);</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token selector" style="color:#00009f">.simplification </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">foo</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token function" style="color:#d73a49">calc</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// not a comment anymore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-maps-with-keys-that-are-lists-or-maps-10005-by-fisker">Fix maps with keys that are lists or maps (<a href="https://github.com/prettier/prettier/pull/10005" target="_blank" rel="noopener noreferrer" class="">#10005</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-maps-with-keys-that-are-lists-or-maps-10005-by-fisker" class="hash-link" aria-label="Direct link to fix-maps-with-keys-that-are-lists-or-maps-10005-by-fisker" title="Direct link to fix-maps-with-keys-that-are-lists-or-maps-10005-by-fisker" translate="no">​</a></h4>
<div class="language-scss codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-scss codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property variable" style="color:#36acaa">$map</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'my list'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'hello world'</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property" style="color:#36acaa">TypeError</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Cannot read property </span><span class="token string" style="color:#e3116c">'length'</span><span class="token plain"> of undefined</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token property variable" style="color:#36acaa">$map</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"my list"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"hello world"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ember--handlebars-1">Ember / Handlebars<a href="https://prettier.io/blog/2021/05/09/2.3.0#ember--handlebars-1" class="hash-link" aria-label="Direct link to Ember / Handlebars" title="Direct link to Ember / Handlebars" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-tilde-comments-9082-by-kangax-fisker">Preserve tilde comments (<a href="https://github.com/prettier/prettier/pull/9082" target="_blank" rel="noopener noreferrer" class="">#9082</a> by <a href="https://github.com/kangax" target="_blank" rel="noopener noreferrer" class="">@kangax</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#preserve-tilde-comments-9082-by-kangax-fisker" class="hash-link" aria-label="Direct link to preserve-tilde-comments-9082-by-kangax-fisker" title="Direct link to preserve-tilde-comments-9082-by-kangax-fisker" translate="no">​</a></h4>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{!-- Input --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">~</span><span class="token punctuation" style="color:#393A34">!</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Comment</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Comment ~}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">~</span><span class="token punctuation" style="color:#393A34">!</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Comment</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">~</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.2 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Comment }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Comment }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Comment }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.3 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">~</span><span class="token punctuation" style="color:#393A34">!</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Comment</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Comment ~}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">~</span><span class="token punctuation" style="color:#393A34">!</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Comment</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">~</span><span class="token delimiter punctuation" style="color:#393A34">}}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-a-whitespace-sensitive-mode-9885-by-dcyriller">Add a whitespace sensitive mode (<a href="https://github.com/prettier/prettier/pull/9885" target="_blank" rel="noopener noreferrer" class="">#9885</a> by <a href="https://github.com/dcyriller" target="_blank" rel="noopener noreferrer" class="">@dcyriller</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#add-a-whitespace-sensitive-mode-9885-by-dcyriller" class="hash-link" aria-label="Direct link to add-a-whitespace-sensitive-mode-9885-by-dcyriller" title="Direct link to add-a-whitespace-sensitive-mode-9885-by-dcyriller" translate="no">​</a></h4>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">--html-whitespace-sensitivity strict</span><br></span></code></pre></div></div>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{!-- Input --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token number" style="color:#36acaa">123</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">123</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token number" style="color:#36acaa">123</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token number" style="color:#36acaa">123</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.2 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">123</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">123</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">123</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">123</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.3 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token number" style="color:#36acaa">123</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">123</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token number" style="color:#36acaa">123</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">123</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">mustache</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-final-blockparam-on-its-own-line-9978-by-dcyriller">Print final <code>blockParam</code> on its own line (<a href="https://github.com/prettier/prettier/pull/9978" target="_blank" rel="noopener noreferrer" class="">#9978</a> by <a href="https://github.com/dcyriller" target="_blank" rel="noopener noreferrer" class="">@dcyriller</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#print-final-blockparam-on-its-own-line-9978-by-dcyriller" class="hash-link" aria-label="Direct link to print-final-blockparam-on-its-own-line-9978-by-dcyriller" title="Direct link to print-final-blockparam-on-its-own-line-9978-by-dcyriller" translate="no">​</a></h4>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{!-- Input --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">MyComponent</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop2</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop3</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop4</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">as</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token variable" style="color:#36acaa">thing</span><span class="token punctuation" style="color:#393A34">|</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">MyComponent</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">block</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">param</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">hashKey</span><span class="token punctuation" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">hashValue</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">hashKey</span><span class="token punctuation" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">hashValue</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">hashKey</span><span class="token punctuation" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">hashValue</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">as</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token variable" style="color:#36acaa">blockParam</span><span class="token punctuation" style="color:#393A34">|</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Hello</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">block</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.2 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">MyComponent</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop2</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop3</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop4</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">as</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token variable" style="color:#36acaa">thing</span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">block</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">param</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">hashKey</span><span class="token punctuation" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">hashValue</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">hashKey</span><span class="token punctuation" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">hashValue</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">hashKey</span><span class="token punctuation" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">hashValue</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">as</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token variable" style="color:#36acaa">blockParam</span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Hello</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">block</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.3 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">MyComponent</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop2</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop3</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">prop4</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">as</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token variable" style="color:#36acaa">thing</span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">block</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">param</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">hashKey</span><span class="token punctuation" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">hashValue</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">hashKey</span><span class="token punctuation" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">hashValue</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">hashKey</span><span class="token punctuation" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">hashValue</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">as</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token variable" style="color:#36acaa">blockParam</span><span class="token punctuation" style="color:#393A34">|</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Hello</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">block</span><span class="token delimiter punctuation" style="color:#393A34">}}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-of-attributes-10145-by-thorn0">Fix formatting of attributes (<a href="https://github.com/prettier/prettier/pull/10145" target="_blank" rel="noopener noreferrer" class="">#10145</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-formatting-of-attributes-10145-by-thorn0" class="hash-link" aria-label="Direct link to fix-formatting-of-attributes-10145-by-thorn0" title="Direct link to fix-formatting-of-attributes-10145-by-thorn0" translate="no">​</a></h4>
<ul>
<li class="">fix escaping of <code>{{</code> in attributes and text</li>
<li class="">fix the choice between <code>'</code> and <code>"</code> for attributes with interpolations</li>
<li class="">fix the bug with <code>[object Object]</code> printed in the <code>class</code> attribute</li>
<li class="">implement simple formatting for the <code>class</code> attribute, like Prettier formatted it in HTML before v2.3.0</li>
</ul>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{!-- Input --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">class</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">foo</span><span class="token punctuation" style="color:#393A34">"</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">bar</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'"{{expr}}"'</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">baz</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"\{{ non-expression }}"</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.2 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">class</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"[object Object],foo"</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">bar</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">""</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">expr</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token string" style="color:#e3116c">""</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">baz</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"{{ non-expression }}"</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.3 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">class</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">bar</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">'"{{expr}}"'</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">baz</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"\{{ non-expression }}"</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="split-text-content-on-multiple-lines-10179-by-dcyriller">Split text content on multiple lines (<a href="https://github.com/prettier/prettier/pull/10179" target="_blank" rel="noopener noreferrer" class="">#10179</a> by <a href="https://github.com/dcyriller" target="_blank" rel="noopener noreferrer" class="">@dcyriller</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#split-text-content-on-multiple-lines-10179-by-dcyriller" class="hash-link" aria-label="Direct link to split-text-content-on-multiple-lines-10179-by-dcyriller" title="Direct link to split-text-content-on-multiple-lines-10179-by-dcyriller" translate="no">​</a></h4>
<div class="language-handlebars codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-handlebars codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{!-- Input --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">long</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">enough</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">string</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">to</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">trigger</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">a</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">line</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">break</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">that</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">would</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">prevent</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">wrapping</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">more</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">and</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">more</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.2 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">long</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">enough</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">string</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">to</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">trigger</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">a</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">line</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">break</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">that</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">would</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">prevent</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">wrapping</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">more</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">and</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">more</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.3 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">long</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">enough</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">string</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">to</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">trigger</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">a</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">line</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">break</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">that</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">would</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">prevent</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">wrapping</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">more</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">and</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">more</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">div</span><span class="token punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-numeric-character-references-10550-by-rwjblue-and-thorn0">Preserve numeric character references (<a href="https://github.com/prettier/prettier/pull/10550" target="_blank" rel="noopener noreferrer" class="">#10550</a> by <a href="https://github.com/rwjblue" target="_blank" rel="noopener noreferrer" class="">@rwjblue</a> and <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#preserve-numeric-character-references-10550-by-rwjblue-and-thorn0" class="hash-link" aria-label="Direct link to preserve-numeric-character-references-10550-by-rwjblue-and-thorn0" title="Direct link to preserve-numeric-character-references-10550-by-rwjblue-and-thorn0" translate="no">​</a></h4>
<div class="language-hbs codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-hbs codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{! Input }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">class</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"stampFont"</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"font-family: 'stampfont'"</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&amp;</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">xf000</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 2.2 }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">class</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"stampFont"</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"font-family: 'stampfont'"</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token variable" style="color:#36acaa"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{! Prettier 2.3 }}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">span</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">class</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"stampFont"</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">style</span><span class="token punctuation" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"font-family: 'stampfont'"</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">&amp;</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">xf000</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">span</span><span class="token punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="do-not-break-opening-mustache-and-path-10586-by-dcyriller">Do not break opening mustache and path (<a href="https://github.com/prettier/prettier/pull/10586" target="_blank" rel="noopener noreferrer" class="">#10586</a> by <a href="https://github.com/dcyriller" target="_blank" rel="noopener noreferrer" class="">@dcyriller</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#do-not-break-opening-mustache-and-path-10586-by-dcyriller" class="hash-link" aria-label="Direct link to do-not-break-opening-mustache-and-path-10586-by-dcyriller" title="Direct link to do-not-break-opening-mustache-and-path-10586-by-dcyriller" translate="no">​</a></h4>
<div class="language-handlebars codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-handlebars codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">{{!-- Input --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">GlimmerComponent</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">errors</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">or</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">aVeryLongProperty</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">and</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">aProperty</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">v-get</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">bike</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"number"</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"message"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">data-test-beneficiary-account-number</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">GlimmerComponent</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">progress</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">aPropertyEngdingAfterEightiethColumnToHighlightAWeirdClosingParenIssue</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.2 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">GlimmerComponent</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">errors</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">or</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">aVeryLongProperty</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">and</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">aProperty</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">v-get</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">bike</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"number"</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"message"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">data-test-beneficiary-account-number</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">GlimmerComponent</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">progress</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">aPropertyEngdingAfterEightiethColumnToHighlightAWeirdClosingParenIssue</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">{{!-- Prettier 2.3 --}}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">GlimmerComponent</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">errors</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">or</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">aLongProperty</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">and</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token variable" style="color:#36acaa">aProperty</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">v-get</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">bike</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"number"</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"message"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">data-test-beneficiary-account-number</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">GlimmerComponent</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">@</span><span class="token variable" style="color:#36acaa">progress</span><span class="token punctuation" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token variable" style="color:#36acaa">aPropertyEngdingAfterEightiethColumnToHighlightAWeirdClosingParenIssue</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="graphql">GraphQL<a href="https://prettier.io/blog/2021/05/09/2.3.0#graphql" class="hash-link" aria-label="Direct link to GraphQL" title="Direct link to GraphQL" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-missing-space-after-keyword-in-anonymous-operations-10689-by-patriscus">Fix missing space after keyword in anonymous operations (<a href="https://github.com/prettier/prettier/pull/10689" target="_blank" rel="noopener noreferrer" class="">#10689</a> by <a href="https://github.com/patriscus" target="_blank" rel="noopener noreferrer" class="">@patriscus</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-missing-space-after-keyword-in-anonymous-operations-10689-by-patriscus" class="hash-link" aria-label="Direct link to fix-missing-space-after-keyword-in-anonymous-operations-10689-by-patriscus" title="Direct link to fix-missing-space-after-keyword-in-anonymous-operations-10689-by-patriscus" translate="no">​</a></h4>
<div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">query</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">$unnamed</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">id</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">query</span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">$unnamed</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">id</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">query</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">$unnamed</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">id</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown">Markdown<a href="https://prettier.io/blog/2021/05/09/2.3.0#markdown" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-extra-newline-at-the-end-of-javascript-fenced-code-block-with-string-literal-9736-by-fisker">Fix extra newline at the end of JavaScript fenced code block with string literal (<a href="https://github.com/prettier/prettier/pull/9736" target="_blank" rel="noopener noreferrer" class="">#9736</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-extra-newline-at-the-end-of-javascript-fenced-code-block-with-string-literal-9736-by-fisker" class="hash-link" aria-label="Direct link to fix-extra-newline-at-the-end-of-javascript-fenced-code-block-with-string-literal-9736-by-fisker" title="Direct link to fix-extra-newline-at-the-end-of-javascript-fenced-code-block-with-string-literal-9736-by-fisker" translate="no">​</a></h4>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Markdown</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">js</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-js">"· "</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Markdown</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">js</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-js">"· ";</span><br></span><span class="token-line" style="color:#393A34"><span class="token code code-block language-js"></span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Markdown</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">js</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-js">"· ";</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-empty-front-matter-formatting-9791-by-fisker">Fix empty front matter formatting (<a href="https://github.com/prettier/prettier/pull/9791" target="_blank" rel="noopener noreferrer" class="">#9791</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-empty-front-matter-formatting-9791-by-fisker" class="hash-link" aria-label="Direct link to fix-empty-front-matter-formatting-9791-by-fisker" title="Direct link to fix-empty-front-matter-formatting-9791-by-fisker" translate="no">​</a></h4>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important">---</span><br></span><span class="token-line" style="color:#393A34"><span class="token title important"></span><span class="token title important punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> Title</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a|b|c|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|:--|:-:|--:|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|d|e|f|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token hr punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">text</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important">---</span><br></span><span class="token-line" style="color:#393A34"><span class="token title important"></span><span class="token title important punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> Title</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">a|b|c|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">|:--|:-:|--:|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important">|d|e|f|</span><br></span><span class="token-line" style="color:#393A34"><span class="token title important"></span><span class="token title important punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">text</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important">---</span><br></span><span class="token-line" style="color:#393A34"><span class="token title important"></span><span class="token title important punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> Title</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">| a   |  b  |   c |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">| :-- | :-: | --: |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">| d   |  e  |   f |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token hr punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">text</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-yaml-document-end-marker-in-front-matter-9878-by-michaelbeaumont">Support YAML document end marker in front matter (<a href="https://github.com/prettier/prettier/pull/9878" target="_blank" rel="noopener noreferrer" class="">#9878</a> by <a href="https://github.com/michaelbeaumont" target="_blank" rel="noopener noreferrer" class="">@michaelbeaumont</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#support-yaml-document-end-marker-in-front-matter-9878-by-michaelbeaumont" class="hash-link" aria-label="Direct link to support-yaml-document-end-marker-in-front-matter-9878-by-michaelbeaumont" title="Direct link to support-yaml-document-end-marker-in-front-matter-9878-by-michaelbeaumont" translate="no">​</a></h4>
<p>Add the ability to delimit the end of front matter with <code>...</code>.</p>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token hr punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">title: Hello</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">slug: home</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Markdown</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token hr punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">title: Hello</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">slug: home</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Markdown</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.3 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token hr punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">title: Hello</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">slug: home</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Markdown</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="yaml">YAML<a href="https://prettier.io/blog/2021/05/09/2.3.0#yaml" class="hash-link" aria-label="Direct link to YAML" title="Direct link to YAML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-syntaxerror-incorrectly-thrown-on-anchors-followed-by-empty-lines-10516-by-eemeli--thorn0">Fix SyntaxError incorrectly thrown on anchors followed by empty lines (<a href="https://github.com/prettier/prettier/pull/10516" target="_blank" rel="noopener noreferrer" class="">#10516</a> by <a href="https://github.com/eemeli" target="_blank" rel="noopener noreferrer" class="">@eemeli</a> &amp; <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-syntaxerror-incorrectly-thrown-on-anchors-followed-by-empty-lines-10516-by-eemeli--thorn0" class="hash-link" aria-label="Direct link to fix-syntaxerror-incorrectly-thrown-on-anchors-followed-by-empty-lines-10516-by-eemeli--thorn0" title="Direct link to fix-syntaxerror-incorrectly-thrown-on-anchors-followed-by-empty-lines-10516-by-eemeli--thorn0" translate="no">​</a></h4>
<p>Prettier couldn't parse this valid YAML. Thanks to Eemeli Aro for fixing this bug in the underlying parser.</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">key1</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token important">&amp;default</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">subkey1</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> value1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">key2</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">&lt;&lt;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token important">*default</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">SyntaxError</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Nested mappings are not allowed in compact mappings (1</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">7)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">key1</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token important">&amp;default</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">subkey1</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> value1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">key2</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">&lt;&lt;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token important">*default</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api">API<a href="https://prettier.io/blog/2021/05/09/2.3.0#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="treat-prettierrc-as-yaml-when-formatting-it-8105-by-fisker">Treat <code>.prettierrc</code> as YAML when formatting it (<a href="https://github.com/prettier/prettier/pull/8105" target="_blank" rel="noopener noreferrer" class="">#8105</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#treat-prettierrc-as-yaml-when-formatting-it-8105-by-fisker" class="hash-link" aria-label="Direct link to treat-prettierrc-as-yaml-when-formatting-it-8105-by-fisker" title="Direct link to treat-prettierrc-as-yaml-when-formatting-it-8105-by-fisker" translate="no">​</a></h4>
<p>The <code>.prettierrc</code> file can be written in either JSON or YAML. Previously, when Prettier formatted it, the parser was inferred to be <code>json</code>, which lead to a <code>SyntaxError</code> thrown if the content was YAML. Now it’s treated as a YAML file. However, if it's JSON, it will be formatted as JSON (not as JSON-like YAML).</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="use-arrays-instead-of-concat-9733-by-fisker-thorn0">Use arrays instead of <code>concat</code> (<a href="https://github.com/prettier/prettier/pull/9733" target="_blank" rel="noopener noreferrer" class="">#9733</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#use-arrays-instead-of-concat-9733-by-fisker-thorn0" class="hash-link" aria-label="Direct link to use-arrays-instead-of-concat-9733-by-fisker-thorn0" title="Direct link to use-arrays-instead-of-concat-9733-by-fisker-thorn0" translate="no">​</a></h4>
<p>To simplify the code of AST printers, the data structure for the concatenation command has been changed from <code>{ type: 'concat', parts: Doc[] }</code> to <code>Doc[]</code>. The old format is deprecated, but for compatibility, the doc printer still supports it, and <code>doc.builders.concat</code> (as well as some other builder functions) will keep using it until the next major version of Prettier.</p>
<p>If you're a plugin author, this change should only concern you if your plugin introspects or modifies composed docs. If it happens to be the case, please make your plugin compatible with future versions of Prettier by tweaking the introspecting code to support the new format. There also is an off-chance where this change can break things, namely if a plugin calls another plugin to <a href="https://prettier.io/docs/plugins#optional-embed" target="_blank" rel="noopener noreferrer" class="">print an embedded language</a> and then introspects the returned doc. There seems to be no reason for plugins to do that though.</p>
<p>To replace <code>concat(…)</code> calls in your plugins, you can try auto-fix by this ESLint rule <a href="https://github.com/fisker/eslint-plugin-prettier-doc#no-concat" target="_blank" rel="noopener noreferrer" class=""><code>prettier-doc/no-concat</code></a>.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">myDoc </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">group</span><span class="token punctuation" style="color:#393A34">(</span><span class="token function" style="color:#d73a49">concat</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> line</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">myDoc </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">group</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> line</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"bar"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-linesuffixboundary-ir-command-10122-by-thorn0">Fix <code>lineSuffixBoundary</code> IR command (<a href="https://github.com/prettier/prettier/pull/10122" target="_blank" rel="noopener noreferrer" class="">#10122</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#fix-linesuffixboundary-ir-command-10122-by-thorn0" class="hash-link" aria-label="Direct link to fix-linesuffixboundary-ir-command-10122-by-thorn0" title="Direct link to fix-linesuffixboundary-ir-command-10122-by-thorn0" translate="no">​</a></h4>
<p>There was a bug in the implementation of the <a href="https://github.com/prettier/prettier/blob/main/commands.md#linesuffixboundary" target="_blank" rel="noopener noreferrer" class=""><code>lineSuffixBoundary</code></a> command that significantly limited its usefulness: the printer algorithm didn't correctly consider it a potential line break. Now that the bug has been fixed, we urge plugin authors to give this command another try and see if it can help them simplify printing of trailing comments.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">group</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"let foo = ["</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">indent</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    softline</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">lineSuffixBoundary</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"item1,"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    line</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">lineSuffixBoundary</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"item2,"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">lineSuffix</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">" // comment"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    line</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">lineSuffixBoundary</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"item3"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  softline</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"];"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">item1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> item2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  item3</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  item1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  item2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  item3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-indentifbreak-ir-command-10221-by-thorn">Add <code>indentIfBreak</code> IR command (<a href="https://github.com/prettier/prettier/pull/10221" target="_blank" rel="noopener noreferrer" class="">#10221</a> by <a href="https://github.com/thorn" target="_blank" rel="noopener noreferrer" class="">@thorn</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#add-indentifbreak-ir-command-10221-by-thorn" class="hash-link" aria-label="Direct link to add-indentifbreak-ir-command-10221-by-thorn" title="Direct link to add-indentifbreak-ir-command-10221-by-thorn" translate="no">​</a></h4>
<p><code>indentIfBreak(doc, { groupId })</code> is an optimized version of <code>ifBreak(indent(doc), doc, { groupId })</code>.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="simplified-print-callback-10557-by-fisker">Simplified <code>print</code> callback (<a href="https://github.com/prettier/prettier/pull/10557" target="_blank" rel="noopener noreferrer" class="">#10557</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#simplified-print-callback-10557-by-fisker" class="hash-link" aria-label="Direct link to simplified-print-callback-10557-by-fisker" title="Direct link to simplified-print-callback-10557-by-fisker" translate="no">​</a></h4>
<p>The third argument of the <code>print</code> method of plugin printers (the <code>print</code> callback) has been updated. Its first argument can be a string or an array of strings now.</p>
<p>To print the current node, call <code>print</code> without arguments:</p>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">function print(path, options, print) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">  const parts = [];</span><br></span><span class="token-line" style="color:#393A34"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">  path.each((childPath) =&gt; {</span><br></span><span class="token-line" style="color:#393A34"><span class="token unchanged line"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">    parts.push(print(childPath));</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">    parts.push(print());</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">  }, "children");</span><br></span><span class="token-line" style="color:#393A34"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">  return parts;</span><br></span><span class="token-line" style="color:#393A34"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">}</span><br></span></code></pre></div></div>
<p>To print a property of the current node, use <code>"property"</code> or <code>["property"]</code>:</p>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">function print(path, options, print) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token unchanged line"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">  return path.call(print, "property");</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">  return print("property");</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">}</span><br></span></code></pre></div></div>
<p>To print a sub-property of the current node, use <code>["property1", "property2"]</code>:</p>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">function print(path, options, print) {</span><br></span><span class="token-line" style="color:#393A34"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">  // print `node.child.child`</span><br></span><span class="token-line" style="color:#393A34"><span class="token unchanged line"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">  return path.call(print, "child", "child");</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">  return print(["child", "child"]);</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">}</span><br></span></code></pre></div></div>
<p>See also an example in the <a href="https://prettier.io/docs/plugins#print" target="_blank" rel="noopener noreferrer" class="">docs</a>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://prettier.io/blog/2021/05/09/2.3.0#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-cli-option-to-prevent-errors-on-unmatched-pattern-10058-by-daronmcintosh">Add CLI option to prevent errors on unmatched pattern (<a href="https://github.com/prettier/prettier/pull/10058" target="_blank" rel="noopener noreferrer" class="">#10058</a> by <a href="https://github.com/daronmcintosh" target="_blank" rel="noopener noreferrer" class="">@daronmcintosh</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#add-cli-option-to-prevent-errors-on-unmatched-pattern-10058-by-daronmcintosh" class="hash-link" aria-label="Direct link to add-cli-option-to-prevent-errors-on-unmatched-pattern-10058-by-daronmcintosh" title="Direct link to add-cli-option-to-prevent-errors-on-unmatched-pattern-10058-by-daronmcintosh" translate="no">​</a></h4>
<p>The Prettier CLI will no longer display an error when no files match the glob pattern passed as input.</p>
<div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ npx prettier </span><span class="token parameter variable" style="color:#36acaa">--check</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"prettier/docs/*.yaml"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checking formatting</span><span class="token punctuation" style="color:#393A34">..</span><span class="token plain">.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> No files matching the pattern were found: </span><span class="token string" style="color:#e3116c">"prettier/docs/*.yaml"</span><span class="token builtin class-name">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">All matched files use Prettier code style</span><span class="token operator" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.3</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ npx prettier </span><span class="token parameter variable" style="color:#36acaa">--check</span><span class="token plain"> --no-error-on-unmatched-pattern </span><span class="token string" style="color:#e3116c">"prettier/docs/*.yaml"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checking formatting</span><span class="token punctuation" style="color:#393A34">..</span><span class="token plain">.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">All matched files use Prettier code style</span><span class="token operator" style="color:#393A34">!</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-cli-flag-for-debugging-comment-attachment-issues-10124-by-thorn0">Add CLI flag for debugging comment attachment issues (<a href="https://github.com/prettier/prettier/pull/10124" target="_blank" rel="noopener noreferrer" class="">#10124</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#add-cli-flag-for-debugging-comment-attachment-issues-10124-by-thorn0" class="hash-link" aria-label="Direct link to add-cli-flag-for-debugging-comment-attachment-issues-10124-by-thorn0" title="Direct link to add-cli-flag-for-debugging-comment-attachment-issues-10124-by-thorn0" translate="no">​</a></h4>
<p>A new <code>--debug-print-comments</code> CLI flag and corresponding functionality for the Playground.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="round-trippable---debug-print-doc-10169-10177-by-thorn0">Round-trippable <code>--debug-print-doc</code> (<a href="https://github.com/prettier/prettier/pull/10169" target="_blank" rel="noopener noreferrer" class="">#10169</a>, <a href="https://github.com/prettier/prettier/pull/10177" target="_blank" rel="noopener noreferrer" class="">#10177</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#round-trippable---debug-print-doc-10169-10177-by-thorn0" class="hash-link" aria-label="Direct link to round-trippable---debug-print-doc-10169-10177-by-thorn0" title="Direct link to round-trippable---debug-print-doc-10169-10177-by-thorn0" translate="no">​</a></h4>
<p>The idea is to make the output of <code>--debug-print-doc</code> closer to actual code for generating docs (Prettier's intermediate representation). Ideally, it should be possible for it to work without modification after copy-pasting into a JS file. That ideal hasn't probably been reached by this PR, but it's pretty close. This is going to make <code>--debug-print-doc</code> and the corresponding part of the Playground a bit more useful.</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="print-an-error-message-when---find-config-path-cant-find-config-file-10208-by-fisker">Print an error message when <code>--find-config-path</code> can't find config file (<a href="https://github.com/prettier/prettier/pull/10208" target="_blank" rel="noopener noreferrer" class="">#10208</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#print-an-error-message-when---find-config-path-cant-find-config-file-10208-by-fisker" class="hash-link" aria-label="Direct link to print-an-error-message-when---find-config-path-cant-find-config-file-10208-by-fisker" title="Direct link to print-an-error-message-when---find-config-path-cant-find-config-file-10208-by-fisker" translate="no">​</a></h4>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 2.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier --find-config-path /prettier.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Silently failed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 2.3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier --find-config-path /prettier.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error] Can not find configure file for "/prettier.js"</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="clear-printed-long-filenames-of-formatting-file-10217-by-fisker">Clear printed long filenames of formatting file (<a href="https://github.com/prettier/prettier/pull/10217" target="_blank" rel="noopener noreferrer" class="">#10217</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#clear-printed-long-filenames-of-formatting-file-10217-by-fisker" class="hash-link" aria-label="Direct link to clear-printed-long-filenames-of-formatting-file-10217-by-fisker" title="Direct link to clear-printed-long-filenames-of-formatting-file-10217-by-fisker" translate="no">​</a></h4>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 2.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier tests/flow-repo/config_module_system_node_resolve_dirname --check</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checking formatting...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tests\flow-repo\config_module_system_node_resolve_dirname\custom_resolve_dir\tes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tests\flow-repo\config_module_system_node_resolve_dirname\custom_resolve_dir\tes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tests\flow-repo\config_module_system_node_resolve_dirname\subdir\custom_resolve_</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">All matched files use Prettier code style!</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 2.3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier tests/flow-repo/config_module_system_node_resolve_dirname --check</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checking formatting...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">All matched files use Prettier code style!</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="dont-skip-file-paths-containing-special-words-like-constructor-10256-by-ashlkv">Don't skip file paths containing special words like <code>constructor</code> (<a href="https://github.com/prettier/prettier/pull/10256" target="_blank" rel="noopener noreferrer" class="">#10256</a> by <a href="https://github.com/ashlkv" target="_blank" rel="noopener noreferrer" class="">@ashlkv</a>)<a href="https://prettier.io/blog/2021/05/09/2.3.0#dont-skip-file-paths-containing-special-words-like-constructor-10256-by-ashlkv" class="hash-link" aria-label="Direct link to dont-skip-file-paths-containing-special-words-like-constructor-10256-by-ashlkv" title="Direct link to dont-skip-file-paths-containing-special-words-like-constructor-10256-by-ashlkv" translate="no">​</a></h4>
<p>Directories whose names happened to coincide with the properties of <code>Object.prototype</code> were ignored by Prettier CLI because of a classic bug (introduced in Prettier 2.0.0) with object properties not being checked for being own.</p>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 2.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier "js/constructor/*.js" --write</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error] No matching files. Patterns: js/constructor/*.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Prettier 2.3</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier "js/constructor/*.js" --write</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">js/constructor/test.js 42ms</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Georgii Dolzhykov</name>
            <uri>https://github.com/thorn0</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier for Ruby goes v1.0 🎉]]></title>
        <id>https://prettier.io/blog/2020/12/11/plugin-ruby-1.0</id>
        <link href="https://prettier.io/blog/2020/12/11/plugin-ruby-1.0"/>
        <updated>2020-12-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[After 1500 commits and 50 releases since July 2018, we're happy to announce that we've just released v1.0 of Prettier for Ruby. In this blog post, we'd like to give a short overview of how the plugin works, its philosophy, and what to expect in the future.]]></summary>
        <content type="html"><![CDATA[<p>After 1500 commits and 50 releases since July 2018, we're happy to announce that we've just released v1.0 of <a href="https://github.com/prettier/plugin-ruby" target="_blank" rel="noopener noreferrer" class="">Prettier for Ruby</a>. In this blog post, we'd like to give a short overview of how the plugin works, its philosophy, and what to expect in the future.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-does-it-work">How does it work?<a href="https://prettier.io/blog/2020/12/11/plugin-ruby-1.0#how-does-it-work" class="hash-link" aria-label="Direct link to How does it work?" title="Direct link to How does it work?" translate="no">​</a></h2>
<p>Prettier for Ruby works through Prettier's <a href="https://prettier.io/docs/plugins" target="_blank" rel="noopener noreferrer" class="">plugin API</a>. Its <code>parse</code> function works by spawning a Ruby process and using Ruby's own parser (known as <code>Ripper</code>). After tracking all of the various node types, comments, location information, and other various metadata, it returns a built abstract syntax tree (AST) to the Prettier process. Finally it converts that AST into Prettier's intermediate representation (known as <code>Doc</code>) before allowing Prettier to handle printing it back out.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="philosophy">Philosophy<a href="https://prettier.io/blog/2020/12/11/plugin-ruby-1.0#philosophy" class="hash-link" aria-label="Direct link to Philosophy" title="Direct link to Philosophy" translate="no">​</a></h2>
<p>The Ruby plugin attempts to be satisfied with as many varieties of code as possible. For instance, if you decide to a call a method with or without parentheses, the plugin will allow this and honor your selection. For a couple of instances where the Ruby community has entrenched itself into some strong opinions, however, options are provided. These include:</p>
<ul>
<li class=""><code>rubyArrayLiteral</code> - By default, the Ruby plugin will convert arrays of simple strings and symbols to their equivalent array literal syntax (<code>%w</code> and <code>%i</code>, respectively). If you disable this option, it will leave them alone.</li>
<li class=""><code>rubyHashLabel</code> - This option is for the fans of the hash rocket. By default, the Ruby plugin will print out your hash keys consistently, i.e., it will use labels if it can for every key, otherwise it will use hash rockets for every key. If you disable the default behavior, every key in hashes will always use hash rockets.</li>
<li class=""><code>rubyModifier</code> - For the users that really dislike the modifier form of <code>if</code>, <code>unless</code>, <code>while</code>, and <code>until</code>, this option is for you.</li>
<li class=""><code>rubySingleQuote</code> - The default behavior is to use single quotes where it makes sense, and otherwise to use double quotes. With this option you can reverse that behavior.</li>
<li class=""><code>rubyToProc</code> - This option allows Prettier to convert statements like <code>array.map { |elem| elem.to_s }</code> to <code>array.map(&amp;:to_s)</code>. It is disabled by default because it technically changes the arity of block, which can break reflection code.</li>
</ul>
<p>The plugin additionally supports various Prettier core options, including:</p>
<ul>
<li class=""><code>printWidth</code> - This defaults to 80 characters, but you can make the line longer if you prefer.</li>
<li class=""><code>tabWidth</code> - This defaults to 2 characters.</li>
<li class=""><code>trailingComma</code> - This defaults to <code>"none"</code>, but you can choose <code>"all"</code> to introduce trailing commas into array literals, hash literals, and argument lists that span multiple lines.</li>
</ul>
<p>In general the style of Prettier will match that of the <a href="https://github.com/rubocop-hq/ruby-style-guide" target="_blank" rel="noopener noreferrer" class="">Ruby style guide</a>, i.e., the default Rubocop configuration. However, while you're using Prettier you might just find that you want to turn off the <code>Formatting/*</code> rules from Rubocop anyway as it will speed up your linter runs.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What's next<a href="https://prettier.io/blog/2020/12/11/plugin-ruby-1.0#whats-next" class="hash-link" aria-label="Direct link to What's next" title="Direct link to What's next" translate="no">​</a></h2>
<p>Going forward, we're going to be working on a couple of things:</p>
<ul>
<li class="">Support for the new syntax coming out with Ruby 3, including rightward assignment and more pattern matching.</li>
<li class="">Better performance, as in <a href="https://github.com/kddeisz/libdoc" target="_blank" rel="noopener noreferrer" class="">these</a> <a href="https://github.com/prettier/plugin-ruby/pull/512" target="_blank" rel="noopener noreferrer" class="">experiments</a>.</li>
<li class="">Support for the Ruby language in Prettier's <a href="https://prettier.io/playground/" target="_blank" rel="noopener noreferrer" class="">playground</a>.</li>
<li class="">Support for HTML ERB templates as another plugin, as in this <a href="https://github.com/prettier/plugin-ruby/compare/erb" target="_blank" rel="noopener noreferrer" class="">experiment</a>.</li>
</ul>
<p>Today, you can try the plugin from the command line by following the <a href="https://github.com/prettier/plugin-ruby#getting-started" target="_blank" rel="noopener noreferrer" class="">instructions in the README</a>. Definitely <a href="https://github.com/prettier/plugin-ruby/issues" target="_blank" rel="noopener noreferrer" class="">report any bugs</a> that you find, we're working diligently to make sure they're squashed as soon as they come up. Also feel free to <a href="https://github.com/prettier/plugin-ruby/blob/master/CONTRIBUTING.md" target="_blank" rel="noopener noreferrer" class="">get started contributing</a> to the project itself if you're interested.</p>]]></content>
        <author>
            <name>Kevin Newton</name>
            <uri>https://github.com/kddnewton</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prettier 2.2: new JavaScript parsers, TS 4.1 and ESM standalone bundles]]></title>
        <id>https://prettier.io/blog/2020/11/20/2.2.0</id>
        <link href="https://prettier.io/blog/2020/11/20/2.2.0"/>
        <updated>2020-11-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This release supports new JavaScript parsers espree and meriyah, supports TypeScript 4.1, ships ESM standalone bundles for modern browsers, and includes many bug fixes and improvements!]]></summary>
        <content type="html"><![CDATA[<p>This release supports new JavaScript parsers <a href="https://github.com/eslint/espree" target="_blank" rel="noopener noreferrer" class="">espree</a> and <a href="https://github.com/meriyah/meriyah" target="_blank" rel="noopener noreferrer" class="">meriyah</a>, supports <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-1-rc/" target="_blank" rel="noopener noreferrer" class="">TypeScript 4.1</a>, ships ESM standalone bundles for modern browsers, and includes many bug fixes and improvements!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="https://prettier.io/blog/2020/11/20/2.2.0#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript">JavaScript<a href="https://prettier.io/blog/2020/11/20/2.2.0#javascript" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-espree-and-meriyah-parser-9000-9514-by-fisker">Add <code>espree</code> and <code>meriyah</code> parser (<a href="https://github.com/prettier/prettier/pull/9000" target="_blank" rel="noopener noreferrer" class="">#9000</a>, <a href="https://github.com/prettier/prettier/pull/9514" target="_blank" rel="noopener noreferrer" class="">#9514</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#add-espree-and-meriyah-parser-9000-9514-by-fisker" class="hash-link" aria-label="Direct link to add-espree-and-meriyah-parser-9000-9514-by-fisker" title="Direct link to add-espree-and-meriyah-parser-9000-9514-by-fisker" translate="no">​</a></h4>
<p>Two new values for the <code>parser</code> option has been added:</p>
<ul>
<li class="">
<p><a href="https://github.com/eslint/espree" target="_blank" rel="noopener noreferrer" class=""><code>espree</code></a> - which is the default parser used by <a href="https://github.com/eslint/eslint" target="_blank" rel="noopener noreferrer" class=""><code>ESLint</code></a>.</p>
<p>Note that <code>espree</code> only works for <a href="https://github.com/tc39/proposals/blob/master/finished-proposals.md" target="_blank" rel="noopener noreferrer" class="">Finished ECMAScript Proposals</a>, and is stricter than the <code>babel</code> parser.</p>
</li>
<li class="">
<p><a href="https://github.com/meriyah/meriyah" target="_blank" rel="noopener noreferrer" class=""><code>meriyah</code></a> - A <a href="https://meriyah.github.io/meriyah/performance/" target="_blank" rel="noopener noreferrer" class="">fast</a> JavaScript parser, successor of <a href="https://github.com/cherow/cherow" target="_blank" rel="noopener noreferrer" class="">cherow</a>.</p>
</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript">TypeScript<a href="https://prettier.io/blog/2020/11/20/2.2.0#typescript" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-typescript-41-9473-9636-by-sosukesuzuki">Support <a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-1/" target="_blank" rel="noopener noreferrer" class="">TypeScript 4.1</a> (<a href="https://github.com/prettier/prettier/pull/9473" target="_blank" rel="noopener noreferrer" class="">#9473</a>, <a href="https://github.com/prettier/prettier/pull/9636" target="_blank" rel="noopener noreferrer" class="">#9636</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#support-typescript-41-9473-9636-by-sosukesuzuki" class="hash-link" aria-label="Direct link to support-typescript-41-9473-9636-by-sosukesuzuki" title="Direct link to support-typescript-41-9473-9636-by-sosukesuzuki" translate="no">​</a></h4>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-remapping-in-mapped-types"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-1/#key-remapping-in-mapped-types" target="_blank" rel="noopener noreferrer" class="">Key Remapping In Mapped Types</a><a href="https://prettier.io/blog/2020/11/20/2.2.0#key-remapping-in-mapped-types" class="hash-link" aria-label="Direct link to key-remapping-in-mapped-types" title="Direct link to key-remapping-in-mapped-types" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">MappedTypeWithNewKeys</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">K</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">keyof</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> NewKeyType</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">K</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Unexpected token</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> expected </span><span class="token string" style="color:#e3116c">"]"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">2</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">17</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">MappedTypeWithNewKeys</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">   </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">K</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">keyof</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> NewKeyType</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">K</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">                 </span><span class="token operator" style="color:#393A34">^</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">MappedTypeWithNewKeys</span><span class="token class-name operator" style="color:#393A34">&lt;</span><span class="token class-name constant" style="color:#36acaa">T</span><span class="token class-name operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">K</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">keyof</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> NewKeyType</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">T</span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">K</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="template-literal-types"><a href="https://devblogs.microsoft.com/typescript/announcing-typescript-4-1/#template-literal-types" target="_blank" rel="noopener noreferrer" class="">Template Literal Types</a><a href="https://prettier.io/blog/2020/11/20/2.2.0#template-literal-types" class="hash-link" aria-label="Direct link to template-literal-types" title="Direct link to template-literal-types" translate="no">​</a></h5>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">HelloWorld</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">Hello, </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation keyword" style="color:#00009f">keyof</span><span class="token template-string interpolation"> World</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SyntaxError</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> Unexpected token</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> expected </span><span class="token string" style="color:#e3116c">"}"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">35</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">HelloWorld</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">Hello, </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation keyword" style="color:#00009f">keyof</span><span class="token template-string interpolation"> World</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">                                   </span><span class="token operator" style="color:#393A34">^</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">HelloWorld</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">Hello, </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation keyword" style="color:#00009f">keyof</span><span class="token template-string interpolation"> World</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api">API<a href="https://prettier.io/blog/2020/11/20/2.2.0#api" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="esm-standalone-bundles-8983-by-monchi-fisker">ESM standalone bundles (<a href="https://github.com/prettier/prettier/pull/8983" target="_blank" rel="noopener noreferrer" class="">#8983</a> by <a href="https://github.com/Monchi" target="_blank" rel="noopener noreferrer" class="">@Monchi</a>, <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#esm-standalone-bundles-8983-by-monchi-fisker" class="hash-link" aria-label="Direct link to esm-standalone-bundles-8983-by-monchi-fisker" title="Direct link to esm-standalone-bundles-8983-by-monchi-fisker" translate="no">​</a></h4>
<p>Prettier now also comes as ES modules, which can be directly used in modern browsers:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">prettier</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://unpkg.com/prettier/esm/standalone.mjs"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">parserGraphql</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://unpkg.com/prettier/esm/parser-graphql.mjs"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">prettier</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">format</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"query {     }"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">parser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"graphql"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">parserGraphql</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes">Other changes<a href="https://prettier.io/blog/2020/11/20/2.2.0#other-changes" class="hash-link" aria-label="Direct link to Other changes" title="Direct link to Other changes" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="javascript-1">JavaScript<a href="https://prettier.io/blog/2020/11/20/2.2.0#javascript-1" class="hash-link" aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="respect-spacing-between-template-values-in-embedded-css-9078-by-sosukesuzuki">Respect spacing between template values in embedded CSS (<a href="https://github.com/prettier/prettier/pull/9078" target="_blank" rel="noopener noreferrer" class="">#9078</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#respect-spacing-between-template-values-in-embedded-css-9078-by-sosukesuzuki" class="hash-link" aria-label="Direct link to respect-spacing-between-template-values-in-embedded-css-9078-by-sosukesuzuki" title="Direct link to respect-spacing-between-template-values-in-embedded-css-9078-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> style </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> css</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">width</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">size</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">sizeUnit</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> style </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> css</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">width</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">size</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">sizeUnit</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> style </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> css</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css property" style="color:#36acaa">width</span><span class="token template-string css language-css punctuation" style="color:#393A34">:</span><span class="token template-string css language-css"> </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">size</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">sizeUnit</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css punctuation" style="color:#393A34">;</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-comments-inside-template-literals-with-embedded-syntax-9278-by-fisker">Fix comments inside template literals with embedded syntax (<a href="https://github.com/prettier/prettier/pull/9278" target="_blank" rel="noopener noreferrer" class="">#9278</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-comments-inside-template-literals-with-embedded-syntax-9278-by-fisker" class="hash-link" aria-label="Direct link to fix-comments-inside-template-literals-with-embedded-syntax-9278-by-fisker" title="Direct link to fix-comments-inside-template-literals-with-embedded-syntax-9278-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string html language-html interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation">      foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation">  </span><span class="token template-string html language-html interpolation comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token template-string html language-html interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation"></span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string html language-html"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html"></span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string html language-html interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation">      foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation">  </span><span class="token template-string html language-html interpolation comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token template-string html language-html interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation"></span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string html language-html"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">graphql</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string graphql language-graphql property interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string graphql language-graphql property interpolation" style="color:#36acaa"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string graphql language-graphql property interpolation" style="color:#36acaa">      foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string graphql language-graphql property interpolation" style="color:#36acaa">  </span><span class="token template-string graphql language-graphql property interpolation comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token template-string graphql language-graphql property interpolation" style="color:#36acaa"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string graphql language-graphql property interpolation" style="color:#36acaa"></span><span class="token template-string graphql language-graphql property interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">css</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css interpolation">      foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css interpolation">  </span><span class="token template-string css language-css interpolation comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token template-string css language-css interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css interpolation"></span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string html language-html interpolation">foo</span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string html language-html"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html">  </span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string html language-html interpolation">foo</span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string html language-html"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html">  /* comment */</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">graphql</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string graphql language-graphql"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string graphql language-graphql">  </span><span class="token template-string graphql language-graphql property interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string graphql language-graphql property interpolation" style="color:#36acaa">foo</span><span class="token template-string graphql language-graphql property interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string graphql language-graphql"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string graphql language-graphql">  /* </span><span class="token template-string graphql language-graphql property" style="color:#36acaa">comment</span><span class="token template-string graphql language-graphql"> */</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string graphql language-graphql"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">css</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation">foo</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css">  </span><span class="token template-string css language-css comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token template-string css language-css"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string html language-html interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation">  foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation">  </span><span class="token template-string html language-html interpolation comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token template-string html language-html interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation"></span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string html language-html"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html"></span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string html language-html interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation">  foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation">  </span><span class="token template-string html language-html interpolation comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token template-string html language-html interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html interpolation"></span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string html language-html"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string html language-html"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">graphql</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string graphql language-graphql property interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string graphql language-graphql property interpolation" style="color:#36acaa"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string graphql language-graphql property interpolation" style="color:#36acaa">  foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string graphql language-graphql property interpolation" style="color:#36acaa">  </span><span class="token template-string graphql language-graphql property interpolation comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token template-string graphql language-graphql property interpolation" style="color:#36acaa"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string graphql language-graphql property interpolation" style="color:#36acaa"></span><span class="token template-string graphql language-graphql property interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">css</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string css language-css interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css interpolation">  foo</span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css interpolation">  </span><span class="token template-string css language-css interpolation comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token template-string css language-css interpolation"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string css language-css interpolation"></span><span class="token template-string css language-css interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-formatting-for-assignments-of-classes-with-long-superclass-names-9341-by-sosukesuzuki">Improve formatting for assignments of classes with long superclass names (<a href="https://github.com/prettier/prettier/pull/9341" target="_blank" rel="noopener noreferrer" class="">#9341</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#improve-formatting-for-assignments-of-classes-with-long-superclass-names-9341-by-sosukesuzuki" class="hash-link" aria-label="Direct link to improve-formatting-for-assignments-of-classes-with-long-superclass-names-9341-by-sosukesuzuki" title="Direct link to improve-formatting-for-assignments-of-classes-with-long-superclass-names-9341-by-sosukesuzuki" translate="no">​</a></h4>
<p>This improves the formatting for <a href="https://developers.google.com/closure/library/docs/introduction#names" target="_blank" rel="noopener noreferrer" class="">Google Closure Library namespaces</a>.</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">aaaaaaaa</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">bbbbbbbb</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">cccccccc</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">dddddddd</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">eeeeeeee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">ffffffff</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">gggggggg2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  aaaaaaaa</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">bbbbbbbb</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">cccccccc</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">dddddddd</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">eeeeeeee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">ffffffff</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">gggggggg1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">aaaaaaaa</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">bbbbbbbb</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">cccccccc</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">dddddddd</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">eeeeeeee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">ffffffff</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">gggggggg2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">extends</span><span class="token plain"> aaaaaaaa</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">bbbbbbbb</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">cccccccc</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">dddddddd</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">eeeeeeee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">ffffffff</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">gggggggg1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">aaaaaaaa</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">bbbbbbbb</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">cccccccc</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">dddddddd</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">eeeeeeee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">ffffffff</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">gggggggg2</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">extends</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  aaaaaaaa</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">bbbbbbbb</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">cccccccc</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">dddddddd</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">eeeeeeee</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">ffffffff</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">gggggggg1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">method</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"foo"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-placement-of-leading-comments-for-bodies-of-while-statements-9345-by-sosukesuzuki">Fix placement of leading comments for bodies of <code>while</code> statements (<a href="https://github.com/prettier/prettier/pull/9345" target="_blank" rel="noopener noreferrer" class="">#9345</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-placement-of-leading-comments-for-bodies-of-while-statements-9345-by-sosukesuzuki" class="hash-link" aria-label="Direct link to fix-placement-of-leading-comments-for-bodies-of-while-statements-9345-by-sosukesuzuki" title="Direct link to fix-placement-of-leading-comments-for-bodies-of-while-statements-9345-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">while</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">while</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword control-flow" style="color:#00009f">while</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// Comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">foo</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="update-to-babelparser-712-9408-9476-9597-by-sosukesuzuki">Update to <code>@babel/parser</code> 7.12 (<a href="https://github.com/prettier/prettier/pull/9408" target="_blank" rel="noopener noreferrer" class="">#9408</a>, <a href="https://github.com/prettier/prettier/pull/9476" target="_blank" rel="noopener noreferrer" class="">#9476</a>, <a href="https://github.com/prettier/prettier/pull/9597" target="_blank" rel="noopener noreferrer" class="">#9597</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#update-to-babelparser-712-9408-9476-9597-by-sosukesuzuki" class="hash-link" aria-label="Direct link to update-to-babelparser-712-9408-9476-9597-by-sosukesuzuki" title="Direct link to update-to-babelparser-712-9408-9476-9597-by-sosukesuzuki" translate="no">​</a></h4>
<p>Updated the JavaScript parser to <a href="https://babeljs.io/blog/2020/10/15/7.12.0" target="_blank" rel="noopener noreferrer" class=""><code>@babel/parser</code> 7.12</a>. This fixes several bugs and supports some new syntax.</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-import-assertions">Support Import Assertions<a href="https://prettier.io/blog/2020/11/20/2.2.0#support-import-assertions" class="hash-link" aria-label="Direct link to Support Import Assertions" title="Direct link to Support Import Assertions" translate="no">​</a></h5>
<p><a href="https://prettier.io/blog/2020/08/24/2.1.0.html#support-es-module-attributes-and-json-modules-8436httpsgithubcomprettierprettierpull8436-by-fiskerhttpsgithubcomfisker" target="_blank" rel="noopener noreferrer" class="">The "module attributes" proposal supported on 2.1</a> has been significantly changed and also renamed to "import assertions".</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">foo</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./foo.json"</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">assert</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"json"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-imports-and-exports-with-string-names">Support imports and exports with string names<a href="https://prettier.io/blog/2020/11/20/2.2.0#support-imports-and-exports-with-string-names" class="hash-link" aria-label="Direct link to Support imports and exports with string names" title="Direct link to Support imports and exports with string names" translate="no">​</a></h5>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> happy </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"happy"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> happy </span><span class="token keyword module" style="color:#00009f">as</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"😃"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-class-static-blocks">Support class static blocks<a href="https://prettier.io/blog/2020/11/20/2.2.0#support-class-static-blocks" class="hash-link" aria-label="Direct link to Support class static blocks" title="Direct link to Support class static blocks" translate="no">​</a></h5>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">C</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> #x </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">42</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> y</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">try</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">y</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">doSomethingWith</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">#x</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">catch</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">y</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"unknown"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="keep-html-and-markdown-invalid-template-literals-as-is-9431-by-fisker">Keep HTML and Markdown invalid template literals as is (<a href="https://github.com/prettier/prettier/pull/9431" target="_blank" rel="noopener noreferrer" class="">#9431</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#keep-html-and-markdown-invalid-template-literals-as-is-9431-by-fisker" class="hash-link" aria-label="Direct link to keep-html-and-markdown-invalid-template-literals-as-is-9431-by-fisker" title="Direct link to keep-html-and-markdown-invalid-template-literals-as-is-9431-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string html language-html tag punctuation" style="color:#393A34">&lt;</span><span class="token template-string html language-html tag" style="color:#00009f">div</span><span class="token template-string html language-html tag punctuation" style="color:#393A34">&gt;</span><span class="token template-string html language-html">\u{prettier}</span><span class="token template-string html language-html tag punctuation" style="color:#393A34">&lt;/</span><span class="token template-string html language-html tag" style="color:#00009f">div</span><span class="token template-string html language-html tag punctuation" style="color:#393A34">&gt;</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string html language-html">\u{prettier}</span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string html language-html interpolation">foo</span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string html language-html">pr\u{0065}ttier</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> markdown</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string markdown language-markdown title important punctuation" style="color:#393A34">#</span><span class="token template-string markdown language-markdown title important"> \u{prettier}\u{0065}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string html language-html">null</span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string html language-html interpolation">foo</span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string html language-html">prettier</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> markdown</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string markdown language-markdown"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string markdown language-markdown"></span><span class="token template-string markdown language-markdown title important punctuation" style="color:#393A34">#</span><span class="token template-string markdown language-markdown title important"> \u{prettier}\u{0065}</span><span class="token template-string markdown language-markdown"></span><br></span><span class="token-line" style="color:#393A34"><span class="token template-string markdown language-markdown"></span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string html language-html tag punctuation" style="color:#393A34">&lt;</span><span class="token template-string html language-html tag" style="color:#00009f">div</span><span class="token template-string html language-html tag punctuation" style="color:#393A34">&gt;</span><span class="token template-string html language-html">\u{prettier}</span><span class="token template-string html language-html tag punctuation" style="color:#393A34">&lt;/</span><span class="token template-string html language-html tag" style="color:#00009f">div</span><span class="token template-string html language-html tag punctuation" style="color:#393A34">&gt;</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> html</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string html language-html">\u{prettier}</span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string html language-html interpolation">foo</span><span class="token template-string html language-html interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string html language-html">pr\u{0065}ttier</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> markdown</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string markdown language-markdown title important punctuation" style="color:#393A34">#</span><span class="token template-string markdown language-markdown title important"> \u{prettier}\u{0065}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-for-import-a-as-a-and-export-a-as-a-9435-by-fisker">Fix formatting for <code>import {a as a}</code> and <code>export {a as a}</code> (<a href="https://github.com/prettier/prettier/pull/9435" target="_blank" rel="noopener noreferrer" class="">#9435</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-formatting-for-import-a-as-a-and-export-a-as-a-9435-by-fisker" class="hash-link" aria-label="Direct link to fix-formatting-for-import-a-as-a-and-export-a-as-a-9435-by-fisker" title="Direct link to fix-formatting-for-import-a-as-a-and-export-a-as-a-9435-by-fisker" translate="no">​</a></h4>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> a </span><span class="token imports keyword module" style="color:#00009f">as</span><span class="token imports"> a </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"a"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token exports punctuation" style="color:#393A34">{</span><span class="token exports"> b </span><span class="token exports keyword module" style="color:#00009f">as</span><span class="token exports"> b </span><span class="token exports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"b"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> a </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"a"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token exports punctuation" style="color:#393A34">{</span><span class="token exports"> b </span><span class="token exports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"b"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> a </span><span class="token imports keyword module" style="color:#00009f">as</span><span class="token imports"> a </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"a"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">export</span><span class="token plain"> </span><span class="token exports punctuation" style="color:#393A34">{</span><span class="token exports"> b </span><span class="token exports keyword module" style="color:#00009f">as</span><span class="token exports"> b </span><span class="token exports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"b"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-formatting-of-yielded-jsx-expressions-9650-by-brainkim">Fix formatting of yielded JSX expressions (<a href="https://github.com/prettier/prettier/pull/9650" target="_blank" rel="noopener noreferrer" class="">#9650</a> by <a href="https://github.com/brainkim" target="_blank" rel="noopener noreferrer" class="">@brainkim</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-formatting-of-yielded-jsx-expressions-9650-by-brainkim" class="hash-link" aria-label="Direct link to fix-formatting-of-yielded-jsx-expressions-9650-by-brainkim" title="Direct link to fix-formatting-of-yielded-jsx-expressions-9650-by-brainkim" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">generator</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">generator</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">generator</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="flatten-function-expression-parameters-in-hugged-last-argument-9662-by-thorn0">Flatten function expression parameters in hugged last argument (<a href="https://github.com/prettier/prettier/pull/9662" target="_blank" rel="noopener noreferrer" class="">#9662</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#flatten-function-expression-parameters-in-hugged-last-argument-9662-by-thorn0" class="hash-link" aria-label="Direct link to flatten-function-expression-parameters-in-hugged-last-argument-9662-by-thorn0" title="Direct link to flatten-function-expression-parameters-in-hugged-last-argument-9662-by-thorn0" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">mySagas</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> effects</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">takeEvery</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rexpress</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">actionTypes</span><span class="token punctuation" style="color:#393A34">.</span><span class="token constant" style="color:#36acaa">REQUEST_START</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    id</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> rexpress</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">actions</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">store</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">writeHead</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">400</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> rexpress</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">actions</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">store</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">end</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"pong"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"pong"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">mySagas</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> effects</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">takeEvery</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    rexpress</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">actionTypes</span><span class="token punctuation" style="color:#393A34">.</span><span class="token constant" style="color:#36acaa">REQUEST_START</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">function</span><span class="token operator" style="color:#393A34">*</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> id </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> rexpress</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">actions</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">store</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">writeHead</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">400</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token keyword control-flow" style="color:#00009f">yield</span><span class="token plain"> rexpress</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">actions</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">store</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">end</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"pong"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"pong"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-crash-on-require-comment--9670-by-fisker">Fix crash on <code>require(/* comment */)</code> (<a href="https://github.com/prettier/prettier/pull/9670" target="_blank" rel="noopener noreferrer" class="">#9670</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-crash-on-require-comment--9670-by-fisker" class="hash-link" aria-label="Direct link to fix-crash-on-require-comment--9670-by-fisker" title="Direct link to fix-crash-on-require-comment--9670-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token known-class-name class-name">Error</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Comment</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"comment"</span><span class="token plain"> was not printed</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain"> </span><span class="token property-access maybe-class-name">Please</span><span class="token plain"> report </span><span class="token keyword" style="color:#00009f">this</span><span class="token plain"> error</span><span class="token operator" style="color:#393A34">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">require</span><span class="token punctuation" style="color:#393A34">(</span><span class="token comment" style="color:#999988;font-style:italic">/* comment */</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="typescript-1">TypeScript<a href="https://prettier.io/blog/2020/11/20/2.2.0#typescript-1" class="hash-link" aria-label="Direct link to TypeScript" title="Direct link to TypeScript" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="preserve-the-last-separator-in-ignored-object-types-and-interfaces-9318-by-sosukesuzuki">Preserve the last separator in ignored object types and interfaces (<a href="https://github.com/prettier/prettier/pull/9318" target="_blank" rel="noopener noreferrer" class="">#9318</a> by <a href="https://github.com/sosukesuzuki" target="_blank" rel="noopener noreferrer" class="">@sosukesuzuki</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#preserve-the-last-separator-in-ignored-object-types-and-interfaces-9318-by-sosukesuzuki" class="hash-link" aria-label="Direct link to preserve-the-last-separator-in-ignored-object-types-and-interfaces-9318-by-sosukesuzuki" title="Direct link to preserve-the-last-separator-in-ignored-object-types-and-interfaces-9318-by-sosukesuzuki" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> x</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  y</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> z</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> x</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  y</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> z</span><span class="token punctuation" style="color:#393A34">;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> x</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  y</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> z</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-parens-around-assignments-in-object-literal-properties-9484-by-fisker">Add parens around assignments in object literal properties (<a href="https://github.com/prettier/prettier/pull/9484" target="_blank" rel="noopener noreferrer" class="">#9484</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#add-parens-around-assignments-in-object-literal-properties-9484-by-fisker" class="hash-link" aria-label="Direct link to add-parens-around-assignments-in-object-literal-properties-9484-by-fisker" title="Direct link to add-parens-around-assignments-in-object-literal-properties-9484-by-fisker" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> b </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">a </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-inconsistencies-in-formatting-of-types-between-typescript-and-flow-9521-by-fisker">Fix inconsistencies in formatting of types between <code>typescript</code> and <code>flow</code> (<a href="https://github.com/prettier/prettier/pull/9521" target="_blank" rel="noopener noreferrer" class="">#9521</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-inconsistencies-in-formatting-of-types-between-typescript-and-flow-9521-by-fisker" class="hash-link" aria-label="Direct link to fix-inconsistencies-in-formatting-of-types-between-typescript-and-flow-9521-by-fisker" title="Direct link to fix-inconsistencies-in-formatting-of-types-between-typescript-and-flow-9521-by-fisker" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> SomeGeneric</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Pick</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">Config</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ONE_LONG_PROP"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ANOTHER_LONG_PROP"</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1 (--parser=typescript)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> SomeGeneric</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">Pick</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Config</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token string" style="color:#e3116c">"ONE_LONG_PROP"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ANOTHER_LONG_PROP"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1 (--parser=flow)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> SomeGeneric</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Pick</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">Config</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ONE_LONG_PROP"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ANOTHER_LONG_PROP"</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2 (typescript and flow parser)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> SomeGeneric</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Pick</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">Config</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ONE_LONG_PROP"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ANOTHER_LONG_PROP"</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-prettier-ignored-mapped-types-9551-by-fisker">Fix <code>prettier-ignore</code>d mapped types (<a href="https://github.com/prettier/prettier/pull/9551" target="_blank" rel="noopener noreferrer" class="">#9551</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-prettier-ignored-mapped-types-9551-by-fisker" class="hash-link" aria-label="Direct link to fix-prettier-ignored-mapped-types-9551-by-fisker" title="Direct link to fix-prettier-ignored-mapped-types-9551-by-fisker" translate="no">​</a></h4>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">a</span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">C</span><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">  </span><span class="token constant" style="color:#36acaa">D</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">a</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">C</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">D</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">a</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">[</span><span class="token constant" style="color:#36acaa">A</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">]</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">C</span><span class="token plain">  </span><span class="token operator" style="color:#393A34">|</span><span class="token plain">  </span><span class="token constant" style="color:#36acaa">D</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="flow">Flow<a href="https://prettier.io/blog/2020/11/20/2.2.0#flow" class="hash-link" aria-label="Direct link to Flow" title="Direct link to Flow" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="switch-the-babel-parser-to-babel-flow-if-the-flow-pragma-is-found-9071-by-fisker">Switch the <code>babel</code> parser to <code>babel-flow</code> if the <code>@flow</code> pragma is found (<a href="https://github.com/prettier/prettier/pull/9071" target="_blank" rel="noopener noreferrer" class="">#9071</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#switch-the-babel-parser-to-babel-flow-if-the-flow-pragma-is-found-9071-by-fisker" class="hash-link" aria-label="Direct link to switch-the-babel-parser-to-babel-flow-if-the-flow-pragma-is-found-9071-by-fisker" title="Direct link to switch-the-babel-parser-to-babel-flow-if-the-flow-pragma-is-found-9071-by-fisker" translate="no">​</a></h4>
<p>In practice, this means that as long as your Flow files have the pragma, it's safe to use the <code>.js</code> extension for them. Prettier will correctly parse and print them without any additional configuration. Previously, the pragma was recognized by the parser, but there existed minor correctness issues with the printer. E.g. it's not safe to unquote number keys in Flow.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input (with --parser babel)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// @flow</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">f</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string-property property" style="color:#36acaa">"2"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text">)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 2.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// @flow</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">f</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text">);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 2.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// @flow</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">f</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">T</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string-property property" style="color:#36acaa">"2"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text">);</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="enums-with-unknown-members-9432-by-gkz">Enums with unknown members (<a href="https://github.com/prettier/prettier/pull/9432" target="_blank" rel="noopener noreferrer" class="">#9432</a> by <a href="https://github.com/gkz" target="_blank" rel="noopener noreferrer" class="">@gkz</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#enums-with-unknown-members-9432-by-gkz" class="hash-link" aria-label="Direct link to enums-with-unknown-members-9432-by-gkz" title="Direct link to enums-with-unknown-members-9432-by-gkz" translate="no">​</a></h4>
<p>Previously, was not supported. Now, the following is formatted:</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">enum</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">E</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token spread operator" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1: parse error</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">enum</span><span class="token plain"> </span><span class="token constant" style="color:#36acaa">E</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">A</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token constant" style="color:#36acaa">B</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token spread operator" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="this-parameter-annotations-9457-by-dsainati1-9489-by-fisker"><code>this</code> parameter annotations (<a href="https://github.com/prettier/prettier/pull/9457" target="_blank" rel="noopener noreferrer" class="">#9457</a> by <a href="https://github.com/dsainati1" target="_blank" rel="noopener noreferrer" class="">@dsainati1</a>, <a href="https://github.com/prettier/prettier/pull/9489" target="_blank" rel="noopener noreferrer" class="">#9489</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#this-parameter-annotations-9457-by-dsainati1-9489-by-fisker" class="hash-link" aria-label="Direct link to this-parameter-annotations-9457-by-dsainati1-9489-by-fisker" title="Direct link to this-parameter-annotations-9457-by-dsainati1-9489-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter keyword" style="color:#00009f">this</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> </span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> number</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token function-variable function maybe-class-name" style="color:#d73a49">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter keyword" style="color:#00009f">this</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> boolean</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> </span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> number</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> boolean</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter keyword" style="color:#00009f">this</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> </span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> number</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token function-variable function maybe-class-name" style="color:#d73a49">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> number</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> boolean</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">f</span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter keyword" style="color:#00009f">this</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> string</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> </span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> number</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">type </span><span class="token function-variable function maybe-class-name" style="color:#d73a49">T</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter keyword" style="color:#00009f">this</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> boolean</span><span class="token parameter punctuation" style="color:#393A34">,</span><span class="token parameter"> </span><span class="token parameter literal-property property" style="color:#36acaa">a</span><span class="token parameter operator" style="color:#393A34">:</span><span class="token parameter"> number</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> boolean</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="support-bigintliteraltypeannotation-and-biginttypeannotation-9523-by-fisker">Support <code>BigIntLiteralTypeAnnotation</code> and <code>BigIntTypeAnnotation</code> (<a href="https://github.com/prettier/prettier/pull/9523" target="_blank" rel="noopener noreferrer" class="">#9523</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#support-bigintliteraltypeannotation-and-biginttypeannotation-9523-by-fisker" class="hash-link" aria-label="Direct link to support-bigintliteraltypeannotation-and-biginttypeannotation-9523-by-fisker" title="Direct link to support-bigintliteraltypeannotation-and-biginttypeannotation-9523-by-fisker" translate="no">​</a></h4>
<p>Add support for <code>BigIntLiteralTypeAnnotation</code> and <code>BigIntTypeAnnotation</code> in Flow.</p>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">foo</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> bigint </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1n</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">bar</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> baz</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">1n</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = 1n;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 2.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">Error: unknown type: "BigIntTypeAnnotation"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    at ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 2.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">const foo: bigint = 1n;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">const bar: baz</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">1n</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = 1n;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="treat-more-simple-types-as-non-breaking-in-generic-type-annotations-9543-by-fisker">Treat more simple types as non-breaking in generic type annotations (<a href="https://github.com/prettier/prettier/pull/9543" target="_blank" rel="noopener noreferrer" class="">#9543</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#treat-more-simple-types-as-non-breaking-in-generic-type-annotations-9543-by-fisker" class="hash-link" aria-label="Direct link to treat-more-simple-types-as-non-breaking-in-generic-type-annotations-9543-by-fisker" title="Direct link to treat-more-simple-types-as-non-breaking-in-generic-type-annotations-9543-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">foo1</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">symbol</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">const foo2: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo&lt;"STRING"&gt; = a;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">const foo3: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">0</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = a;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 2.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo&lt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  symbol</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">&gt; = a;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">const foo2: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo&lt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  "STRING"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">&gt; = a;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">const foo3: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo&lt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">  0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">&gt; = a;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 2.2 (typescript and flow parser)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">const foo1: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">symbol</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = a</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">const foo2: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo&lt;"STRING"&gt; = a;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">const foo3: Fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">0</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"> = a;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-missing-parentheses-around-prettier-ignored-type-assertions-9553-by-fisker">Fix missing parentheses around <code>prettier-ignore</code>d type assertions (<a href="https://github.com/prettier/prettier/pull/9553" target="_blank" rel="noopener noreferrer" class="">#9553</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-missing-parentheses-around-prettier-ignored-type-assertions-9553-by-fisker" class="hash-link" aria-label="Direct link to fix-missing-parentheses-around-prettier-ignored-type-assertions-9553-by-fisker" title="Direct link to fix-missing-parentheses-around-prettier-ignored-type-assertions-9553-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">transform</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">pointTransformer</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter maybe-class-name">Point</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token maybe-class-name">Point</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">transform</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">pointTransformer</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter maybe-class-name">Point</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token maybe-class-name">Point</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">transform</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">// prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">pointTransformer</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token parameter maybe-class-name">Point</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token maybe-class-name">Point</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="improve-comment-types-detection-9563-by-fisker">Improve comment types detection (<a href="https://github.com/prettier/prettier/pull/9563" target="_blank" rel="noopener noreferrer" class="">#9563</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#improve-comment-types-detection-9563-by-fisker" class="hash-link" aria-label="Direct link to improve-comment-types-detection-9563-by-fisker" title="Direct link to improve-comment-types-detection-9563-by-fisker" translate="no">​</a></h4>
<div class="language-jsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-jsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">foo</span><span class="token comment" style="color:#999988;font-style:italic">/*::&lt;bar&gt;*/</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">baz</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">class</span><span class="token plain"> </span><span class="token class-name">Foo</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"> data</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">Array</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">string</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">) </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 2.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">foo/*:: &lt;bar&gt; */(baz);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">class Foo </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">data</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">Array</span><span class="token comment" style="color:#999988;font-style:italic">/*:: &lt;string&gt; */</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">// Prettier 2.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">foo/*:: &lt;bar&gt; */(baz);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">class Foo </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">bar</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">data</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">Array</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">string</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">) </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="less">Less<a href="https://prettier.io/blog/2020/11/20/2.2.0#less" class="hash-link" aria-label="Direct link to Less" title="Direct link to Less" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-comments-in-value-lists-9356-by-thorn0">Fix comments in value lists (<a href="https://github.com/prettier/prettier/pull/9356" target="_blank" rel="noopener noreferrer" class="">#9356</a> by <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-comments-in-value-lists-9356-by-thorn0" class="hash-link" aria-label="Direct link to fix-comments-in-value-lists-9356-by-thorn0" title="Direct link to fix-comments-in-value-lists-9356-by-thorn0" translate="no">​</a></h4>
<div class="language-less codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-less codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">@test-space-separated</span><span class="token variable punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token hexcode color">#aaaaaa</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Start with A</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token hexcode color">#bbbbbb</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// then some B</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token hexcode color">#cccccc</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// and round it out with C</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">@test-space-separated</span><span class="token variable punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token hexcode color">#aaaaaa</span><span class="token plain"> a </span><span class="token comment" style="color:#999988;font-style:italic">// Start with</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token hexcode color">#bbbbbb</span><span class="token plain"> b </span><span class="token comment" style="color:#999988;font-style:italic">// then some</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token hexcode color">#cccccc</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// and round it out with C</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token variable" style="color:#36acaa">@test-space-separated</span><span class="token variable punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token hexcode color">#aaaaaa</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Start with A</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token hexcode color">#bbbbbb</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// then some B</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token hexcode color">#cccccc</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// and round it out with C</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="html">HTML<a href="https://prettier.io/blog/2020/11/20/2.2.0#html" class="hash-link" aria-label="Direct link to HTML" title="Direct link to HTML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-crash-on-reading-nodesourcespan-9368-by-fisker">Fix crash on reading <code>Node.sourceSpan</code> (<a href="https://github.com/prettier/prettier/pull/9368" target="_blank" rel="noopener noreferrer" class="">#9368</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-crash-on-reading-nodesourcespan-9368-by-fisker" class="hash-link" aria-label="Direct link to fix-crash-on-reading-nodesourcespan-9368-by-fisker" title="Direct link to fix-crash-on-reading-nodesourcespan-9368-by-fisker" translate="no">​</a></h4>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">strong</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">a</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">strong</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">-</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">strong</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">b</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">strong</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">TypeError: Cannot read property 'line' of undefined</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    at forceNextEmptyLine ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">strong</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">a</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">strong</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">-</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">strong</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">b</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">strong</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">-</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="vue">Vue<a href="https://prettier.io/blog/2020/11/20/2.2.0#vue" class="hash-link" aria-label="Direct link to Vue" title="Direct link to Vue" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-inconsistent-formatting-for-v-for-9225-by-zweimach">Fix inconsistent formatting for <code>v-for</code> (<a href="https://github.com/prettier/prettier/pull/9225" target="_blank" rel="noopener noreferrer" class="">#9225</a> by <a href="https://github.com/zweimach" target="_blank" rel="noopener noreferrer" class="">@zweimach</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-inconsistent-formatting-for-v-for-9225-by-zweimach" class="hash-link" aria-label="Direct link to fix-inconsistent-formatting-for-v-for-9225-by-zweimach" title="Direct link to fix-inconsistent-formatting-for-v-for-9225-by-zweimach" translate="no">​</a></h4>
<div class="language-vue codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-vue codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Input --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v-for="({ longLongProp=42, anotherLongLongProp='Hello, World!' }, index) of longLongLongLongLongLongLongLongList"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &gt;&lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v-for="({firstValue, secondValue, thirdValue, fourthValue, fifthValue, sixthValue}, objectKey, index) in objectWithAVeryVeryVeryVeryLongName"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &gt;&lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.1 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v-for="({ longLongProp = 42, anotherLongLongProp = 'Hello, World!' },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    index) of longLongLongLongLongLongLongLongList"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &gt;&lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v-for="({</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      firstValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      secondValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      thirdValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      fourthValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      fifthValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      sixthValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    objectKey,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    index) in objectWithAVeryVeryVeryVeryLongName"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &gt;&lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.2 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v-for="(</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      { longLongProp = 42, anotherLongLongProp = 'Hello, World!' }, index</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ) of longLongLongLongLongLongLongLongList"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &gt;&lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v-for="(</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        firstValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        secondValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        thirdValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        fourthValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        fifthValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        sixthValue,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      objectKey,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      index</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ) in objectWithAVeryVeryVeryVeryLongName"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &gt;&lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-inconsistent-formatting-for-slots-support-vue-3-scriptsetup-and-stylevars-9609-by-fisker">Fix inconsistent formatting for slots, support Vue 3 <code>script[setup]</code> and <code>style[vars]</code> (<a href="https://github.com/prettier/prettier/pull/9609" target="_blank" rel="noopener noreferrer" class="">#9609</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-inconsistent-formatting-for-slots-support-vue-3-scriptsetup-and-stylevars-9609-by-fisker" class="hash-link" aria-label="Direct link to fix-inconsistent-formatting-for-slots-support-vue-3-scriptsetup-and-stylevars-9609-by-fisker" title="Direct link to fix-inconsistent-formatting-for-slots-support-vue-3-scriptsetup-and-stylevars-9609-by-fisker" translate="no">​</a></h4>
<ul>
<li class=""><a href="https://github.com/vuejs/rfcs/blob/sfc-improvements/active-rfcs/0000-sfc-script-setup.md" target="_blank" rel="noopener noreferrer" class="">SFC Composition API Syntax Sugar (<code>&lt;script setup&gt;</code>)</a></li>
<li class=""><a href="https://github.com/vuejs/rfcs/blob/sfc-improvements/active-rfcs/0000-sfc-style-variables.md" target="_blank" rel="noopener noreferrer" class="">SFC State-driven CSS Variables (<code>&lt;style vars&gt;</code>)</a></li>
</ul>
<div class="language-vue codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-vue codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Input --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script setup="props, {emit }"&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;style vars="{color }"&gt;&lt;/style&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;div v-slot="{destructuring:{   a:{b}}}"/&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;div v-slot:name="{destructuring:{   a:{b}}}"/&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;div #default="{destructuring:{   a:{b}}}"/&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;slot slot-scope="{destructuring:{   a:{b}}}"/&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.1 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script setup="props, {emit }"&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;style vars="{color }"&gt;&lt;/style&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;div v-slot="{ destructuring: { a: { b } } }" /&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;div v-slot:name="{ destructuring: { a: { b } } }" /&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;div #default="{ destructuring: { a: { b } } }" /&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;slot</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      slot-scope="{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        destructuring: {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          a: { b },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      }"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    /&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;!-- Prettier 2.2 --&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;script setup="props, { emit }"&gt;&lt;/script&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;style vars="{ color }"&gt;&lt;/style&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;template&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;div</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      v-slot="{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        destructuring: {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          a: { b },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      }"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    /&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;div</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      v-slot:name="{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        destructuring: {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          a: { b },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      }"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    /&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;div</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      #default="{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        destructuring: {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          a: { b },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      }"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    /&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    &lt;slot</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      slot-scope="{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        destructuring: {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          a: { b },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        },</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      }"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    /&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  &lt;/div&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/template&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="handlebars-alpha">Handlebars (alpha)<a href="https://prettier.io/blog/2020/11/20/2.2.0#handlebars-alpha" class="hash-link" aria-label="Direct link to Handlebars (alpha)" title="Direct link to Handlebars (alpha)" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-unstable-newlines-after-textarea--9403-by-fisker-fixes-in-simple-html-tokenizer-by-rwjblue">Fix unstable newlines after <code>&lt;Textarea /&gt;</code> (<a href="https://github.com/prettier/prettier/pull/9403" target="_blank" rel="noopener noreferrer" class="">#9403</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>, fixes in <code>simple-html-tokenizer</code> by <a href="https://github.com/rwjblue" target="_blank" rel="noopener noreferrer" class="">@rwjblue</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-unstable-newlines-after-textarea--9403-by-fisker-fixes-in-simple-html-tokenizer-by-rwjblue" class="hash-link" aria-label="Direct link to fix-unstable-newlines-after-textarea--9403-by-fisker-fixes-in-simple-html-tokenizer-by-rwjblue" title="Direct link to fix-unstable-newlines-after-textarea--9403-by-fisker-fixes-in-simple-html-tokenizer-by-rwjblue" translate="no">​</a></h4>
<div class="language-handlebars codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-handlebars codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token block keyword" style="color:#00009f">//</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">Textarea</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">if</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Test</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">if</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">/</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Prettier</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">Textarea</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">if</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Test</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">if</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">/</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Prettier</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2.1</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token variable" style="color:#36acaa">second</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">format</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">Textarea</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">if</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Test</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">if</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">/</span><span class="token plain"> </span><span class="token variable" style="color:#36acaa">Prettier</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">&lt;</span><span class="token variable" style="color:#36acaa">Textarea</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">/</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">#</span><span class="token variable" style="color:#36acaa">if</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token variable" style="color:#36acaa">Test</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">/</span><span class="token variable" style="color:#36acaa">if</span><span class="token delimiter punctuation" style="color:#393A34">}}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="markdown">Markdown<a href="https://prettier.io/blog/2020/11/20/2.2.0#markdown" class="hash-link" aria-label="Direct link to Markdown" title="Direct link to Markdown" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="update-remark-math-to-301-escape-dollar-signs-only-if-originally-escaped-7938-by-fisker-and-thorn0">Update remark-math to 3.0.1; escape dollar signs only if originally escaped (<a href="https://github.com/prettier/prettier/pull/7938" target="_blank" rel="noopener noreferrer" class="">#7938</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a> and <a href="https://github.com/thorn0" target="_blank" rel="noopener noreferrer" class="">@thorn0</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#update-remark-math-to-301-escape-dollar-signs-only-if-originally-escaped-7938-by-fisker-and-thorn0" class="hash-link" aria-label="Direct link to update-remark-math-to-301-escape-dollar-signs-only-if-originally-escaped-7938-by-fisker-and-thorn0" title="Direct link to update-remark-math-to-301-escape-dollar-signs-only-if-originally-escaped-7938-by-fisker-and-thorn0" translate="no">​</a></h4>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Paragraph with $14 million.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Paragraph with $14 million.    But if more $dollars on the same line...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Paragraph with \$14 million.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Paragraph with $14 million.    But if more $dollars on the same line...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Paragraph with $14 million.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Paragraph with $14 million. But if more $dollars on the same line...</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-missing-blank-lines-in-fenced-code-blocks-lacking-the-closing-fence-8786-by-fisker">Fix missing blank lines in fenced code blocks lacking the closing fence (<a href="https://github.com/prettier/prettier/pull/8786" target="_blank" rel="noopener noreferrer" class="">#8786</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-missing-blank-lines-in-fenced-code-blocks-lacking-the-closing-fence-8786-by-fisker" class="hash-link" aria-label="Direct link to fix-missing-blank-lines-in-fenced-code-blocks-lacking-the-closing-fence-8786-by-fisker" title="Direct link to fix-missing-blank-lines-in-fenced-code-blocks-lacking-the-closing-fence-8786-by-fisker" translate="no">​</a></h4>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">require("prettier").format("```a\n\n\n\n", { parser: "markdown" });</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">'```a\n\n```\n'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">'```a\n\n\n\n```\n'</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="add-support-for-wiki-style-links-9275-by-iamrecursion">Add support for <code>[[wiki-style]]</code> links (<a href="https://github.com/prettier/prettier/pull/9275" target="_blank" rel="noopener noreferrer" class="">#9275</a> by <a href="https://github.com/iamrecursion" target="_blank" rel="noopener noreferrer" class="">@iamrecursion</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#add-support-for-wiki-style-links-9275-by-iamrecursion" class="hash-link" aria-label="Direct link to add-support-for-wiki-style-links-9275-by-iamrecursion" title="Direct link to add-support-for-wiki-style-links-9275-by-iamrecursion" translate="no">​</a></h4>
<ol>
<li class="">Support for <code>[[wiki-style]]</code> links ensures that they do not get broken by
the prettier formatting by being wrapped over multiple lines.</li>
<li class="">The contents of the link (between the <code>[[]]</code> brackets) are treated as raw
text. This is because the various tools that rely on the <code>[[]]</code> syntax do not
agree on what is allowable between them.</li>
</ol>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">If I have a prose that forces a wiki link to end up crossing the [[line width limit]] like this. It's wrapped into an invalid state.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">If I have a prose that forces a wiki link to end up crossing the [[line width</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">limit]] like this. It's wrapped into an invalid state.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">If I have a prose that forces a wiki link to end up crossing the</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[[line width limit]] like this. It's wrapped into an invalid state.</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="align-code-block-language-detection-with-other-popular-tools-9365-by-kachkaev">Align code block language detection with other popular tools (<a href="https://github.com/prettier/prettier/pull/9365" target="_blank" rel="noopener noreferrer" class="">#9365</a> by <a href="https://github.com/kachkaev" target="_blank" rel="noopener noreferrer" class="">@kachkaev</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#align-code-block-language-detection-with-other-popular-tools-9365-by-kachkaev" class="hash-link" aria-label="Direct link to align-code-block-language-detection-with-other-popular-tools-9365-by-kachkaev" title="Direct link to align-code-block-language-detection-with-other-popular-tools-9365-by-kachkaev" translate="no">​</a></h4>
<p>Since <a href="https://prettier.io/blog/2018/04/11/1.12.0.html#support-fenced-codeblock-lang-followed-by-attributes-4153httpsgithubcomprettierprettierpull4153-by-ikatyanghttpsgithubcomikatyang" target="_blank" rel="noopener noreferrer" class="">Prettier 1.12</a>, code blocks starting like <code>```js {something=something}</code> are detected as JavaScript ones and are therefore formatted.
Back in the day, not many tools used to separate the language from the metadata, so <a href="https://github.com/prettier/prettier/pull/4783" target="_blank" rel="noopener noreferrer" class="">it was decided</a> to make whitespace optional and thus detect <code>```js{something=something}</code> as JavaScript too.</p>
<p>With the release of <a href="https://github.com/remarkjs/remark" target="_blank" rel="noopener noreferrer" class="">Remark</a> v8 (which is used by Prettier), code block language detection and formatting became inconsistent in <a href="https://github.com/prettier/prettier/issues/9155" target="_blank" rel="noopener noreferrer" class="">several rare edge cases</a>.
Besides, <a href="https://github.com/gicentre/litvis/issues/50" target="_blank" rel="noopener noreferrer" class="">it was noticed</a> that Prettier‘s formatting behaviour mismatched syntax highlighting in VSCode.
To encourage consistency between different tools and to better align with the <a href="https://spec.commonmark.org/0.29/#fenced-code-blocks" target="_blank" rel="noopener noreferrer" class="">Commonmark spec</a>, use of whitespace between the language name and the metadata was made compulsory.</p>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">js {something=something}</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-js">console.log    (    "hello world"    );</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">js{something=something}</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-js">console.log    (    "hello world"    );</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">js {something=something}</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-js">console.log("hello world");</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">js{something=something}</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-js">console.log("hello world");</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">js {something=something}</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-js">console.log("hello world");</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token code punctuation" style="color:#393A34">```</span><span class="token code code-language">js{something=something}</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block language-js">console.log    (    "hello world"    );</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-extra-empty-line-added-after-empty-table-9654-by-fisker">Fix extra empty line added after empty table (<a href="https://github.com/prettier/prettier/pull/9654" target="_blank" rel="noopener noreferrer" class="">#9654</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-extra-empty-line-added-after-empty-table-9654-by-fisker" class="hash-link" aria-label="Direct link to fix-extra-empty-line-added-after-empty-table-9654-by-fisker" title="Direct link to fix-extra-empty-line-added-after-empty-table-9654-by-fisker" translate="no">​</a></h4>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Test line 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token table table-header-row punctuation" style="color:#393A34">|</span><span class="token table table-header-row table-header important"> Specify the selected option : </span><span class="token table table-header-row punctuation" style="color:#393A34">|</span><span class="token table table-header-row table-header important"> Option 1 </span><span class="token table table-header-row punctuation" style="color:#393A34">|</span><span class="token table table-header-row"></span><br></span><span class="token-line" style="color:#393A34"><span class="token table table-header-row"></span><span class="token table table-line punctuation" style="color:#393A34">|</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">-----------------------------</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">|</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">--------</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">|</span><span class="token table table-line"></span><br></span><span class="token-line" style="color:#393A34"><span class="token table table-line"></span><span class="token table table-data-rows"></span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Test line 6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Test line 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token table table-header-row punctuation" style="color:#393A34">|</span><span class="token table table-header-row table-header important"> Specify the selected option : </span><span class="token table table-header-row punctuation" style="color:#393A34">|</span><span class="token table table-header-row table-header important"> Option 1 </span><span class="token table table-header-row punctuation" style="color:#393A34">|</span><span class="token table table-header-row"></span><br></span><span class="token-line" style="color:#393A34"><span class="token table table-header-row"></span><span class="token table table-line punctuation" style="color:#393A34">|</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">-----------------------------</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">|</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">--------</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">|</span><span class="token table table-line"></span><br></span><span class="token-line" style="color:#393A34"><span class="token table table-line"></span><span class="token table table-data-rows"></span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Test line 6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Test line 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token table table-header-row punctuation" style="color:#393A34">|</span><span class="token table table-header-row table-header important"> Specify the selected option : </span><span class="token table table-header-row punctuation" style="color:#393A34">|</span><span class="token table table-header-row table-header important"> Option 1 </span><span class="token table table-header-row punctuation" style="color:#393A34">|</span><span class="token table table-header-row"></span><br></span><span class="token-line" style="color:#393A34"><span class="token table table-header-row"></span><span class="token table table-line punctuation" style="color:#393A34">|</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">-----------------------------</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">|</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">--------</span><span class="token table table-line"> </span><span class="token table table-line punctuation" style="color:#393A34">|</span><span class="token table table-line"></span><br></span><span class="token-line" style="color:#393A34"><span class="token table table-line"></span><span class="token table table-data-rows"></span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Test line 6</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mdx">MDX<a href="https://prettier.io/blog/2020/11/20/2.2.0#mdx" class="hash-link" aria-label="Direct link to MDX" title="Direct link to MDX" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-extra-empty-lines-in-jsx-9267-by-fisker">Fix extra empty lines in JSX (<a href="https://github.com/prettier/prettier/pull/9267" target="_blank" rel="noopener noreferrer" class="">#9267</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-extra-empty-lines-in-jsx-9267-by-fisker" class="hash-link" aria-label="Direct link to fix-extra-empty-lines-in-jsx-9267-by-fisker" title="Direct link to fix-extra-empty-lines-in-jsx-9267-by-fisker" translate="no">​</a></h4>
<div class="language-markdown codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-markdown codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Input --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> title</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Jsx</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">text</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">Jsx</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.1 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> title</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Jsx</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">text</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">Jsx</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">(Extra empty lines added after </span><span class="token code-snippet code keyword" style="color:#00009f">`&lt;Jsx&gt;`</span><span class="token plain"> and </span><span class="token code-snippet code keyword" style="color:#00009f">`&lt;/Jsx&gt;`</span><span class="token plain">)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!-- Prettier 2.2 --&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> title</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">Jsx</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">text</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">Jsx</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="yaml">YAML<a href="https://prettier.io/blog/2020/11/20/2.2.0#yaml" class="hash-link" aria-label="Direct link to YAML" title="Direct link to YAML" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="apply-trailingcomma-option-9665-by-fisker">Apply <code>trailingComma</code> option (<a href="https://github.com/prettier/prettier/pull/9665" target="_blank" rel="noopener noreferrer" class="">#9665</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#apply-trailingcomma-option-9665-by-fisker" class="hash-link" aria-label="Direct link to apply-trailingcomma-option-9665-by-fisker" title="Direct link to apply-trailingcomma-option-9665-by-fisker" translate="no">​</a></h4>
<p>When <code>--trailing-comma=none</code>, should not add trailing comma to flowMapping and flowSequence.</p>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">flow-mapping</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">"object-does-not-fit-within-print-width"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"------"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">"TEST"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"comma IS added here"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">flow-sequence</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"object-does-not-fit-within-print-width"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"------"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"TEST"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"comma IS added here"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">mapping</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">"object-does-not-fit-within-print-width"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"------"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">"TEST"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"comma IS added here"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">flow-sequence</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"object-does-not-fit-within-print-width"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"------"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"TEST"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"comma IS added here"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">flow-mapping</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">"object-does-not-fit-within-print-width"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"------"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">"TEST"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"comma IS added here"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">flow-sequence</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"object-does-not-fit-within-print-width"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"------"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"TEST"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"comma IS added here"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-comments-inside-flowmapping-and-flowsequence-9669-by-fisker">Fix comments inside <code>flowMapping</code> and <code>flowSequence</code> (<a href="https://github.com/prettier/prettier/pull/9669" target="_blank" rel="noopener noreferrer" class="">#9669</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-comments-inside-flowmapping-and-flowsequence-9669-by-fisker" class="hash-link" aria-label="Direct link to fix-comments-inside-flowmapping-and-flowsequence-9669-by-fisker" title="Direct link to fix-comments-inside-flowmapping-and-flowsequence-9669-by-fisker" translate="no">​</a></h4>
<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Input</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">b</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">b</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">b</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">b</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.1 (second format)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> b</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">b</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">b</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Prettier 2.2</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    a</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    b</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">b</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># prettier-ignore</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">b</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># comment</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="api-1">API<a href="https://prettier.io/blog/2020/11/20/2.2.0#api-1" class="hash-link" aria-label="Direct link to API" title="Direct link to API" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="stop-inferring-the-parser-to-be-json-for-jsonl-files-9371-by-fisker">Stop inferring the parser to be <code>json</code> for <code>.jsonl</code> files (<a href="https://github.com/prettier/prettier/pull/9371" target="_blank" rel="noopener noreferrer" class="">#9371</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#stop-inferring-the-parser-to-be-json-for-jsonl-files-9371-by-fisker" class="hash-link" aria-label="Direct link to stop-inferring-the-parser-to-be-json-for-jsonl-files-9371-by-fisker" title="Direct link to stop-inferring-the-parser-to-be-json-for-jsonl-files-9371-by-fisker" translate="no">​</a></h4>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 2.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier --check .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checking formatting...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error] bad.jsonl: SyntaxError: Unexpected token (2:1)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error]   1 | '{"type": "t/f", "head": "England", "relation": "invaded", "tail": "United States"}'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error] &gt; 2 | '{"type": "t/f", "head": "England", "relation": "attacked", "tail": "Baltimore"}'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error]     | ^</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error]   3 |</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">All matched files use Prettier code style!</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 2.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier --check .</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checking formatting...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">All matched files use Prettier code style!</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="flush-line-suffix-contents-at-the-end-of-document-9703-by-dangmai">Flush line suffix contents at the end of document (<a href="https://github.com/prettier/prettier/pull/9703" target="_blank" rel="noopener noreferrer" class="">#9703</a> by <a href="https://github.com/dangmai" target="_blank" rel="noopener noreferrer" class="">@dangmai</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#flush-line-suffix-contents-at-the-end-of-document-9703-by-dangmai" class="hash-link" aria-label="Direct link to flush-line-suffix-contents-at-the-end-of-document-9703-by-dangmai" title="Direct link to flush-line-suffix-contents-at-the-end-of-document-9703-by-dangmai" translate="no">​</a></h4>
<p>Prettier did not flush <a href="https://github.com/prettier/prettier/blob/main/commands.md#linesuffix" target="_blank" rel="noopener noreferrer" class="">line-suffix</a> contents at the end of the document if there was no trailing newline. This fix forces all of those contents to be flushed even without trailing newlines.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="cli">CLI<a href="https://prettier.io/blog/2020/11/20/2.2.0#cli" class="hash-link" aria-label="Direct link to CLI" title="Direct link to CLI" translate="no">​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="move-pre-commit-support-to-githubcompre-commitmirrors-prettier-8937-by-flochehab">Move <a href="https://github.com/pre-commit/pre-commit" target="_blank" rel="noopener noreferrer" class="">pre-commit</a> support to github.com/pre-commit/mirrors-prettier (<a href="https://github.com/prettier/prettier/pull/8937" target="_blank" rel="noopener noreferrer" class="">#8937</a> by <a href="https://github.com/FloChehab" target="_blank" rel="noopener noreferrer" class="">@FloChehab</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#move-pre-commit-support-to-githubcompre-commitmirrors-prettier-8937-by-flochehab" class="hash-link" aria-label="Direct link to move-pre-commit-support-to-githubcompre-commitmirrors-prettier-8937-by-flochehab" title="Direct link to move-pre-commit-support-to-githubcompre-commitmirrors-prettier-8937-by-flochehab" translate="no">​</a></h4>
<p><code>pre-commit</code> support has moved to <a href="https://github.com/pre-commit/mirrors-prettier" target="_blank" rel="noopener noreferrer" class="">https://github.com/pre-commit/mirrors-prettier</a>, please update your <code>.pre-commit-config.yaml</code> file .</p>
<div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49"> - repo: https://github.com/prettier/prettier</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa"> - repo: https://github.com/pre-commit/mirrors-prettier</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token deleted-sign deleted prefix deleted" style="color:#d73a49">-</span><span class="token deleted-sign deleted line" style="color:#d73a49">   rev: "2.2.0"</span><br></span><span class="token-line" style="color:#393A34"><span class="token deleted-sign deleted line" style="color:#d73a49"></span><span class="token inserted-sign inserted prefix inserted" style="color:#36acaa">+</span><span class="token inserted-sign inserted line" style="color:#36acaa">   rev: "v2.2.0"</span><br></span><span class="token-line" style="color:#393A34"><span class="token inserted-sign inserted line" style="color:#36acaa"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">   hooks:</span><br></span><span class="token-line" style="color:#393A34"><span class="token unchanged line"></span><span class="token unchanged prefix unchanged"> </span><span class="token unchanged line">    - id: prettier</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="fix-error-on-directories-and-files-with-numeric-names-9298-by-fisker">Fix: error on directories and files with numeric names (<a href="https://github.com/prettier/prettier/pull/9298" target="_blank" rel="noopener noreferrer" class="">#9298</a> by <a href="https://github.com/fisker" target="_blank" rel="noopener noreferrer" class="">@fisker</a>)<a href="https://prettier.io/blog/2020/11/20/2.2.0#fix-error-on-directories-and-files-with-numeric-names-9298-by-fisker" class="hash-link" aria-label="Direct link to fix-error-on-directories-and-files-with-numeric-names-9298-by-fisker" title="Direct link to fix-error-on-directories-and-files-with-numeric-names-9298-by-fisker" translate="no">​</a></h4>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ cat 1/index.js</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hello('world')</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 2.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[error] The "path" argument must be of type string. Received type number (1)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">// Prettier 2.2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ prettier 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hello("world");</span><br></span></code></pre></div></div>]]></content>
        <author>
            <name>Sosuke Suzuki</name>
            <uri>https://github.com/sosukesuzuki</uri>
        </author>
    </entry>
</feed>