# PRNext 0.1.20: menos trabajo, más control

PRNext 0.1.20-alpha está disponible. Esta versión aborda dos costos que aumentan con una aplicación: el trabajo realizado innecesariamente y la dificultad de comprender el comportamiento de producción. Una página pública puede comenzar con su shell nativo, una edición de Acción del Servidor puede prescindir de pestañas no relacionadas y las cachés del compilador tienen un presupuesto de retención compartido.

El lanzamiento también fortalece los controles de implementación con un origen HTTPS explícito, controles de estado que rechazan redirecciones, reversión después de un cambio de tráfico y métricas protegidas. Las nuevas rutas experimentales permanecen deshabilitadas de forma predeterminada. Cada uno sirve para un caso de uso específico con condiciones de activación definidas, alternativas o errores explícitos.

## Inicie una página PPR antes de que se inicialice Node

Una página PPR combina una parte preparada durante la compilación con una continuación React que produce contenido dinámico. Con experimental.nativePprShell, el servidor Rust puede enviar el shell certificado antes de iniciar el trabajador de Node. Luego, la continuación se reanuda a partir del mismo artefacto comprobado en lugar de construir una respuesta inicial independiente.

Esta ruta cubre documentos GET concretos de App Router PPR sin cookies, autorización o cadenas de consulta. Requiere componentes de caché. Las solicitudes que involucran middleware, reescrituras, basePath, nonces CSP o encabezados de navegación de vuelo conservan la representación normal. Los shells de parámetros genéricos, Edge y cachés externos también permanecen fuera de este alcance.

```js
export default {
  cacheComponents: true,
  experimental: {
    nativePprShell: true
  }
};
```

La cáscara debe estar intacta y sin caducar. Cualquier invalidación persistente deshabilita esta optimización de instantáneas de compilación, incluso entre reinicios, sin deshabilitar PPR. Una solicitud que ya utiliza una instantánea finaliza con el mismo artefacto. Las respuestas siguen siendo privadas y no se almacenan: este mecanismo no convierte las páginas autenticadas en contenido público ni reemplaza la autorización.

## Actualizar las rutas afectadas por una Acción del Servidor

Editar una acción utilizada en una pantalla de facturación no tiene por qué interrumpir una pestaña abierta en una parte no relacionada del producto. PRNext compara gráficos de dependencia antes y después de la edición para identificar rutas que importan la acción directamente o a través de sus dependencias.

Cuando se establece ese alcance, la actualización del desarrollo puede apuntar a las rutas afectadas. Una pestaña salvada aplica su generación diferida antes de navegar a una ruta modificada. Las generaciones de servidores siguen publicándose en su totalidad y una mutación pendiente nunca se vuelve a enviar para acompañar una actualización.

Un gráfico desconocido o incompleto conserva una actualización global. Los cambios de configuración, ruta, tiempo de ejecución y vinculación también lo hacen, junto con el middleware, las reescrituras y ciertas rutas internacionalizadas, paralelas o interceptoras. La orientación depende del alcance establecido en lugar de una suposición sobre el archivo que acaba de guardar.

## Elija Oxc para el compilador React sin que cada proyecto lo instale

El compilador React obtiene un backend experimental Oxc junto con el backend de Babel existente. La salida del navegador y la representación del servidor del componente de cliente de aplicación utilizan transformaciones independientes. Las identidades de caché incluyen el backend, la versión del compilador y el modo cliente o SSR para que un resultado no pueda reutilizarse en el contexto incorrecto.

Babel sigue siendo el valor predeterminado cuando reactCompiler está habilitado. Para seleccionar Oxc, instale explícitamente oxc-transform-react@0.157.0 en el proyecto de la aplicación con sus dependencias nativas opcionales habilitadas. Incluso un CLI global resuelve este compilador desde la aplicación. Un compilador o enlace nativo faltante o incompatible produce un error explícito; PRNext nunca cambia silenciosamente los servidores.

```js
export default {
  reactCompiler: {
    backend: 'oxc'
  }
};
```

El alcance sigue siendo los componentes y ganchos elegibles del proyecto. Los componentes del servidor, las acciones del servidor, los paquetes npm y el gráfico del servidor de páginas permanecen fuera de esta transformación. Se conservan los mapas de origen y la actualización rápida. El siguiente informe del compilador identifica el diagnóstico a nivel de archivo y de backend; el Oxc API no proporciona los eventos necesarios para contar funciones optimizadas como lo hace Babel.

