Extra parentheses added for nullish coalescing operator in ternary expression
Open
@fisker is already working on this.
Since Jul 21, 2026.
help wanted
lang:javascript
- Dominant language
- JavaScript
- Stars
- 52.3k
- Forks
- 5k
- Avg merge
- 19h 2m
- Merged PRs (30d)
- 117
Description
Prettier v3.9.4
Playground link
--parser babel
Input:
const value = condition ? (
<Example /> // comment
) : (
"alpha" ?? "bravo"
);
const value = condition ? (
<Example /> // comment
) : (
"alpha" + "bravo"
);
Output:
const value = condition ? (
<Example /> // comment
) : (
("alpha" ?? "bravo")
);
const value = condition ? (
<Example /> // comment
) : (
"alpha" + "bravo"
);
Expected output:
const value = condition ? (
<Example /> // comment
) : (
"alpha" ?? "bravo"
);
const value = condition ? (
<Example /> // comment
) : (
"alpha" + "bravo"
);
(Same as input, unchanged.)
Why?
The nullish coalescing operator ends up in double parentheses even though the second (inner) pair is completely unnecessary. The second example shows the inconsistency with other operators. (The comment isn't actually necessary for the reproduction, it's just an easy way to force breaking, but a long line works just as well.)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.