chore: Update with-rollup example (#13718)
## Summary
Daily automated maintenance for the `with-rollup` example. All direct
dependencies, the package-manager pin, and the Node engine are now at
exact latest stable versions, with required best-practice migrations
applied.
### Version updates
| Package | Before | After |
| --- | --- | --- |
| `pnpm` (packageManager) | 8.15.6 | 11.21.0 |
| `turbo` | ^2.9.6 | 2.10.9 |
| `eslint` | ^8.57.0 | 10.8.1 |
| `prettier` | ^3.2.5 | 3.9.6 |
| `typescript` | 5.5.4 | 7.0.2 |
| `react` / `react-dom` | ^18.2.0 | 19.2.8 |
| `@types/node` | ^20.11.24 | 26.2.0 |
| `@types/react` / `@types/react-dom` | ^18.2.x | 19.2.18 / 19.2.4 |
| `rollup` | ^4.12.0 | 4.62.4 |
| `@rollup/plugin-typescript` | ^11.1.6 | replaced by
`@rollup/plugin-swc` 0.4.1 + `@swc/core` 1.15.47 |
| `@vercel/style-guide`, `@typescript-eslint/*`,
`eslint-config-next`-era config | legacy eslintrc stack | replaced with
flat-config stack (`@eslint/js` 10.0.1, `@babel/eslint-parser` 8.0.1,
`@next/eslint-plugin-next` 16.3.0, `eslint-plugin-react-hooks` 7.1.1,
`eslint-plugin-react` 7.37.5, `eslint-config-prettier` 10.1.8,
`eslint-config-turbo` 2.10.9, `eslint-plugin-only-warn` 1.2.1, `globals`
17.9.0) |
| `engines.node` (root) | — | >=24.19.0 |
`next` (16.3.0) was already current. Exact pins throughout; no ranges
introduced.
### Best-practice migrations
- **ESLint 8 → 10 (flat config):** deleted
`.eslintrc.js`/`.eslintrc.cjs` and the legacy `@repo/eslint-config`
extends-based files; the config package is now an ESM flat-config
package exporting `./base`, `./next-js`, and `./react-internal`. Apps
consume it via `eslint.config.mjs`; `next lint` (removed in Next.js 16)
replaced with `eslint . --max-warnings 0`.
- **TypeScript 7 (native compiler):** `typescript@7` no longer ships the
legacy JS compiler API. `typescript-eslint` (peer-capped at `<6.1.0`)
was replaced with `@babel/eslint-parser` + `@babel/preset-typescript` +
`@babel/plugin-syntax-jsx` for syntax linting, and
`@rollup/plugin-typescript` (crashes on TS 7) was replaced with the
official `@rollup/plugin-swc` (automatic JSX runtime, ESM output
preserved). `tsconfig` `target: es5` raised to `ES2017` (TS 7 dropped
ES5).
- **eslint-plugin-react on ESLint 10:** the plugin's component rules
crash on ESLint 10 (`context.getFilename` removal), so only the
compatible `react/jsx-uses-vars` rule is enabled; core
`eslint:recommended`, `@next/next` core-web-vitals, and `react-hooks`
recommended rules provide the remaining coverage.
- **pnpm 11:** lockfile regenerated via `pnpm install` (lockfileVersion
9.0); `@swc/core` build script approved through pnpm 11-native
`allowBuilds` in `pnpm-workspace.yaml`.
- **Docs:** README description of `@repo/eslint-config` updated to match
the new stack; `apps/web/next-env.d.ts` regenerated by Next.js 16.
### turbo.json
Audited — already on the Turborepo 2 task format with correct `build`
outputs (`dist/**`, `.next/**`), `lint`, and persistent `dev`; no
changes required.
### Validation (all non-persistent tasks pass)
- `pnpm run build` — ✅ `@repo/ui` (Rollup + SWC) and `web` (Next.js
16.3.0 Turbopack, TypeScript 7 type-check)
- `pnpm run lint` — ✅ `eslint . --max-warnings 0`, zero findings in both
packages
- `pnpm run format` — ✅ Prettier reports all files unchanged/clean
- Post-update version audit — ✅ every dependency, `packageManager`, and
`engines.node` at latest stable
Note: pnpm prints an `Unsupported engine` warning in this sandbox (Node
v24.17.0 vs the new `>=24.19.0` floor); it is advisory only and does not
affect installs or tasks.
---------
Co-authored-by: vercel-gh-bot-3[bot] <282332853+vercel-gh-bot-3[bot]@users.noreply.github.com>
Co-authored-by: Anthony Shew <anthony.shew@vercel.com>
Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>