Skip to content

Guard @@toPrimitive usage in toPrimitive helper - #18284

Merged
nicolo-ribaudo merged 2 commits into
babel:mainfrom
nicolo-ribaudo:guard-to-primitive
Oct 5, 2026
Merged

nicolo-ribaudo merged 2 commits into
babel:mainfrom
nicolo-ribaudo:guard-to-primitive

Conversation

@nicolo-ribaudo

Copy link
Copy Markdown
Member
Q                       A
Fixed Issues? Fixes #1, Fixes #2
Patch: Bug Fix?
Major: Breaking Change?
Minor: New Feature?
Tests Added + Pass? Yes
Documentation PR Link
Any Dependency Changes?
License MIT

In most helpers before using Symbol.* we check that the Symbol global exists. We don't do it in only 4:

  • toPrimitive: this is used when compiling classes to es5, so it targets an es5 environment. We should add the guard (what this PR does), falling back to assuming that the object doesn't have a Symbol.toPrimitive property
  • wrapRegExp: used by the named capturing groups transform to hook into .replace behavior. There isn't much we can do without the symbol, but authors can disable the helper by passing runtime: false to the plugin.
  • applyDecs2311: reads Symbol.metadata. It's a new feature, we can expect authors to provide a polyfill.
  • usingCtx: reads Symbol.dispose. It's a new feature, we can expect authors to provide a polyfill.

@nicolo-ribaudo nicolo-ribaudo added PR: Bug Fix 🐛 A type of pull request used for our changelog categories 7.x: needs backport labels Oct 5, 2026
@babel-bot

babel-bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/62260

@pkg-pr-new

pkg-pr-new Bot commented Oct 5, 2026

Copy link
Copy Markdown

Open in StackBlitz

commit: dfccf39

@nicolo-ribaudo
nicolo-ribaudo merged commit 9b7f37e into babel:main Oct 5, 2026
57 checks passed
@nicolo-ribaudo
nicolo-ribaudo deleted the guard-to-primitive branch October 5, 2026 15:51
@babel-bot

Copy link
Copy Markdown
Collaborator

Backported to 7.x in #18287.

nicolo-ribaudo pushed a commit that referenced this pull request Oct 6, 2026
Regenerate 7.x-only fixtures embedding the toPrimitive helper.
nicolo-ribaudo added a commit that referenced this pull request Oct 6, 2026
* Guard `@@toPrimitive` usage in toPrimitive helper

backport of 9b7f37e

* Update fixtures after backporting #18284

Regenerate 7.x-only fixtures embedding the toPrimitive helper.

---------

Co-authored-by: Nicolò Ribaudo <hello@nicr.dev>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
brandhaug added a commit to brandhaug/b2b-saas-starter that referenced this pull request Oct 10, 2026
## pnpm-workspace.yaml (default)

## Dependency Updates

| Package | From | To | Type |
| --- | --- | --- | --- |
| `@babel/core` | 8.0.6 | 8.0.7 | patch |
| `@react-email/ui` | 6.11.0 | 6.11.1 | patch |
| `ai` | 7.0.128 | 7.0.130 | patch |
| `react-email` | 6.11.0 | 6.11.1 | patch |
| `shadcn` | 4.21.3 | 4.21.4 | patch |

## Release Notes

<details>
<summary><b>@<!---->babel/core</b> (8.0.6 → 8.0.7)</summary>

## v8.0.7 (2026-10-07)

Thanks @<!---->brunoborta, @<!---->CINC0S, @<!---->hoobnn, and
@<!---->jpradelle for your first PRs!

