docs: record react-* modernization (helmet/i18n/bootstrap/router) + deferred leaflet & BS5

UPGRADE.md dependency-debt table and PENDIENTE.md updated to reflect the
5 shipped phases and the two deferred sub-projects (react-leaflet 1.8->4
and the Bootstrap 4->5 CSS/JS jump), with rationale for each deferral.
Final state: helmet/i18next/react-bootstrap/react-router warnings all
gone from the console; only react-leaflet (deferred) and our own
defaultProps/findDOMNode remain. REST smoke byte-identical.
This commit is contained in:
vjrj 2026-07-21 13:05:05 +02:00
parent e2d13ca64c
commit 6e28bf3545
2 changed files with 35 additions and 19 deletions

View file

@ -9,19 +9,23 @@ Lo que falta, agrupado. Ver `UPGRADE.md` para el detalle de lo ya hecho.
## 1. Modernización de librerías react-* antiguas (deuda de front grande)
Funcionan en React 18 por compatibilidad heredada, pero ensucian la consola en
desarrollo (no en producción) y **bloquean el salto a React 19**. Orden y riesgo:
desarrollo (no en producción) y **bloquean el salto a React 19**. Estado:
| Lib | Actual | Objetivo | Riesgo |
|---|---|---|---|
| react-helmet | 5.2 | react-helmet-async | bajo |
| react-i18next + i18next | 7.4 / 10.5 | 11+ / moderno | medio (mecánico, muchos ficheros) |
| react-bootstrap + reactstrap | 0.31 / 5.0-alpha | 2 / 9 | alto (Bootstrap 3→5, renombra componentes y **afecta al SCSS**) |
| react-router-dom | 4.2 | 6/7 | **alto** (API totalmente distinta) |
| react-leaflet + leaflet | 1.8 / 1.3 | 4 / moderno | **alto** (reescritura hooks, sin `leafletElement`/refs) |
| Lib | De → A | Estado |
|---|---|---|
| react-helmet | 5.2 → react-helmet-async 2 | ✅ hecho |
| react-i18next + i18next | 7.4/10.5 → 14/23 | ✅ hecho |
| react-bootstrap | 0.31 → 2 | ✅ hecho (CSS sigue en Bootstrap 4) |
| reactstrap + 3 deps muertas | — | ✅ eliminadas (0 usos) |
| react-router-dom | 4.2 → 6.30 | ✅ hecho (history 5, HOC `withRouterCompat`) |
| **react-leaflet + leaflet** | 1.8/1.3 → 4/1.9 | ⏸️ **diferida** (mapa = feature central; 4 plugins v1-only sin equivalente v4; ver UPGRADE.md) |
| **Bootstrap CSS/JS** | 4.1 → 5 | ⏸️ **diferida** (carrusel/navbar jQuery BS4; ver UPGRADE.md) |
Prompt de arranque preparado (pedir al asistente "el prompt de las libs react").
El smoke REST **no cubre** nada de esto → la red real es la verificación visual
en navegador (rutas: `/`, `/fires`, `/fire/archive/<hex>`, `/login`, `/subscriptions`).
Lo verificado en navegador tras cada lib: `/`, `/fires`, `/fire/archive/<hex>`,
`/login`, `/subscriptions` + consola. Los warnings de librería que bloqueaban
React 19 quedan reducidos a: react-leaflet (diferida) y código propio
(`defaultProps` en componentes función, un `findDOMNode` en blaze-react-component).
El smoke REST siguió byte-idéntico en cada paso.
---
@ -45,9 +49,14 @@ en navegador (rutas: `/`, `/fires`, `/fire/archive/<hex>`, `/login`, `/subscript
- **i18n de cuentas (`meteor-accounts-t9n`, T9n):** paquete antiguo aún usado
(Login, VerifyEmail, i18n). Verificar que funciona en Meteor 3; traducción
gallega (gl) incompleta (varios TODO en `i18n.js`).
- **SCSS acoplado a Bootstrap 3:** al subir react-bootstrap a v2 (Bootstrap 5),
revisar `new-age.scss`, `custom.scss`, `bootstrap-overrides.scss` y las clases
de layout (Grid/Row/Col).
- **Salto Bootstrap 4→5 (CSS/JS) pendiente:** react-bootstrap ya está en v2 y
corre sobre el CSS Bootstrap 4 actual (`alexwine:bootstrap-4`) con un único
shim `.form-label` en `forms.scss`. El salto a Bootstrap 5 npm está diferido
porque el carrusel del home (`bootstrap-carousel-swipe`, jQuery/BS4) y el
collapse del navbar dependen del JS jQuery de BS4 (`data-toggle`, `data-slide`).
Al hacerlo: importar `bootstrap@5` SCSS+JS, reescribir el carrusel (BS5 trae
swipe nativo → quitar el plugin), `data-toggle``data-bs-toggle`,
`ml-auto``ms-auto`, revisar `new-age.scss`/`custom.scss`/`bootstrap-overrides.scss`.
- **Limpieza menor:** migración 217 `// TODO remove falsepositives lowercase
collection`; `prerender.js` gating comentado; sección per-fire del sitemap
eliminada (era código muerto tras `firesMapEnabled=false`).