PRNext 0.1.18: estado de página conservado y un tiempo de ejecución de producción más sólido

PRNext 0.1.18-alpha mejora lo que sucede entre páginas, compilaciones e implementaciones. Puede volver a una página con su estado de formulario intacto, priorizar una navegación real y reutilizar más trabajo de compilación. En el servidor, las cachés compartidas y los límites de recursos brindan más control sobre el trabajo admitido para cada solicitud.

Esta versión también agrega un comando de creación de proyectos, soporte para el compilador TypeScript 7 instalado en su aplicación y una integración opcional con el compilador oficial React. Las secciones siguientes explican los cambios por caso de uso, seguidas del registro de cambios y las comprobaciones de la aplicación.

Comience con un proyecto que pueda ejecutar

El comando prnext create prepara una aplicación App Router mínima con sus archivos, scripts de desarrollo y configuración. TypeScript es el valor predeterminado; --js crea un proyecto JavaScript. El resultado le brinda un punto de partida consistente para el desarrollo, la producción y el servicio de la aplicación.

La creación sólo acepta un directorio faltante o completamente vacío. Se niega a reemplazar un proyecto existente. La opción --no-install escribe archivos sin instalar dependencias ni acceder a la red, incluso cuando se agrega un proyecto a un espacio de trabajo con su propio administrador de paquetes.

Terminal
npx @thomas.f/prnext create my-app
cd my-app
npm run dev

Estos comandos requieren PRNext 0.1.18-alpha o posterior.

Volver a una página sin empezar de nuevo

En App Router, PRNext retiene ramas inactivas a través de la actividad React. Regresar a un destino autorizado bajo el mismo diseño montado puede restaurar el estado de un componente, como un filtro seleccionado, un formulario parcialmente completado o un panel abierto. Los efectos se detienen mientras la rama está oculta.

El presupuesto predeterminado es cuatro sucursales inactivas durante dos minutos, compartidas entre los diseños relevantes. Este es un límite de entrada y tiempo, no una garantía RAM. La configuración de NavigationCache le permite ajustar la retención o desactivarla.

El estado retenido permanece sujeto a la actualización y autorización de los datos. Las acciones del servidor, router.refresh() y los cambios de identidad observados invalidan las ramas inactivas. La navegación hacia adelante y hacia atrás solicita un nuevo vuelo antes de revelar un destino retenido. Después de la autenticación personalizada, la aplicación debe activar la actualización adecuada. Una recarga completa del documento no conserva los borradores que se guardan únicamente en la memoria.

Enviar cambios de vuelo con un respaldo de respuesta completa

Las navegaciones de la aplicación pueden negociar la transmisión de vuelo diferencial. Cuando el navegador tiene una base reutilizable, PRNext envía las diferencias necesarias para reconstruir la nueva respuesta exacta. Las bases retenidas están limitadas y vinculadas tanto al contexto de implementación como de autenticación.

Una base faltante, caducada o incompatible produce una respuesta de vuelo completa. Un delta no válido permite un reintento sin un delta para ese GET de navegación. Las acciones no se repiten. El objetivo es evitar bytes repetidos cuando el contenido admite la reutilización sin que la navegación dependa de un acierto en la caché.

Las zonas de amortiguamiento y las bases retenidas tienen límites explícitos. El manejo de HTML y secuencias también evita copias binarias agregadas innecesarias. Una respuesta del servidor todavía incluye representación React, código de aplicación y acceso a datos; El transporte diferencial no promete la misma mejora en cada página.

Habilite el compilador React e inspeccione sus decisiones reales

La opción reactCompiler habilita el compilador oficial React incluido. Está deshabilitado de forma predeterminada. La transformación se dirige a los componentes del navegador de aplicaciones y al gráfico de representación del servidor aislado de los componentes del cliente de la aplicación, en desarrollo y producción. Los componentes del servidor, los módulos de acción del servidor, las dependencias npm y el gráfico del servidor de páginas permanecen fuera de esta transformación.

Puede adoptar el compilador gradualmente con la anotación compilaciónMode: y la directiva use memo. La directiva use no memo excluye una función individual. El próximo informe del compilador identifica las funciones observadas, las decisiones de optimización o omisión y los motivos del compilador. También distingue la reutilización de transformaciones en caché. Estas son decisiones de compilación, no mediciones de la velocidad de la interfaz.