Los proyectos que conservan Babel o deshabilitan el compilador React ya no instalan Oxc para uso interno de PRNext. Seleccionar un compilador escrito en Rust no es una aceleración medida para su aplicación: compare la compilación, la hidratación y las interacciones con su propio código.

## Emitir estilos independientes en paralelo

experimental.parallelBuilds apunta a una etapa de compilación de App Router específica. Después del descubrimiento ordenado de dependencias, PRNext congela los planes de hojas de estilo, deduplica resultados y distribuye trabajos independientes. La vinculación sigue siendo determinista para preservar el orden de las hojas de estilo.

La simultaneidad depende del recuento de CPU, la memoria disponible y los límites máximos configurados. Este ejemplo permite como máximo dos trabajadores con un presupuesto de admisión estimado de 512 MiB. El presupuesto no es un límite RSS obligatorio para el código de terceros.

```js
export default {
  experimental: {
    parallelBuilds: {
      maxWorkers: 2,
      maxMemoryMb: 512
    }
  }
};
```

Los ganchos de paquetes web personalizados, los cargadores y las canalizaciones PostCSS, así como las devoluciones de llamadas de Sass, conservan la ejecución en serie. Si un trabajo falla, PRNext detiene nuevas admisiones, liquida el trabajo ya iniciado y descarta la compilación provisional. La última versión publicada sigue estando disponible. El manifiesto registra el recuento real de trabajos de hojas de estilo y la simultaneidad seleccionada, distinguiendo una opción habilitada del trabajo paralelo realmente realizado.

## Leer una carga antes de que termine de llegar

Con experimental.streamingRequestBodies, un controlador de ruta del enrutador de la aplicación de nodo puede comenzar a leer Request.body antes de que llegue toda la carga. El transporte nativo negocia esta capacidad con el trabajador y envía como máximo una trama 64 KiB por crédito de lector. El consumidor controla el ritmo de entrega.

Los trabajadores sin esa capacidad utilizan la ruta protegida existente. Las acciones del servidor, las API de páginas y las solicitudes que ya están almacenadas en el búfer del middleware también conservan su comportamiento anterior. El límite total de solicitudes sigue siendo 32 MiB y las reservas de admisión existentes aún se aplican. Esta opción no promete ni una reducción general en el uso del montón V8 ni una mayor concurrencia de admisión de memoria.

```js
export default {
  experimental: {
    streamingRequestBodies: true
  }
};
```

El controlador puede ejecutarse antes de que se detecte un truncamiento o una carga excesiva. Validar el ingreso completo y la autorización antes de realizar un efecto comercial. La cancelación o el regreso anticipado cierran el carril de carga sin reproducir la mutación ni sacrificar el host del Nodo sano. Para una importación de datos, analice progresivamente y confirme la transacción una vez que se cumplan todas las condiciones.

## Dar un presupuesto a las cachés del compilador

Las cachés del compilador comparten un objetivo de retención 256 MiB por proyecto, configurable a través de compilaciónCache.maxDiskSize. La política se ejecuta después de las compilaciones, incluidas las fallidas, y después de un cierre de desarrollo limpio. Limita la retención de expedientes elegibles; los trabajadores activos, los archivos ocupados o los análisis incompletos pueden aplazar la recuperación.

prnext cache informa estadísticas de archivos reconocidos. Su modo de ejecución en seco muestra una vista previa de la poda sin eliminar datos. Este ejemplo inspecciona las cachés y luego simula un destino 64 MiB desde una aplicación que utiliza esta versión de PRNext.

```sh
npx --no-install prnext cache --json
npx --no-install prnext cache --prune --dry-run --max-bytes 67108864 --json
```

Los registros JSON grandes utilizan compresión con validación de tamaño decodificado, clave y suma de comprobación. Los registros sin procesar existentes siguen siendo legibles; las entradas corruptas o incompatibles se convierten en errores de caché. La publicación sigue siendo atómica y el fallo de la caché no se convierte en una dependencia obligatoria de la compilación.

