fix: version 2.2.3 -- auto-reload al tomar control el service worker nuevo

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-09-22 12:34:10 -05:00
parent ee72b52b13
commit 62f94b09ee
5 changed files with 23 additions and 3 deletions
+7
View File
@@ -1,5 +1,12 @@
# Changelog - project.linkedcorp.net # Changelog - project.linkedcorp.net
## [2.2.3] - 2026-09-22
### Fixed
- Al actualizar (ya sea con el botón nuevo o por deploy manual), la pestaña abierta seguía
mostrando JS/CSS viejo hasta hacer F5 a mano, aunque el servidor ya tuviera la versión nueva
— el service worker tomaba control solo pero no refrescaba la página. Ahora se refresca sola
en cuanto el service worker nuevo toma control.
## [2.2.2] - 2026-09-22 ## [2.2.2] - 2026-09-22
### Fixed ### Fixed
- El botón "Actualizar" fallaba en el build del frontend: heredaba `NODE_ENV=production` del - El botón "Actualizar" fallaba en el build del frontend: heredaba `NODE_ENV=production` del
+1 -1
View File
@@ -1 +1 @@
2.2.2 2.2.3
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "project-linkedcorp-backend", "name": "project-linkedcorp-backend",
"version": "2.2.2", "version": "2.2.3",
"private": true, "private": true,
"type": "module", "type": "module",
"main": "src/server.js", "main": "src/server.js",
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "project-linkedcorp-frontend", "name": "project-linkedcorp-frontend",
"private": true, "private": true,
"version": "2.2.2", "version": "2.2.3",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
+13
View File
@@ -11,6 +11,19 @@ installGlobalErrorReporter();
// nada al usuario (no hay riesgo de mostrar una version vieja de la UI por mucho tiempo). // nada al usuario (no hay riesgo de mostrar una version vieja de la UI por mucho tiempo).
registerSW({ immediate: true }); registerSW({ immediate: true });
// skipWaiting+clientsClaim (activados por autoUpdate) hacen que el service worker nuevo tome
// control solo, pero eso NO refresca la pagina ya abierta -- el usuario seguia viendo JS/CSS
// viejo hasta un F5 manual. Con esto, en cuanto el nuevo SW toma control, se refresca sola una
// vez (la bandera evita un loop si el evento dispara mas de una vez).
if ('serviceWorker' in navigator) {
let reloaded = false;
navigator.serviceWorker.addEventListener('controllerchange', () => {
if (reloaded) return;
reloaded = true;
window.location.reload();
});
}
ReactDOM.createRoot(document.getElementById('root')).render( ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode> <React.StrictMode>
<App /> <App />