Los gráficos JavaScript elegibles se almacenan como metadatos binarios y blobs dirigidos a contenido. Se verifican las sumas de verificación; Las entradas faltantes, corruptas o desalojadas simultáneamente se convierten en errores de caché comunes y se reconstruyen. Las compilaciones de producción pueden acortar los nombres de animaciones y módulos CSS locales, compactar las exportaciones internas y reutilizar fragmentos compartidos mientras se preservan las interfaces públicas.

Utilice el TypeScript instalado en su aplicación

PRNext admite TypeScript 7 a través de su ejecutable nativo oficial cuando se instala en la aplicación con sus dependencias de plataforma. Las comprobaciones de producción, la verificación de tipo prnext y los diagnósticos de desarrollo utilizan ese compilador. PRNext no descarga un compilador durante una compilación. TypeScript 5 y 6 conservan la integración del compilador API.

Las comprobaciones no emiten la aplicación JavaScript y mantienen el estado del compilador incremental en un directorio temporal de su propiedad. Los nuevos archivos fuente y los cambios de configuración reinician la generación de vigilancia correspondiente. La generación de rutas escritas también admite TypeScript nativo y conserva los comentarios JSONC al actualizar la configuración. Cada proyecto aún debe tener en cuenta el idioma y los cambios de configuración propios de TypeScript 7.

Comparta entradas de caché elegibles entre procesos

Una caché local no es suficiente cuando una aplicación se ejecuta en varios trabajadores o instancias. PRNext agrega adaptadores Redis opcionales para resultados compartidos elegibles. El controlador de componentes de caché admite el uso de resultados de caché. El adaptador createRedisIncrementalCache independiente cubre HTML nativo y ISR, fetch y unstable_cache.

Estas funciones de almacenamiento son explícitas: habilitar un adaptador no reemplaza automáticamente cada caché. Redis sigue siendo una dependencia de aplicación opcional. Un proyecto normal y un proyecto creado con el nuevo comando no lo requieren.

La regeneración compartida utiliza arrendamientos para coordinar el trabajo y evitar que un productor anterior publique después de su invalidación o vencimiento. El modelo conserva etiquetas y valores binarios. El propósito es una coordinación consistente entre los procesos y al mismo tiempo se conservan las reglas de aislamiento y elegibilidad de los datos de la aplicación.

Mantenga las pestañas abiertas coherentes en todas las implementaciones

Cada artefacto de producción tiene una identidad de implementación. PRNext puede retener activos inmutables de generaciones anteriores dentro de los límites de edad, número de generaciones y tamaño. Una pestaña ya abierta puede terminar de cargar recursos pertenecientes a su código en lugar de recibir reemplazos arbitrarios en la siguiente implementación.

La retención se aplica a los activos elegibles. No justifica ofrecer una respuesta personalizada anterior o repetir una acción. Los servidores proxy y cachés delante de PRNext deben conservar los encabezados y las variaciones requeridas por el protocolo de implementación.

La opción htmlOnly también selecciona páginas de aplicaciones totalmente estáticas y no interactivas. Su HTML de producción conserva estilos, fuentes y metadatos sin scripts de arranque ni carga útil de Flight. Los componentes del cliente, las acciones del servidor, los enlaces interactivos y las funciones de representación incompatibles se rechazan para las rutas seleccionadas. Al ingresar a una de estas páginas se realiza una navegación normal por el documento. Este es un modo explícito y no elimina JavaScript de otras páginas.

Obligado trabajo admitido y dejar que las solicitudes terminen

El tiempo de ejecución fortalece la admisión de solicitudes, las colas de espera y los presupuestos de respuesta para que la carga no pueda crear trabajo ilimitado. La programación tiene en cuenta las rutas y deja espacio para solicitudes fuera del flujo más ocupado. Los perfiles de tiempo de ejecución tienen en cuenta mejor CPU y los límites de memoria visibles en el entorno.

Los trabajadores pueden detenerse o ser reemplazados sin tratar el final de una secuencia HTTP como el final de todo el trabajo asociado. Los finalizadores de caché y las tareas posteriores a la respuesta con seguimiento se incluyen en el drenaje. Los procesos bloqueados mantienen un límite de apagado y la recuperación del trabajador no reproduce una solicitud que ya haya cambiado los datos.

