Adiós a createResource: la asincronía ahora es nativa
Solid 2.0, ahora en versión Release Candidate, reelabora fundamentalmente las operaciones asíncronas, integrándolas como ciudadanos de primera clase dentro del grafo reactivo. Esto elimina la necesidad del primitivo createResource de Solid 1, permitiendo que cálculos como createMemo devuelvan promesas directamente. El framework ahora comprende y gestiona valores asíncronos de forma nativa, simplificando cómo fetchUser o fuentes de datos similares se integran en los flujos reactivos.
Eliminar createResource simplifica la lógica de obtención de datos y limpia el código de los componentes. En Solid 1, los desarrolladores gestionaban las salidas de createResource, lo que requería comprobaciones dispersas de null o undefined al acceder a los valores de los recursos. El retorno directo de promesas en Solid 2 significa que el grafo reactivo gestiona la disponibilidad de los datos, eliminando estas comprobaciones y permitiendo que los componentes trabajen solo con valores definidos y directos.
Los primitivos de límite (boundary) también han sido rediseñados para alinearse con el nuevo modelo asíncrono, mejorando la experiencia tanto para el desarrollador como para el usuario. Suspense es reemplazado por el límite Loading, que renderiza fallbacks específicamente para la ausencia inicial de datos. ErrorBoundary se convierte en Errored, principalmente un cambio de nombre con mejoras subyacentes, y SuspenseList ahora es Reveal.
Este enfoque refinado de los límites mejora significativamente la experiencia del usuario. A diferencia de otros frameworks que bloquean la interfaz al consumir promesas, en Solid 2, el framework consume las promesas al crearlas en su grafo y solo bloquea donde se lee el valor. Esto permite que la interfaz se actualice inmediatamente a medida que cada dato está listo, en lugar de esperar a que todas las solicitudes finalicen. isPending rastrea las posteriores solicitudes de datos sin desmontar la interfaz.
Una experiencia de desarrollo radicalmente más limpia
Solid 2.0 refina significativamente la experiencia de desarrollo para mutaciones de datos y efectos. Un nuevo flujo de mutación introduce el primitivo action, que define un ciclo de vida claro para las actualizaciones. Junto con createOptimistic y createOptimisticStore, este sistema permite el rollback automático de la interfaz: los cambios optimistas locales son transitorios, desapareciendo si una llamada a la API falla y revirtiendo la interfaz al estado autoritativo del servidor.
La gestión de Store se simplifica ya que la mutación directa se convierte en el comportamiento predeterminado. Este cambio elimina la necesidad de la función produce y marca como obsoleta a createMutable, permitiendo a los desarrolladores modificar los borradores de store directamente. El asistente storePath sigue estando disponible para casos de uso heredados específicos.
createEffect recibe una refactorización importante, dividiéndose en dos funciones distintas. La primera, una fase de 'cálculo' rastreada, define las dependencias. La segunda, una fase de 'aplicación' no rastreada, ejecuta el efecto secundario, recibiendo el valor calculado. Este cambio arquitectónico elimina el asistente on y permite establecer la opción defer directamente en el efecto.
La limpieza de efectos también evoluciona. La función apply ahora devuelve directamente su lógica de limpieza, optimizando la gestión de recursos. onMount ha sido reemplazado por onSettled, que se dispara solo después de que todas las operaciones asíncronas dentro de su alcance se hayan resuelto, devolviendo de manera similar su función de limpieza. El primitivo createComputed se elimina, ya que su funcionalidad ahora está cubierta por createMemo o el nuevo efecto dividido.
La gran simplificación de JSX
Solid 2.0 simplifica significativamente la sintaxis JSX, reduciendo los modismos específicos del framework. La propiedad classList ha sido eliminada por completo; la propiedad class ahora acepta directamente cadenas, objetos o arrays. Esto permite un estilo condicional más intuitivo y dinámico sin requerir concatenación manual de cadenas o manipulación de arrays.
El manejo de atributos también se alinea más con el HTML nativo. Los prefijos attr: y bool:, utilizados anteriormente para el enlace explícito de atributos y propiedades booleanas, ya no son necesarios. Este cambio estandariza la declaración de atributos, eliminando una capa de sintaxis específica de Solid para atributos HTML comunes.
Los espacios de nombres para el manejo de eventos, como on: y onCapture:, han sido eliminados. Los eventos ahora se gestionan utilizando propiedades estándar en camelCase como onClick o onInput, reflejando los patrones convencionales de desarrollo web. La directiva use: también ha sido reemplazada por ref callbacks apilables, proporcionando un método más flexible y componible para comportamientos de elementos personalizados y hooks de ciclo de vida.
El renderizado de listas ha sido simplificado. El componente dedicado Index ya no está disponible, y su funcionalidad de lista no indexada se ha integrado en <For keyed={false}>. Además, se ha introducido un nuevo componente Repeat para optimizar el renderizado basado en conteo, proporcionando una forma declarativa de renderizar un bloque de JSX un número específico de veces. Obtenga más información sobre estos y otros cambios en la publicación del blog Solid 2.0 RC: The Big <Reveal> - SolidJS.
¿Te está gustando? Recibe uno así en tu bandeja cada mañana.
un correo al día · date de baja en dos clics · sin rastreadores de terceros
El compilador que acabó con el Meta-Framework
Solid 2 incorpora un nuevo compilador basado en Rust, construido sobre el proyecto de alto rendimiento Oxc. Esta cadena de herramientas rediseñada eleva significativamente el rendimiento de compilación del framework. Los benchmarks internos indican velocidades de compilación que van desde 20x hasta más de 350x más rápidas que el compilador anterior basado en JavaScript de Solid 1, lo que se traduce directamente en ciclos de desarrollo más rápidos y compilaciones de proyectos más eficientes.
El plugin actualizado de Vite introduce un potente 'modo de inicio' (start mode), que ofrece a los desarrolladores una compilación completa de la aplicación lista para usar. Este modo admite tanto el renderizado solo en el cliente como capacidades completas de Server-Side Rendering (SSR). Integra características principales como las funciones de servidor directamente en las herramientas del framework, eliminando la necesidad de paquetes separados y simplificando la configuración del proyecto para varios objetivos de despliegue.
Esta herramienta integrada y potente hace que el meta-framework SolidStart sea redundante. Las convenciones establecidas de SolidStart, incluidas sus funciones de servidor y su capa de servicio, han sido absorbidas directamente en el núcleo de Solid o en su plugin de compilador. Este movimiento estratégico consolida el ecosistema de desarrollo, integrando los patrones arquitectónicos probados y las capacidades full-stack de SolidStart directamente dentro del framework principal, simplificando la experiencia general del desarrollador.
Preguntas frecuentes
¿Cuál es el mayor cambio en Solid 2.0?
La innovación principal es hacer que las operaciones asíncronas sean una característica de primer nivel del grafo reactivo. Esto permite que los cálculos devuelvan promesas directamente, eliminando la necesidad de primitivas especiales como createResource.
¿Se va a descontinuar SolidStart?
Sí, SolidStart se retira como un meta-framework separado. Sus características clave, como el renderizado del lado del servidor y las funciones de servidor, se han integrado directamente en el plugin de Vite del núcleo de Solid 2.0 a través de un nuevo 'modo de inicio'.
¿Cómo maneja Solid 2 la obtención de datos sin createResource?
Los cálculos como createMemo ahora pueden devolver promesas directamente. El sistema reactivo entiende y maneja automáticamente el estado asíncrono, simplificando la lógica de obtención de datos y el código de los componentes.
¿Es Solid 2 más rápido de compilar?
Sí, significativamente. Solid 2 introduce una nueva cadena de herramientas de compilación escrita en Rust, que según los benchmarks es más de 20 veces más rápida, con algunas pruebas que muestran una mejora de velocidad de hasta 355x.
¿Qué reemplaza a Suspense en Solid 2?
El límite Suspense ha sido reemplazado por Loading. Loading renderiza un fallback solo para la obtención inicial de datos, mientras que las obtenciones posteriores pueden ser rastreadas con isPending sin desmontar la interfaz de usuario existente.

