This is an automated email from the ASF dual-hosted git repository. rusackas pushed a commit to branch chore/ts-migration-dashboard in repository https://gitbox.apache.org/repos/asf/superset.git
commit fce0b2ea96bc61513d7f037e3f18b59f898891c9 Author: Evan Rusackas <[email protected]> AuthorDate: Tue Feb 3 07:18:17 2026 +0100 chore(frontend): remove deprecated dependencies and update documentation - Remove prop-types (unused since TypeScript migration) - Remove react-hot-loader, @hot-loader/react-dom (replaced by React Refresh) - Remove babel-plugin-typescript-to-proptypes (obsolete with full TypeScript) - Update use-query-params to ^2.2.2 (required for adapters/react-router-5) - Update docs: Enzyme → React Testing Library, MainPreset.js → .ts - Clean up webpack vendors chunk and babel.config.js Note: Run `npm install` in superset-frontend to complete the dependency update. Co-Authored-By: Claude Opus 4.5 <[email protected]> --- docs/developer_portal/contributing/development-setup.md | 2 +- docs/developer_portal/contributing/howtos.md | 2 +- superset-frontend/babel.config.js | 3 --- superset-frontend/package.json | 6 +----- superset-frontend/src/preamble.ts | 6 ------ superset-frontend/src/views/App.tsx | 3 +-- superset-frontend/webpack.config.js | 6 ------ 7 files changed, 4 insertions(+), 24 deletions(-) diff --git a/docs/developer_portal/contributing/development-setup.md b/docs/developer_portal/contributing/development-setup.md index fdddbf1af55..a543eb24442 100644 --- a/docs/developer_portal/contributing/development-setup.md +++ b/docs/developer_portal/contributing/development-setup.md @@ -788,7 +788,7 @@ pytest ./link_to_test.py ### Frontend Testing -We use [Jest](https://jestjs.io/) and [Enzyme](https://airbnb.io/enzyme/) to test TypeScript/JavaScript. Tests can be run with: +We use [Jest](https://jestjs.io/) and [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) to test TypeScript. Tests can be run with: ```bash cd superset-frontend diff --git a/docs/developer_portal/contributing/howtos.md b/docs/developer_portal/contributing/howtos.md index cb52bd5b4c9..e4469dfb07a 100644 --- a/docs/developer_portal/contributing/howtos.md +++ b/docs/developer_portal/contributing/howtos.md @@ -100,7 +100,7 @@ npm link superset-plugin-chart-hello-world ``` 7. **Import and register in Superset**: -Edit `superset-frontend/src/visualizations/presets/MainPreset.js` to include your plugin. +Edit `superset-frontend/src/visualizations/presets/MainPreset.ts` to include your plugin. ## Testing diff --git a/superset-frontend/babel.config.js b/superset-frontend/babel.config.js index fc1acf1bab4..9689190c92f 100644 --- a/superset-frontend/babel.config.js +++ b/superset-frontend/babel.config.js @@ -52,9 +52,6 @@ module.exports = { ['@babel/plugin-transform-private-methods', { loose: true }], ['@babel/plugin-transform-nullish-coalescing-operator', { loose: true }], ['@babel/plugin-transform-runtime', { corejs: 3 }], - // only used in packages/superset-ui-core/src/chart/components/reactify.tsx - ['babel-plugin-typescript-to-proptypes', { loose: true }], - 'react-hot-loader/babel', [ '@emotion/babel-plugin', { diff --git a/superset-frontend/package.json b/superset-frontend/package.json index 61113fe9d81..1b0ff7f6e46 100644 --- a/superset-frontend/package.json +++ b/superset-frontend/package.json @@ -178,7 +178,6 @@ "mustache": "^4.2.0", "nanoid": "^5.1.6", "ol": "^7.5.2", - "prop-types": "^15.8.1", "query-string": "6.14.1", "re-resizable": "^6.11.2", "react": "^17.0.2", @@ -189,7 +188,6 @@ "react-dnd-html5-backend": "^11.1.3", "react-dom": "^17.0.2", "react-google-recaptcha": "^3.1.0", - "react-hot-loader": "^4.13.1", "react-intersection-observer": "^10.0.2", "react-json-tree": "^0.20.0", "react-lines-ellipsis": "^0.16.1", @@ -217,7 +215,7 @@ "urijs": "^1.19.8", "use-event-callback": "^0.1.0", "use-immer": "^0.11.0", - "use-query-params": "^1.1.9", + "use-query-params": "^2.2.2", "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz", "yargs": "^17.7.2" }, @@ -242,7 +240,6 @@ "@cypress/react": "^8.0.2", "@emotion/babel-plugin": "^11.13.5", "@emotion/jest": "^11.14.2", - "@hot-loader/react-dom": "^17.0.2", "@istanbuljs/nyc-config-typescript": "^1.0.1", "@mihkeleidast/storybook-addon-source": "^1.0.1", "@playwright/test": "^1.58.0", @@ -293,7 +290,6 @@ "babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-jsx-remove-data-test-id": "^3.0.0", "babel-plugin-lodash": "^3.3.4", - "babel-plugin-typescript-to-proptypes": "^2.0.0", "baseline-browser-mapping": "^2.9.19", "cheerio": "1.2.0", "concurrently": "^9.2.1", diff --git a/superset-frontend/src/preamble.ts b/superset-frontend/src/preamble.ts index 5fce7ccab02..4595e822ebd 100644 --- a/superset-frontend/src/preamble.ts +++ b/superset-frontend/src/preamble.ts @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ -import { setConfig as setHotLoaderConfig } from 'react-hot-loader'; import { configure, LanguagePack } from '@apache-superset/core/ui'; import { makeApi, initFeatureFlags, SupersetClient } from '@superset-ui/core'; import { extendedDayjs as dayjs } from '@superset-ui/core/utils/dates'; @@ -40,11 +39,6 @@ import 'dayjs/plugin/localizedFormat'; configure(); -// Set hot reloader config -if (process.env.WEBPACK_MODE === 'development') { - setHotLoaderConfig({ logLevel: 'debug', trackTailUpdates: false }); -} - // Grab initial bootstrap data const bootstrapData = getBootstrapData(); diff --git a/superset-frontend/src/views/App.tsx b/superset-frontend/src/views/App.tsx index f4d301558a8..87df93f8b28 100644 --- a/superset-frontend/src/views/App.tsx +++ b/superset-frontend/src/views/App.tsx @@ -17,7 +17,6 @@ * under the License. */ import { Suspense, useEffect } from 'react'; -import { hot } from 'react-hot-loader/root'; import { BrowserRouter as Router, Switch, @@ -110,4 +109,4 @@ const App = () => ( </Router> ); -export default hot(App); +export default App; diff --git a/superset-frontend/webpack.config.js b/superset-frontend/webpack.config.js index 14e9171aa6b..dc88c2f16f7 100644 --- a/superset-frontend/webpack.config.js +++ b/superset-frontend/webpack.config.js @@ -224,7 +224,6 @@ if (isDevMode) { // A Superset webpage normally includes two JS bundles in dev, `theme.ts` and // the main entrypoint. Only the main entry should have the dev server client, // otherwise the websocket client will initialize twice, creating two sockets. - // Ref: https://github.com/gaearon/react-hot-loader/issues/141 PREAMBLE.unshift( `webpack-dev-server/client?http://${devserverHost}:${devserverPort}`, ); @@ -355,16 +354,11 @@ const config = { `/node_modules/(${[ 'react', 'react-dom', - 'prop-types', - 'react-prop-types', - 'prop-types-extra', 'redux', 'react-redux', - 'react-hot-loader', 'react-sortable-hoc', 'react-table', 'react-ace', - '@hot-loader.*', 'webpack.*', '@?babel.*', 'lodash.*',
