Novedades de SwiftUI en iOS 26
Lo nuevo de 2026: toolbars con prioridad y overflow, contenedores reordenables con una línea, la API de documentos y el caché automático de AsyncImage.
SwiftUI evoluciona cada año, y iOS 26 trae mejoras que resuelven fricciones reales: barras de herramientas que se adaptan al espacio, listas reordenables sin código de arrastre, y AsyncImage que por fin cachea. Conocerlas te mantiene al día.
- Toolbars adaptativas: prioridad, overflow y pinneado.
- Contenedores reordenables con una línea.
- La API de documentos (Writable/ReadableDocument).
- Caché automático de AsyncImage.
Toolbars que se adaptan
Antes, cuando la pantalla se estrechaba, los botones de la toolbar se apretujaban o desaparecían sin control. iOS 26 da control fino:
.toolbar {
ToolbarItemGroup {
Button("Compartir", systemImage: "square.and.arrow.up") { }
.toolbarOverflowMenu() // va al menú "…" si no cabe
}
}
.toolbar {
Button("Guardar", systemImage: "checkmark") { }
.visibilityPriority(.high) // se mantiene visible más tiempo
}
visibilityPriority
Decide qué botones sobreviven cuando falta espacio. Los importantes, prioridad alta.
toolbarOverflowMenu
Manda los botones de baja prioridad a un menú de overflow en lugar de ocultarlos.
topBarPinnedTrailing
Fija una acción crítica (como compartir) al borde, siempre visible.
Contenedores reordenables
Una de las mejores novedades: reordenar arrastrando ya no es exclusivo de List ni requiere código especial. La misma API funciona en List, LazyVGrid y más:
@State private var items = ["Uno", "Dos", "Tres"]
List {
ForEach(items, id: \.self) { Text($0) }
.onMove { origen, destino in
items.move(fromOffsets: origen, toOffset: destino)
}
}
Y ahora la reordenación llega incluso a contenedores como grids con el mismo código — antes impensable sin implementarlo a mano.
La API de documentos
Para apps basadas en documentos (editores, notas), la nueva API da control directo sobre cómo se leen y escriben en disco, de forma asíncrona e incremental con reporte de progreso:
struct MiDoc: WritableDocument, ReadableDocument {
var texto: String
// lectura/escritura asíncrona con Subprogress para mostrar progreso
}
Conforma a WritableDocument y ReadableDocument y obtienes operaciones de disco no bloqueantes, ideales para archivos grandes.
AsyncImage con caché
AsyncImage carga imágenes de una URL, pero hasta ahora las recargaba al hacer scroll. En iOS 26 cachea automáticamente vía HTTP:
AsyncImage(url: URL(string: "https://ejemplo.com/foto.jpg")) { imagen in
imagen.resizable().scaledToFill()
} placeholder: {
ProgressView()
}
Ahora, al desplazar una lista de imágenes arriba y abajo, no se vuelven a descargar: el caché HTTP las conserva. Menos datos, scroll más fluido, sin librerías externas.
Cada versión de iOS trae APIs nuevas, y es tentador reescribir todo para usarlas. La postura sensata: conoce lo nuevo (para no reinventar lo que ya resuelve el sistema) pero adopta según tu público. Si soportas iOS 25, no puedes usar aún lo de iOS 26 sin un fallback. Las novedades de esta lección son sólidas y las usarás en proyectos nuevos; en apps con base de usuarios amplia, comprueba siempre tu versión mínima antes. Saber qué existe es la mitad del trabajo; saber cuándo usarlo es la otra mitad.
- Añade una toolbar con un botón de prioridad alta y otro que vaya al overflow.
- Haz una
Listreordenable con.onMove. - Carga una imagen remota con
AsyncImagey unplaceholderdeProgressView. - Repasa las notas de “What’s new in SwiftUI” de la WWDC del año para ver qué más hay.