You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Markdown: Cap ordered list mark at 999,999,999 (#19351 by @tats-u)
CommonMark parsers only support ordered list item numbers up to 999,999,999.
With this change, Prettier now caps the ordered list item number at 999,999,999 to ensure that the output is correctly parsed as an ordered list by CommonMark parsers. Numbers larger than 999,999,999 are not parsed as list item numbers and are left unchanged in the output:
<!-- Input -->999999998. text
999999998. text
999999998. text
999999998. text
1234567890123456789012) text
<!-- Prettier 3.9.4 -->999999998. text
999999999. text
1000000000. text
1000000001. text
1234567890123456789012) text
<!-- Prettier 3.9.5 -->999999998. text
999999999. text
999999999. text
999999999. text
1234567890123456789012) text
Markdown: Avoid corrupting empty link with title (#19487 by @andersk)
Do not remove <> from an inline link or image with an empty URL and a title, as this removal would change its interpretation.
CSS: Prevent addition space in type() with + (#19516 by @bigandy)
This fixes the addition space before + in CSS type() declaration. For example type(<number>+) was being converted into type(<number> +) which is invalid CSS and does not work.
Miscellaneous: Preserving comments' placement property (#19567 by @Janther)
Prettier@3.9.0 deleted an undocumented property on comments, which was already used by plugins, comment.placement is now available again after comment attach.
Flow: Stop enforcing empty module declaration to break (#19568 by @fisker)
Less: Fix adjacent block comments being corrupted (#19574 by @kovsu)
// Input/* a *//* b *//* a */* {
color: red;
}
// Prettier 3.9.4/* a *//* b *//* a * { color: red;}// Prettier 3.9.5/* a *//* b *//* a */* {
color: red;
}
JavaScript: Handle dangling comments in SwitchStatement (#19581 by @fisker)
Markdown: Fix blank lines between list items and nested sub-lists being removed in Markdown/MDX (#17746 by @byplayer)
Prettier was removing blank lines between list items and their nested sub-lists, converting loose lists into tight lists and changing their semantic meaning.
<!-- Input -->- a
- b
- c
- d
<!-- Prettier 3.8.3 -->- a
- b
- c
- d
<!-- Prettier 3.8.4 -->- a
- b
- c
- d
Include available printers in plugin type declarations (#18706 by @porada)
// Inputimport*asprettierPluginEstreefrom"prettier/plugins/estree";// Prettier 3.8.0// Property 'printers' does not exist on type 'typeof import("prettier/plugins/estree")'. ts(2339)prettierPluginEstree.printers.estree;//=> any// Prettier 3.8.1prettierPluginEstree.printers.estree;//=> PrinterprettierPluginEstree.printers["estree-json"];//=> Printer
JavaScript: Fix string print when switching quotes (#18351 by @fisker)
// Inputconsole.log("A descriptor\\'s .kind must be \"method\" or \"field\".")// Prettier 3.7.1console.log('A descriptor\\'s.kindmustbe"method"or"field".');
// Prettier 3.7.2console.log('A descriptor\\\'s .kind must be "method" or "field".');
JavaScript: Preserve quote for embedded HTML attribute values (#18352 by @kovsu)
// Inputconsthtml=/* HTML */` <div class="${styles.banner}"></div> `;// Prettier 3.7.1consthtml=/* HTML */` <div class=${styles.banner}></div> `;// Prettier 3.7.2consthtml=/* HTML */` <div class="${styles.banner}"></div> `;
TypeScript: Fix comment in empty type literal (#18364 by @fisker)
Markdown: Add missing blank line around code block (#17675 by @fisker)
<!-- Input -->1. Some text, and code block below, with newline after code block
```yaml---foo: bar``` 1. Another 2. List<!-- Prettier 3.6.1 -->1. Some text, and code block below, with newline after code block```yaml---foo: bar``` 1. Another 2. List<!-- Prettier 3.6.2 -->1. Some text, and code block below, with newline after code block```yaml---foo: bar``` 1. Another 2. List
Miscellaneous: Avoid closing files multiple times (#17665 by @43081j)
When reading a file to infer the interpreter from a shebang, we use the n-readlines library to read the first line in order to get the shebang.
This library closes files when it reaches EOF, and we later try close the same
files again. We now close files only if n-readlines did not already close
them.
In Prettier 3.5.0, we added module-sync condition to package.json, so that require("prettier") can use ESM version, but turns out it doesn't work if CommonJS and ESM plugins both imports builtin plugins. To solve this problem, we decide simply remove the module-sync condition, so require("prettier") will still use the CommonJS version, we'll revisit until require(ESM) feature is more stable.
Prettier 3.5 uses a different cache format than previous versions, Prettier 3.5.0 crashes when reading existing cache file, Prettier 3.5.1 fixed the problem.
Support dockercompose and github-actions-workflow in VSCode (#17101 by @remcohaszing)
Prettier now supports the dockercompose and github-actions-workflow languages in Visual Studio Code.
Treat U+30A0 & U+30FB in Katakana Block as CJK (#16796 by @tats-u)
Prettier doesn't treat U+30A0 & U+30FB as Japanese. U+30FB is commonly used in Japanese to represent the delimitation of first and last names of non-Japanese people or “and”. The following “C言語・C++・Go・Rust” means “C language & C++ & Go & Rust” in Japanese.
<!-- Input (--prose-wrap=never) -->
C言
語
・
C++
・
Go
・
Rust
<!-- Prettier 3.4.1 -->
C言語・ C++ ・ Go ・ Rust
<!-- Prettier 3.4.2 -->
C言語・C++・Go・Rust
U+30A0 can be used as the replacement of the - in non-Japanese names (e.g. “Saint-Saëns” (Charles Camille Saint-Saëns) can be represented as “サン゠サーンス” in Japanese), but substituted by ASCII hyphen (U+002D) or U+FF1D (full width hyphen) in many cases (e.g. “サン=サーンス” or “サン=サーンス”).
Fix comments print on class methods with decorators (#16891 by @fisker)
This bug fix is not language-specific. You may see similar change in any languages. This fixes regression in 3.4.0 so change caused by it should yield same formatting as 3.3.3.
Safe to merge — this PR performs a routine devDependency upgrade of prettier from 3.2.5 to 3.8.3 with no runtime impact. The change is confined to package.json and the bun.lockb lockfile, both of which are expected artifacts of a dependency bump. Since prettier is a code-formatting tool used only during development and has no presence in production bundles, there is no risk to application correctness, security, or performance.
Key Findings:
prettier is a devDependency used solely for code formatting; it is never bundled into production output, so version changes carry zero runtime risk.
The bun.lockb update is the expected, deterministic counterpart to the package.json version bump, confirming the lockfile is kept in sync — no floating or unresolved dependencies introduced.
No review comments or heuristic issues were flagged across the two changed files, and the change scope is minimal and well-understood.
Upgrades prettier devDependency from 3.2.5 to 3.9.6 and syncs the Bun lockfile.
package.json: prettier version updated from 3.2.5 → 3.9.6
bun.lockb: Lockfile regenerated to reflect updated dependency tree
Confidence Score: 5/5 - Safe to Merge
Safe to merge — this PR performs a routine devDependency bump of prettier from 3.2.5 to 3.9.6 with no runtime impact whatsoever. The change is strictly limited to the formatting toolchain and does not affect any application logic, API surface, or production bundle. The bun.lockb lockfile regeneration is expected and appropriate to keep the dependency tree consistent with the updated package.json.
Key Findings:
prettier is a devDependency used exclusively for code formatting, meaning no production code or runtime behavior is affected by this upgrade.
The version jump from 3.2.5 to 3.9.6 spans several minor releases in the 3.x line, all of which maintain formatting compatibility; any formatting differences would surface as style-only changes in subsequent formatting runs, not logic errors.
The bun.lockb binary lockfile update is the correct and necessary companion change to the package.json version bump, ensuring reproducible installs across environments.
No review comments were raised and heuristic analysis found zero issues of any severity — this is a clean, low-risk dependency maintenance PR.
Files requiring special attention
package.json
renovateBot
changed the title
Update dependency prettier to v3.8.3
Update dependency prettier to v3.8.4
Jun 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
3.2.5→3.9.6Release Notes
prettier/prettier (prettier)
v3.9.6Compare Source
v3.9.5Compare Source
diff
Markdown: Cap ordered list mark at 999,999,999 (#19351 by @tats-u)
CommonMark parsers only support ordered list item numbers up to 999,999,999.
With this change, Prettier now caps the ordered list item number at 999,999,999 to ensure that the output is correctly parsed as an ordered list by CommonMark parsers. Numbers larger than 999,999,999 are not parsed as list item numbers and are left unchanged in the output:
Markdown: Avoid corrupting empty link with title (#19487 by @andersk)
Do not remove
<>from an inline link or image with an empty URL and a title, as this removal would change its interpretation.Less: Remove extra spaces after
[in map lookups (#19503 by @kovsu)CSS: Prevent addition space in
type()with+(#19516 by @bigandy)This fixes the addition space before
+in CSStype()declaration. For exampletype(<number>+)was being converted intotype(<number> +)which is invalid CSS and does not work.Less: Remove spaces between merge markers and colons (#19517 by @kovsu)
Markdown: Preserve wiki links with aliases (#19527 by @kovsu)
TypeScript: Fix comments being dropped on shorthand
typeimport/export specifiers (#19565 by @kirkwaiblinger)Miscellaneous: Preserving comments'
placementproperty (#19567 by @Janther)Prettier@3.9.0 deleted an undocumented property on comments, which was already used by plugins,
comment.placementis now available again after comment attach.Flow: Stop enforcing empty module declaration to break (#19568 by @fisker)
Angular: Support expression for exhaustive typechecking (#19571 by @fisker)
TypeScript: Ignore comments inside mapped type when checking type parameter comments (#19572 by @fisker)
Less: Fix adjacent block comments being corrupted (#19574 by @kovsu)
JavaScript: Handle dangling comments in
SwitchStatement(#19581 by @fisker)TypeScript: Remove space in comment-only object type (#19583 by @fisker)
v3.9.4Compare Source
v3.9.3Compare Source
v3.9.2Compare Source
v3.9.1Compare Source
v3.9.0Compare Source
diff
🔗 Release Notes
v3.8.5Compare Source
v3.8.4Compare Source
diff
Markdown: Fix blank lines between list items and nested sub-lists being removed in Markdown/MDX (#17746 by @byplayer)
Prettier was removing blank lines between list items and their nested sub-lists, converting loose lists into tight lists and changing their semantic meaning.
v3.8.3Compare Source
diff
SCSS: Prevent trailing comma in
if()function (#18471 by @kovsu)v3.8.2Compare Source
diff
Angular: Support Angular v21.2 (#18722, #19034 by @fisker)
Exhaustive typechecking with
@default never;arrow functionandinstanceofexpressions.v3.8.1Compare Source
diff
Include available
printersin plugin type declarations (#18706 by @porada)v3.8.0Compare Source
diff
🔗 Release Notes
v3.7.4Compare Source
diff
LWC: Avoid quote around interpolations (#18383 by @kovsu)
TypeScript: Fix comment inside union type gets duplicated (#18393 by @fisker)
TypeScript: Fix unstable comment print in union type comments (#18395 by @fisker)
v3.7.3Compare Source
diff
API: Fix
prettier.getFileInfo()change that breaks VSCode extension (#18375 by @fisker)An internal refactor accidentally broke the VSCode extension plugin loading.
v3.7.2Compare Source
diff
JavaScript: Fix string print when switching quotes (#18351 by @fisker)
JavaScript: Preserve quote for embedded HTML attribute values (#18352 by @kovsu)
TypeScript: Fix comment in empty type literal (#18364 by @fisker)
v3.7.1Compare Source
diff
API: Fix performance regression in doc printer (#18342 by @fisker)
Prettier 3.7.0 can be very slow when formatting big files, the regression has been fixed.
v3.7.0Compare Source
diff
🔗 Release Notes
v3.6.2Compare Source
diff
Markdown: Add missing blank line around code block (#17675 by @fisker)
v3.6.1Compare Source
diff
TypeScript: Allow const without initializer (#17650, #17654 by @fisker)
Miscellaneous: Avoid closing files multiple times (#17665 by @43081j)
When reading a file to infer the interpreter from a shebang, we use the
n-readlineslibrary to read the first line in order to get the shebang.This library closes files when it reaches EOF, and we later try close the same
files again. We now close files only if
n-readlinesdid not already closethem.
v3.6.0Compare Source
diff
🔗 Release Notes
v3.5.3Compare Source
diff
Flow: Fix missing parentheses in
ConditionalTypeAnnotation(#17196 by @fisker)v3.5.2Compare Source
diff
Remove
module-synccondition (#17156 by @fisker)In Prettier 3.5.0, we added
module-synccondition topackage.json, so thatrequire("prettier")can use ESM version, but turns out it doesn't work if CommonJS and ESM plugins both imports builtin plugins. To solve this problem, we decide simply remove themodule-synccondition, sorequire("prettier")will still use the CommonJS version, we'll revisit untilrequire(ESM)feature is more stable.v3.5.1Compare Source
diff
Fix CLI crash when cache for old version exists (#17100 by @sosukesuzuki)
Prettier 3.5 uses a different cache format than previous versions, Prettier 3.5.0 crashes when reading existing cache file, Prettier 3.5.1 fixed the problem.
Support dockercompose and github-actions-workflow in VSCode (#17101 by @remcohaszing)
Prettier now supports the
dockercomposeandgithub-actions-workflowlanguages in Visual Studio Code.v3.5.0Compare Source
diff
🔗 Release Notes
v3.4.2Compare Source
diff
Treat U+30A0 & U+30FB in Katakana Block as CJK (#16796 by @tats-u)
Prettier doesn't treat U+30A0 & U+30FB as Japanese. U+30FB is commonly used in Japanese to represent the delimitation of first and last names of non-Japanese people or “and”. The following “C言語・C++・Go・Rust” means “C language & C++ & Go & Rust” in Japanese.
U+30A0 can be used as the replacement of the
-in non-Japanese names (e.g. “Saint-Saëns” (Charles Camille Saint-Saëns) can be represented as “サン゠サーンス” in Japanese), but substituted by ASCII hyphen (U+002D) or U+FF1D (full width hyphen) in many cases (e.g. “サン=サーンス” or “サン=サーンス”).Fix comments print on class methods with decorators (#16891 by @fisker)
Fix non-idempotent formatting (#16899 by @seiyab)
This bug fix is not language-specific. You may see similar change in any languages. This fixes regression in 3.4.0 so change caused by it should yield same formatting as 3.3.3.
v3.4.1Compare Source
diff
Remove unnecessary parentheses around assignment in
v-on(#16887 by @fisker)v3.4.0Compare Source
diff
🔗 Release Notes
v3.3.3Compare Source
diff
Add parentheses for nullish coalescing in ternary (#16391 by @cdignam-segment)
This change adds clarity to operator precedence.
Add parentheses for decorator expressions (#16458 by @y-schneider)
Prevent parentheses around member expressions or tagged template literals from being removed to follow the stricter parsing rules of TypeScript 5.5.
Support
@letdeclaration syntax (#16474 by @sosukesuzuki)Adds support for Angular v18
@letdeclaration syntax.Please see the following code example. The
@letdeclaration allows you to define local variables within the template:For more details, please refer to the excellent blog post by the Angular Team: Introducing @let in Angular.
We also appreciate the Angular Team for kindly answering our questions to implement this feature.
v3.3.2Compare Source
diff
Fix handlebars path expressions starts with
@(#16358 by @Princeyadav05)v3.3.1Compare Source
diff
Preserve empty lines in front matter (#16347 by @fisker)
Preserve explicit language in front matter (#16348 by @fisker)
Avoid line breaks in import attributes (#16349 by @fisker)
v3.3.0Compare Source
diff
🔗 Release Notes
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.