Detenga el desarrollo antes de aplicar una poda. Se excluyen las bases de datos en tiempo de ejecución, data.sqlite3, cachés de páginas e imágenes y el historial de invalidación. Se trata de un objetivo de retención más que de una cuota de disco duro. El desalojo puede ralentizar una compilación posterior o requerir que se descargue nuevamente una fuente.

## Mantenga menos dependencias y artefactos redundantes

PRNext incluye la entrada Node create() de Fontkit con licencias de procedencia y dependencia. TTF, OTF/CFF, WOFF, WOFF2, TTC, DFONT y las fuentes variables permanecen cubiertas sin instalar el árbol de dependencia externo completo de Fontkit para este uso. La integración interna no reemplaza las importaciones de Fontkit realizadas por su aplicación.

Una compilación de producción mantiene un renderizador OpenGraph cuando es necesario. El análisis de gráficos compilados acotados puede omitirlo solo cuando se certifica que ImageResponse no se utiliza. El borde, el desarrollo, los módulos externos desconocidos y la carga computada mantienen un comportamiento conservador. Los nombres, las licencias y la carga relativa de WASM se conservan.

El espacio de ejecución se recupera de la ruta de solicitud mediante pequeños pasos SQLite y mantenimiento limitado de archivos huérfanos. Los lectores y publicaciones activos están protegidos. Las bases de datos existentes mantienen su formato y no se ejecuta VACUUM completo durante una solicitud. Los directorios temporales de construcción y desarrollo también tienen diarios de propiedad: solo los propietarios locales verificados como abandonados son elegibles para la recuperación, mientras que las copias de seguridad necesarias para la recuperación permanecen intactas.

Para implementaciones independientes, implemente el directorio independiente completo sin copiar también la compilación normal al lado. Esto evita duplicar los artefactos que el marco acaba de ensamblar.

## Eliminar pases innecesarios en las compilaciones y el navegador.

Las importaciones de fragmentos de aplicaciones se reescriben en la memoria antes de su primera escritura. El descubrimiento del directorio principal se comparte dentro de una compilación, y los resúmenes Oxc limitados reutilizan directivas y exportan información sin retener grandes árboles de sintaxis. Las transformaciones que necesitan Babel mantienen su camino actual.

En el navegador, la adopción de un grupo de hojas de estilo crea un índice temporal de enlaces existentes en lugar de escanear el documento para cada hoja. El enrutamiento Rust toma prestados caminos y segmentos más comunes. La captura de vuelo elimina una copia intermedia solo para los buffers de propiedad interna donde la propiedad lo permite, conservando copias defensivas para los productores externos.

Las sondas de compresión de vuelo se vuelven asincrónicas con simultaneidad limitada. En la saturación, las respuestas utilizan el vuelo normal. Las precargas PPR reutilizan la decodificación base64 nativa cuando esté disponible, conservando el respaldo del navegador. Estos cambios reducen las operaciones identificadas; no miden de forma independiente la latencia HTTP ni la duración completa de la compilación.

## Preservar HTTPS y cuentas separadas en estado de cliente

Detrás de un proxy inverso, la reconstrucción de un HTTP URL puede interrumpir una redirección, una cookie segura o una devolución de llamada de autenticación. server.publicOrigin ahora define el origen externo canónico para las URL de solicitud y las redirecciones. Tiene prioridad sobre el reenvío de encabezados.

server.trustedProxies limita las direcciones IP o redes CIDR de servidores proxy que se conectan directamente a PRNext. Sólo un par TCP permitido puede proporcionar el protocolo y el host reenviados. Esta regla no valida una cadena completa de IP de cliente. Reemplace el dominio y las direcciones de ejemplo con los de su implementación y luego reconstruya el artefacto que guarda estas configuraciones.

```js
export default {
  server: {
    publicOrigin: 'https://example.com',
    trustedProxies: ['127.0.0.1', '::1']
  },
  navigationCache: {
    authCookies: [
      'session-cookie-name',
      '__Secure-session-cookie-name'
    ]
  }
};
```

Los nombres de las cookies deben coincidir con su biblioteca de autenticación, incluidas sus variantes seguras. Con esta política, una identidad modificada o desconocida requiere un documento nuevo antes de que se adopten los diseños o páginas conservados. Una identidad de la misma cuenta recién verificada puede conservar su borrador. Las vistas previas PPR esperan esa verificación y los modelos totalmente estáticos utilizan una solicitud de documento.