Jubilar a los trabajadores inactivos puede reducir los recursos retenidos entre períodos de actividad, con un costo de activación en la siguiente solicitud. El proceso nativo y otros servicios permanecen presentes. Este mecanismo de tiempo de ejecución es independiente de una aplicación completa que duerme en un proveedor de alojamiento. Los beneficios dependen del tráfico y del comportamiento de las aplicaciones; Esta versión no promete una reducción general de RAM.

Inspeccionar el código realmente ejecutado y cargado

Los enlaces de instrumentación admiten el registro y los informes de errores de solicitud en los entornos Node, RSC y Edge compatibles. La exportación opcional de OTLP HTTP JSON correlaciona las etapas nativas HTTP, Node, RSC y de recuperación con el contexto OpenTelemetry de la aplicación. Las colas de exportación están limitadas y el error de telemetría no cambia la respuesta de la aplicación.

El análisis inicial de JavaScript incluye importaciones esperadas durante la hidratación y fragmentos dinámicos realmente utilizados por la renderización del servidor. Los informes distinguen rutas de muestreo, tamaños específicos de compresión y cobertura incompleta. Los estilos están asociados más estrechamente con las rutas relevantes. Esto le permite inspeccionar lo que carga una página en particular sin tratar la suma de todos los activos del proyecto como su carga útil inicial.

El registro de cambios 0.1.18

La navegación combina la retención de ramas de aplicaciones limitadas, la recuperación de GET después de una pérdida de conexión, la captación previa de la interacción y el transporte de vuelo diferencial. Las etapas de navegación y captación previa siguen siendo opcionales: navegación(), captación previa() y asegurarStatic definen fases elegibles con componentes de caché sin que otro usuario pueda reutilizar el contenido privado.

La compilación agrega el compilador React y su informe de decisión, TypeScript 7 nativo y almacenamiento binario para gráficos elegibles. Las compilaciones acortan los identificadores CSS locales y reutilizan fragmentos compartidos. La compilación bajo demanda puede materializar destinos después del middleware y las reescrituras, retener las ramas paralelas requeridas y dejar inactivas las rutas no relacionadas.

La producción agrega adaptadores Redis, identidad de implementación, retención de activos limitada y rutas htmlOnly. La renderización previa y los finalizadores paralelos se coordinan con más cuidado. La admisión, las colas, los buffers de respuesta y el ciclo de vida de los trabajadores obtienen controles más estrictos. El procesador web sigue siendo el predeterminado; la ruta de nodo opcional admite comparaciones en la misma aplicación.

Las correcciones de confiabilidad incluyen el descubrimiento de subdirectorios de origen después de notificaciones del sistema de archivos fusionado, la resolución de ayudas de metadatos y la actualización de diagnósticos nativos TypeScript. Las pruebas de navegación esperan una página interactiva, mientras que las pruebas de trabajo distinguen un inicio válido más lento de exceder los límites de apagado. El nuevo generador prepara scripts y archivos para una aplicación App Router mínima.

Validación y adopción en su aplicación

Este artículo documenta la fuente confirmada 05a9ccd. La validación completa pasa en Linux, macOS y Windows, y cubre el tiempo de ejecución de Rust, pruebas unitarias, tipos, integraciones y navegadores. Los archivos para las seis plataformas se crean a partir de esa misma confirmación. Doce instalaciones aisladas verifican ambos diseños de dependencia y dieciocho escenarios de ciclo de vida cubren Node.js 22, 24 y 26.

La compatibilidad con Next.js sigue siendo parcial y esta versión sigue siendo alfa. Verifique sus rutas, acceso a datos, formularios y acciones del servidor, luego cree y ejecute la aplicación de producción. Adopte el compilador React, Redis, la navegación por etapas y htmlOnly por separado para que pueda observar sus efectos en su proyecto.

Después de actualizar el paquete, reconstruya y reinicie la aplicación. Utilice las guías incluidas con la versión instalada para encontrar sus opciones reales. Los resultados de rendimiento vinculados a otra instantánea de origen no son un nuevo punto de referencia de esta confirmación. Mida CPU, RAM y el tiempo de despertarse en su aplicación antes de generalizar una ganancia.

Fuentes y lecturas adicionales

volver al blog