#### 🐛 Bug Fix
* `babel-helper-create-regexp-features-plugin`,
`babel-plugin-transform-dotall-regex`,
`babel-plugin-transform-unicode-sets-regex`, `babel-preset-env`
* [#18295](babel/babel#18295) Bump regexpu-core
to 6.5.3 ([@<!---->JLHwung](https://github.com/JLHwung))
* `babel-plugin-transform-for-of`
* [#18292](babel/babel#18292) Skip `for await`
in `transform-for-of`
([@<!---->brunoborta](https://github.com/brunoborta))
* `babel-helpers`, `babel-plugin-transform-async-generator-functions`,
`babel-runtime-corejs3`
* [#18283](babel/babel#18283) Fix
`asyncIterator` helper forwarding `.throw()` to `.return()`
([@<!---->brunoborta](https://github.com/brunoborta))
* `babel-parser`
* [#18288](babel/babel#18288) fix(parser): allow
await as a function expression name inside async arrow
([@<!---->JLHwung](https://github.com/JLHwung))
* `babel-helpers`, `babel-plugin-transform-class-properties`,
`babel-plugin-transform-modules-systemjs`, `babel-runtime-corejs3`
* [#18284](babel/babel#18284) Guard
`@@toPrimitive` usage in toPrimitive helper
([@<!---->nicolo-ribaudo](https://github.com/nicolo-ribaudo))
* `babel-plugin-transform-block-scoping`
* [#18195](babel/babel#18195) fix: closures in
for-loop init capture wrong binding
([@<!---->joelle-a-dev](https://github.com/joelle-a-dev))
* `babel-helper-create-class-features-plugin`,
`babel-plugin-transform-private-property-in-object`
* [#18265](babel/babel#18265) Return false for
`#x in` on static private fields before initialization
([@<!---->hoobnn](https://github.com/hoobnn))
* `babel-traverse`
* [#18151](babel/babel#18151) Evaluate
TypeScript expression wrappers in `NodePath#evaluate`
([@<!---->CINC0S](https://github.com/CINC0S))
  * [#18250](https://github

…[full notes](https://github.com/babel/babel/releases/tag/v8.0.7)

</details>

<details>
<summary><b>react-email</b> (6.11.0 → 6.11.1)</summary>

### Patch Changes

* 54769fc: Prevent `email export` from deleting the project, the home
directory, the email templates or the static assets when `--outDir`
points at them.
* 6926bac: `<Markdown>` now applies `markdownCustomStyles.th` to table
header cells. Header cells were previously styled with `td`, so any `th`
styles were ignored.

</details>

<details>
<summary><b>shadcn</b> (4.21.3 → 4.21.4)</summary>

### Patch Changes

- [#12189](shadcn-ui/ui#12189)
[`76fd499595ba7cc01f49d159bd7ac82d7aca8e63`](shadcn-ui/ui@76fd499)
Thanks [@<!---->shadcn](https://github.com/shadcn)! - Drop the ts-morph
dependency from @<!---->shadcn/registry.

- [#12184](shadcn-ui/ui#12184)
[`995c2cfff44c373bd210d451089726ec097ab917`](shadcn-ui/ui@995c2cf)
Thanks [@<!---->shadcn](https://github.com/shadcn)! - Run the icons and
asChild transformers without ts-morph.

- [#12160](shadcn-ui/ui#12160)
[`6efecd8fe9aa167886fe2cc0c05c5623a5bb5670`](shadcn-ui/ui@6efecd8)
Thanks [@<!---->shadcn](https://github.com/shadcn)! - Edit the Next.js
layout for font items without ts-morph, and skip it with a warning
instead of writing a broken layout.

- [#12188](shadcn-ui/ui#12188)
[`efa11781f756c86debb0392fbea4fe468250b41b`](shadcn-ui/ui@efa1178)
Thanks [@<!---->shadcn](https://github.com/shadcn)! - Rewrite imports
and crawl file imports without ts-morph.

- [#12177](shadcn-ui/ui#12177)
[`e8c3143b1cd191280befcd6c9538284bb43399a8`](shadcn-ui/ui@e8c3143)
Thanks [@<!---->shadcn](https://github.com/shadcn)! - Edit
tailwind.config without ts-morph, and skip it with a warning instead of
writing a broken config.

- [#12183](shadcn-ui/ui#12183)
[`f56bbd7282f0116a925a601cb6d7e0c3fede448b`](shadcn-ui/ui@f56bbd7)
Thanks [@<!---->shadcn](https://github.com/shadcn)! - Run the rsc,
import, CSS variable, cleanup, font and menu transformers without
ts-morph.

- [#12185](shadcn-ui/ui#12185)
[`4a90344c42dc9ae47494179065219377ff5f2a8f`](https://github.com/shadcn-ui/u

…[full
notes](https://github.com/shadcn-ui/ui/releases/tag/shadcn%404.21.4)

</details>

---
*This PR was auto-generated by
[catalog-update-action](https://github.com/brandhaug/catalog-update-action).*

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: Bug Fix 🐛 A type of pull request used for our changelog categories

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Sponsor
SponsoredKunjungi sekarang
Promo