El límite también protege el cambio de cuenta y la restauración del historial. Pruebe la cuenta A, cierre sesión y luego la cuenta B en la misma pestaña: los accesorios de diseño antiguos y el borrador privado de A no deben aparecer para B. La aplicación sigue siendo responsable de autorizar cada lectura y mutación del servidor protegido.

## Verificar una instancia después de cambiar de tráfico

Un redireccionamiento 302 a una página de inicio de sesión no establece el estado de la aplicación. Las sondas ahora requieren respuestas HTTP 200 completas y limitadas. El punto final nativo reservado /_prnext/health confirma que el servidor puede aceptar tráfico y deja de estar disponible tan pronto como comienza el cierre ordenado.

La preparación nativa no certifica ni un trabajador de nodo bajo demanda ni una base de datos. Una ruta de aplicación dedicada, anónima y de solo lectura puede verificar las dependencias necesarias para atender el tráfico. Configúrelo como ruta de salud para una aplicación persistente. Las rutas de salud previamente guardadas permanecen sin cambios: una ruta / antigua que redirige necesita un reemplazo explícito con esa ruta dedicada.

Después de un cambio de tráfico exitoso, el administrador conserva la instancia anterior durante una ventana de monitoreo, 15 segundos de forma predeterminada. Tres fallas de estado consecutivas o una salida de reemplazo inesperada pueden provocar un regreso a la instancia anterior si aún está en buen estado. Las respuestas ya iniciadas se agotan, pero no se reproduce ninguna solicitud o mutación. Una reversión de código no deshace una escritura SQL ni una migración de esquema.

## Comprender los fallos y los efectos ya cometidos.

La referencia de SaaS demuestra la idempotencia transaccional en el ámbito de la cuenta. Si una escritura tiene éxito pero se pierde su respuesta, un reintento explícito con la misma clave produce solo una escritura. La restricción y la transacción pertenecen a la aplicación; el marco no puede inferir que otro envío es seguro.

Los escenarios de calificación ejercen PostgreSQL interrupción y recuperación, reclamos simultáneos de la misma clave, pérdida de respuesta después de COMMIT, bloqueo SQLite y SQLITE_FULL en una base de datos desechable, y un bloqueo y reinicio real de Redis. Complementan los flujos de trabajo nominales exitosos con situaciones en las que el resultado empresarial debe seguir siendo comprensible.

Las métricas HTTP son opcionales y están protegidas por portador a través de PRNEXT_METRICS_TOKEN. Exponen duraciones, solicitudes activas, resultados, saturación de admisiones y eventos de trabajadores con etiquetas acotadas. Sigue raspando en privado. Las pérdidas de exportaciones de OTLP, los desbordamientos de colas y los rechazos parciales tienen contadores; Los diagnósticos de nodo también utilizan el canal prnext.telemetry para permanecer observables cuando el recopilador de seguimiento no está disponible.

El monitoreo de dependencia verifica diariamente npm, Cargo y los componentes de fuentes y renderizadores integrados, junto con actualizaciones semanales y procedencia registrada. Una auditoría en el momento de la publicación sigue siendo una instantánea y no un reemplazo para monitorear nuevos avisos de seguridad.

## Lo que establecen las medidas

El estudio de almacenamiento es anterior al candidato final y utiliza Windows x64, el nodo 24.22.1, que coincide con React 19.3.1 pares y el mismo ejecutable nativo público. El tamaño recién instalado cae de 159.05 a 141.98 MiB con 13 paquetes menos. Estas cifras no miden los archivos 0.1.20-alpha finales y no se transfieren automáticamente a otra plataforma.

En 28 compilaciones de dos pequeños corpus sintéticos SSR, las medianas cálidas emparejadas reducen los bytes de compilación lógica en 67.79% sin OpenGraph y 26.61% con OpenGraph. Los bytes de la caché del compilador disminuyen aproximadamente 64.4%. El tiempo de construcción observado del muro API aumenta en 13.94 y 15.85 ms. Se trata de archivos lógicos en lugar de bloques de disco asignados y una compensación de almacenamiento en lugar de una mejora general de la velocidad.

