25 jun. 2026
SwiftUI lleva años empujándonos hacia una idea muy concreta: la interfaz debe ser una consecuencia directa del estado. Si hay datos, se muestra una vista. Si esos datos desaparecen, la vista también desaparece. Es una idea sencilla que cuando se aplica bien elimina mucha lógica accidental y hace que la navegación de la aplicación sea predecible.
Hasta ahora, esa filosofía estaba muy clara en APIs como sheet(item:), popover(item:) o navigationDestination(item:). En todas ellas, la presentación depende de un valor opcional. Cuando el valor pasa a ser distinto de nil, SwiftUI presenta el contenido. Cuando la presentación se cierra, el valor vuelve a nil.
Leer articulo24 jun. 2026
Con las novedades presentadas por Apple en la WWDC de 2026 en torno a la Inteligencia Artificial y el Machine Learning, ha habido bastante lío en la comunidad, tanto entre desarrolladores como entre usuarios civiles. Entre el naming —que si Foundation Models, que si SiriAI— y la Unión Europea complicando las cosas en cuanto a la disponibilidad por territorio, el panorama no ha sido precisamente sencillo.
El producto final: SiriAI
La pobre Siri no ha ganado para disgustos en los últimos años. El salto a los asistentes potenciados por LLMs, capaces de entender lo que les pedimos más allá de simplemente detectar comandos e interpretarlos, la pilló a contrapié. El problema se agravó cuando Apple prometió mejoras y un cambio de arquitectura que terminó siendo fallido. Resultó que el pecado original de los LLMs, las alucinaciones, no permitió lanzar el producto con un porcentaje de fallo suficientemente bajo para los estándares de la marca.
Leer articulo23 jun. 2026
SwiftUI suele actualizar una vista cuando cambia alguno de los datos de los que depende. Cambia un @State, se modifica un @Observable, llega un nuevo valor a través de un Binding, y el cuerpo (variable calculada body) de la vista se vuelve a reevaluar. Ese modelo encaja muy bien con la mayoría de interfaces, pero no siempre basta.
Hay vistas cuyo contenido cambia aunque el estado de la aplicación no haya cambiado realmente. Un reloj, una cuenta atrás, un indicador que representa el progreso de un proceso temporal, una animación paso a paso o una visualización que depende del instante actual no necesitan necesariamente almacenar un nuevo valor cada segundo. Lo que necesitan es que SwiftUI vuelva a evaluar la vista siguiendo una línea de tiempo.
Leer articulo22 jun. 2026
SwiftUI ha simplificado enormemente la creación de interfaces con animaciones. Lo que en UIKit requería bloques de animación, cálculos de estado intermedio y coordinación 100% manual, ahora puede conseguirse con apenas unas líneas de código.
De todos modos, a medida que una aplicación crece, surge una duda habitual: ¿debería utilizar .animation(_:value:) o withAnimation(_:_:)?
Aunque ambas opciones producen resultados visualmente similares, su funcionamiento y sus casos de uso son distintos. Comprender estas diferencias ayuda a construir interfaces más predecibles, fáciles de mantener y con menos efectos secundarios inesperados.
Leer articulo21 jun. 2026
Hasta ahora, si queríamos permitir que los usuarios reorganizasen elementos en una interfaz SwiftUI, la solución más habitual era recurrir a List y su modificador onMove. El problema era que muchas interfaces modernas ya no utilizan las listas tradicionales: dashboards, cuadrículas, paneles personalizables, carruseles horizontales o layouts completamente personalizados quedaban fuera de esta experiencia.
Con iOS 27, SwiftUI introduce una nueva API que generaliza este comportamiento mediante los modificadores reorderable() y reorderContainer(...), permitiendo implementar una reordenación nativa en prácticamente cualquier contenedor de vistas. Esta novedad supone un cambio conceptual importante: la reordenación deja de ser una característica exclusiva de List para convertirse en una capacidad que cualquier contenedor puede adoptar.
Leer articulo