Skip to content

Commit

Permalink
fix: TS plugin showing warning for global-error file's reset prop (
Browse files Browse the repository at this point in the history
…#48756)

The TS plugin incorrectly gives a warning for the `reset` prop in the `global-error.tsx` file. This was previously reported and fixed for the `error.tsx` file.
- #46573
- #46898

---

You can see a reproduction on [CodeSandbox](https://codesandbox.io/p/sandbox/summer-dawn-b0gydg?file=%2Fapp%2Flayout.tsx&selection=%5B%7B%22endColumn%22%3A16%2C%22endLineNumber%22%3A18%2C%22startColumn%22%3A16%2C%22startLineNumber%22%3A18%7D%5D) — `global-error.tsx`'s `reset` prop has the following warning: 

```
Props must be serializable for components in the "use client" entry file, "reset" is invalid. ts(71007)
```

I haven't filed an issue for this yet since this was a simple enough fix, but happy to create one if needed :)
  • Loading branch information
sreetamdas committed Apr 23, 2023
1 parent 1c007ce commit 0670023
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion packages/next/src/server/typescript/rules/client-boundary.ts
Expand Up @@ -40,6 +40,7 @@ const clientBoundary = {
const diagnostics: ts.Diagnostic[] = []

const isErrorFile = /[\\/]error\.tsx?$/.test(source.fileName)
const isGlobalErrorFile = /[\\/]global-error\.tsx?$/.test(source.fileName)

const props = node.parameters?.[0]?.name
if (props && ts.isObjectBindingPattern(props)) {
Expand All @@ -57,7 +58,7 @@ const clientBoundary = {
// There's a special case for the error file that the `reset` prop is allowed
// to be a function:
// https://github.com/vercel/next.js/issues/46573
if (!isErrorFile || propName !== 'reset') {
if (!(isErrorFile || isGlobalErrorFile) || propName !== 'reset') {
diagnostics.push({
file: source,
category: ts.DiagnosticCategory.Warning,
Expand Down

0 comments on commit 0670023

Please sign in to comment.