create-app: migrate to React 18

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2024-01-17 20:53:19 +01:00
parent c043396c27
commit aeec29caf0
6 changed files with 30 additions and 15 deletions
+9
View File
@@ -0,0 +1,9 @@
---
'@backstage/create-app': patch
---
Updated `packages/app` as well as the root `package.json` type resolutions to use React v18.
The `@testing-library/*` dependencies have also been updated to the ones compatible with React v18, and the test at `packages/app/src/App.test.tsx` had been updated to use more modern patterns that work better with these new versions.
For information on how to migrate existing apps to React v18, see the [migration guide](https://backstage.io/docs/tutorials/react18-migration)
+6 -3
View File
@@ -15,7 +15,7 @@
*/
import React from 'react';
import { renderWithEffects } from '@backstage/test-utils';
import { render, waitFor } from '@testing-library/react';
import App from './App';
describe('App', () => {
@@ -42,7 +42,10 @@ describe('App', () => {
] as any,
};
const rendered = await renderWithEffects(<App />);
expect(rendered.baseElement).toBeInTheDocument();
const rendered = render(<App />);
await waitFor(() => {
expect(rendered.baseElement).toBeInTheDocument();
});
});
});
@@ -42,8 +42,8 @@
"typescript": "~5.2.0"
},
"resolutions": {
"@types/react": "^17",
"@types/react-dom": "^17"
"@types/react": "^18",
"@types/react-dom": "^18"
},
"prettier": "@spotify/prettier-config",
"lint-staged": {
@@ -42,8 +42,8 @@
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"history": "^5.0.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router": "^6.3.0",
"react-router-dom": "^6.3.0",
"react-use": "^17.2.4"
@@ -51,10 +51,10 @@
"devDependencies": {
"@backstage/test-utils": "^{{version '@backstage/test-utils'}}",
"@playwright/test": "^1.32.3",
"@testing-library/jest-dom": "^5.10.1",
"@testing-library/react": "^12.1.3",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^14.0.0",
"@testing-library/user-event": "^14.0.0",
"@testing-library/dom": "^8.0.0",
"@testing-library/dom": "^9.0.0",
"@types/react-dom": "*",
"cross-env": "^7.0.0"
},
@@ -1,5 +1,5 @@
import React from 'react';
import { renderWithEffects } from '@backstage/test-utils';
import { render, waitFor } from '@testing-library/react';
import App from './App';
describe('App', () => {
@@ -20,7 +20,10 @@ describe('App', () => {
] as any,
};
const rendered = await renderWithEffects(<App />);
expect(rendered.baseElement).toBeInTheDocument();
const rendered = render(<App />);
await waitFor(() => {
expect(rendered.baseElement).toBeInTheDocument();
});
});
});
@@ -1,6 +1,6 @@
import '@backstage/cli/asset-types';
import React from 'react';
import ReactDOM from 'react-dom';
import ReactDOM from 'react-dom/client';
import App from './App';
ReactDOM.render(<App />, document.getElementById('root'));
ReactDOM.createRoot(document.getElementById('root')!).render(<App />);