La campaña SaaS a la que se hace referencia en las notas técnicas se ejecuta durante dos horas en la fuente de calificación 2323dc55 bajo los límites observados de dos CPU y 5 GiB. Realiza 9,238 escrituras SQL y 11 rotaciones de trabajadores con 235 procesos verificados y muestras de descriptores de archivos. Once sondas de sólo lectura fallan durante las rotaciones inducidas y permanecen registradas; no se reproduce ninguna mutación. Estas observaciones conservan su fuente ejecutada y no se presentan como prueba de los archivos finales.

Estos resultados documentan mecanismos y cargas de trabajo controladas. No establecen ni una ganancia general de latencia HTTP ni una reducción general de la memoria, ausencia de fugas o SLA de producción. Las notas técnicas vinculadas a este artículo conservan las condiciones y limitaciones de las campañas.

## Prepare una implementación con su aplicación real

Con los paquetes coincidentes instalados, prnext check --production --json examina la configuración de implementación, la deriva de artefactos, la retención del estado autenticado y las opciones experimentales. Proporciona diagnóstico antes de cambiar de tráfico; no puede reemplazar las rutas, formularios y devoluciones de llamadas específicos de su producto.

```sh
npm install @thomas.f/prnext@0.1.20-alpha react@19.3.1 react-dom@19.3.1 react-server-dom-webpack@19.3.1
npx --no-install prnext check --production --json
npx --no-install prnext typecheck
npx --no-install prnext build
npx --no-install prnext output --json
```

PRNext 0.1.20-alpha requiere el nodo ^22.23.4, ^24.22.1 o >=26.12.1 con React, React DOM y react-server-dom-webpack alineados en 19.3.1. Mantenga las dependencias nativas opcionales habilitadas y las versiones del marco y del paquete nativo idénticas. La verificación de tipos explícita necesita la instalación TypeScript y tsconfig de la aplicación. Estos requisitos no reemplazan la aplicación de nuevos parches de seguridad para cada dependencia.

Después de cambiar las versiones, reconstruya y reinicie la aplicación. Para pstart, primero detenga el supervisor con pdown usando el mismo PRNEXT_PM_HOME, luego actualice y reconstruya cada aplicación habilitada que comparta ese supervisor antes de reiniciarlo. El prearranque por sí solo no recarga el código de supervisor. Conserve la implementación anterior y las migraciones de bases de datos compatibles para permitir una devolución.

PRNext sigue siendo un alfa con compatibilidad parcial con Next.js. Habilite rutas experimentales por separado y pruebe un flujo de trabajo representativo: carga en frío, estilos, navegación, cambio de cuenta, cargas interrumpidas y una interrupción de dependencia. La guía de actualización asociada detalla estas comprobaciones y los límites de cada opción.

## Sources

[PRNext 0.1.20-alpha: published release](https://github.com/Lorkydey/PRNext/releases/tag/v0.1.20-alpha)

[PRNext 0.1.20: release source](https://github.com/Lorkydey/PRNext/tree/8061e6d4e78f35cc82935c7ae28d8244968217ef)

[Experimental performance paths and React Compiler](https://github.com/Lorkydey/PRNext/blob/8061e6d4e78f35cc82935c7ae28d8244968217ef/packages/prnext/docs/ai/compatibility.md)

[Compiler storage and deployment guide](https://github.com/Lorkydey/PRNext/blob/8061e6d4e78f35cc82935c7ae28d8244968217ef/packages/prnext/docs/ai/deployment.md)

[Health checks, rollback and monitoring](https://github.com/Lorkydey/PRNext/blob/8061e6d4e78f35cc82935c7ae28d8244968217ef/docs/PRODUCTION-OPERATIONS.md)

[Upgrade guide from 0.1.19 to 0.1.20](https://github.com/Lorkydey/PRNext/blob/9758ed8f551228f50a8c12e2ff218910adf02573/docs/UPGRADING-0.1.20.md)

[Measurement conditions and limits](https://github.com/Lorkydey/PRNext/blob/9758ed8f551228f50a8c12e2ff218910adf02573/RELEASE.md#measurements-and-their-scope)

[Two-hour controlled SaaS qualification](https://github.com/Lorkydey/PRNext/actions/runs/41805320748)

Publicado: 2026-11-05

Modificado: 2026-11-05

Autor: PRNext

---

Idioma: es

Canonical: https://prnext.dev/es/blog/prnext-0-1-20-performance-storage-production

Index: https://prnext.dev/llms.txt
