palantir/blueprint

Class components are incompatible with NextJS v13 (App Router)

Open

#6263 opened on Jul 6, 2023

View on GitHub
 (12 comments) (4 reactions) (0 assignees)TypeScript (20,263 stars) (2,167 forks)batch import
Package: coreStatus: work in progressType: enhancementhelp wanted

Description

Environment

  • Package version(s): 5.0.1
  • Operating System: Windows 11
  • Browser name and version: Firefox Version 115

Code Sandbox

import { Button } from '@blueprintjs/core';

export default function Index() {
  return (
    <div className="">
      <h1>Home page</h1>
      <Button text='Refresh' intent='success' />
    </div>
  );
}

Steps to reproduce

Just run the NextJS app. It will throw following errors. I've tried different components still getting the same error.

Actual behavior

- error node_modules\tslib\tslib.es6.mjs (26:12) @ Module.__extends
- error Class extends value undefined is not a constructor or null

This might be caused by a React Class Component being rendered in a Server Component, React Class Components only works in Client Components. Read more: https://nextjs.org/docs/mes
sages/class-component-in-server-component
    at Module.__extends (webpack-internal:///(sc_server)/./node_modules/tslib/tslib.es6.mjs:58:54)
    at eval (webpack-internal:///(sc_server)/./node_modules/@blueprintjs/core/lib/cjs/common/abstractComponent.js:28:13)
    at eval (webpack-internal:///(sc_server)/./node_modules/@blueprintjs/core/lib/cjs/common/abstractComponent.js:106:2)
    at Object.(sc_server)/./node_modules/@blueprintjs/core/lib/cjs/common/abstractComponent.js (D:\projects\eco-pwa-next\.next\server\app\page.js:1668:1)
    at __webpack_require__ (D:\projects\eco-pwa-next\.next\server\webpack-runtime.js:33:42)
    at eval (webpack-internal:///(sc_server)/./node_modules/@blueprintjs/core/lib/cjs/common/index.js:28:27)
    at Object.(sc_server)/./node_modules/@blueprintjs/core/lib/cjs/common/index.js (D:\projects\eco-pwa-next\.next\server\app\page.js:1745:1)
    at __webpack_require__ (D:\projects\eco-pwa-next\.next\server\webpack-runtime.js:33:42)
    at eval (webpack-internal:///(sc_server)/./node_modules/@blueprintjs/core/lib/cjs/index.js:28:22)
    at Object.(sc_server)/./node_modules/@blueprintjs/core/lib/cjs/index.js (D:\projects\eco-pwa-next\.next\server\app\page.js:2944:1) {
  name: 'TypeError',
  digest: undefined
}

Contributor guide